{"_id":"@flowfuse/flowfuse","_rev":"2882-8dc8790ba18b7c722b409bc2fc734f74","name":"@flowfuse/flowfuse","dist-tags":{"latest":"3.1.0","nightly":"3.1.1-4c68fca-202610022019.0"},"versions":{"1.14.1":{"name":"@flowfuse/flowfuse","version":"1.14.1","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.14.1","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8ce982cb01e59c8910dfb332e5af6c2c9271aae6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.14.1.tgz","fileCount":293,"integrity":"sha512-dvX9f0NS14BFdzE+IIgL0dnTiudH1rVUQ52TXjnh/YTKnyTzEZ60rsmBt/M4o/Y5lL60XUqxvNIU55BtCjNVOQ==","signatures":[{"sig":"MEQCIBPxNMIlUTw+doksLC+59V88OiWVJQi9MCISpp82OqhmAiBhvD7OSOUYFIUdNpHleEIaNaz0N1hb7gLjdTJyNERprw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14313870},"engines":{"node":">=16.x"},"gitHead":"b38e13477e9b9c8d9805e2c52e5466e02857976b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.3.4","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.2","@sentry/vue":"^7.72.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^8.0.3","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^1.14.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^0.34.4","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.2.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.1","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.17.0","@vitejs/plugin-vue":"^4.3.4","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.14","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^0.34.4","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.14.1_1702995627346_0.7517484342736118","host":"s3://npm-registry-packages"}},"1.14.2-2ec1846-202312211045.0":{"name":"@flowfuse/flowfuse","version":"1.14.2-2ec1846-202312211045.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.14.2-2ec1846-202312211045.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"be8c0e80913449b0453be849ec9807594844754f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.14.2-2ec1846-202312211045.0.tgz","fileCount":308,"integrity":"sha512-lCFp4nLUzrKgPSJVqPollVkyt3g93kO3LQiSE70ukKV0L+lBssqVBLb1p2BXK9+1HyRVOv4mlRNS+YfRTHN/0w==","signatures":[{"sig":"MEYCIQCQnWKlkSNLddkREdfqWtSdXlXkpYBKxiZAPRdCa/Ms0QIhAIFrjpoDVvs2ShMnyXPtxlr5MIU2/bdAzfC+PamUa0q/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6168788},"engines":{"node":">=16.x"},"gitHead":"2ec184600c64de6e6a35d0b1f18905b5a4ef1b17","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.3.4","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.2","@sentry/vue":"^7.72.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^8.0.3","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^0.34.4","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.2.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.1","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.17.0","@vitejs/plugin-vue":"^4.3.4","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.14","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^0.34.4","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.14.2-2ec1846-202312211045.0_1703155615940_0.7047933275290033","host":"s3://npm-registry-packages"}},"1.14.2-2ec1846-202312211049.0":{"name":"@flowfuse/flowfuse","version":"1.14.2-2ec1846-202312211049.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.14.2-2ec1846-202312211049.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"65f38d5b60f452513a2f132df807617d49aa798b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.14.2-2ec1846-202312211049.0.tgz","fileCount":308,"integrity":"sha512-7Lh1Xpt/ct8LcUUDjlG0ODa4nQQRiPw0m1FwX805MwRDpII+qlGh0VnLNaHXO6WF9IM3QKmxNL3qHHji5nksXQ==","signatures":[{"sig":"MEUCIGE41czH8kY/P9zdA6DM6e0o145KcGH45tyhERgphsi9AiEAtJbisXADh/+rbw4mYW7vgPSGWMZefpoTrq8rXYxJwYo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6168788},"engines":{"node":">=16.x"},"gitHead":"2ec184600c64de6e6a35d0b1f18905b5a4ef1b17","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.3.4","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.2","@sentry/vue":"^7.72.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^8.0.3","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^0.34.4","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.2.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.1","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.17.0","@vitejs/plugin-vue":"^4.3.4","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.14","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^0.34.4","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.14.2-2ec1846-202312211049.0_1703155863151_0.16252384328511904","host":"s3://npm-registry-packages"}},"1.14.2-07b3bf5-202312211104.0":{"name":"@flowfuse/flowfuse","version":"1.14.2-07b3bf5-202312211104.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.14.2-07b3bf5-202312211104.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"02a0cad47d79d08218c2f05b96b958ad54b330dc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.14.2-07b3bf5-202312211104.0.tgz","fileCount":308,"integrity":"sha512-byES7/MXRe3rE8K+Jh8hxWr6vDX1OTgh45HJDH7At4zuZed+wsIy6pIkHXbBFNgNkAWLFmXUqDwTn2NzpQflCg==","signatures":[{"sig":"MEUCIBBDIteGFT5uGh6G8KWHuCi4oOgH41yzea7CMAQcKEFdAiEA297FkzLEpMV2Xw2biKHhjblDDYQTp7M6B2XfNkILm7k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6169752},"engines":{"node":">=16.x"},"gitHead":"07b3bf5d7bebc207ebcf7e3f5eb9e82055d4ffb2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.3.4","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.2","@sentry/vue":"^7.72.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^8.0.3","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^0.34.4","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.2.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.1","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.17.0","@vitejs/plugin-vue":"^4.3.4","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.14","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^0.34.4","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.14.2-07b3bf5-202312211104.0_1703156729938_0.6437250570750459","host":"s3://npm-registry-packages"}},"1.14.2-07b3bf5-202312211111.0":{"name":"@flowfuse/flowfuse","version":"1.14.2-07b3bf5-202312211111.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.14.2-07b3bf5-202312211111.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3b5a7c9a3c6a83b805d11f44663699588db1dad1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.14.2-07b3bf5-202312211111.0.tgz","fileCount":308,"integrity":"sha512-K3AH3bDaB8v3bpF3Za8h/SuqR/JCpinbirV0WY7LUCur4oQbJ/nnuBDvPw93R7hOro6OisAAfbO8mwIvWC3UWg==","signatures":[{"sig":"MEUCIQDmSP0sPphXvWjqGJ8TT6DY0J1pmlkoptfZEXFrdXLZHAIgcFVD9PctMuunNPTmjQg+qWVQjXRgcMwKaJGxXt0pX/4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6169752},"engines":{"node":">=16.x"},"gitHead":"07b3bf5d7bebc207ebcf7e3f5eb9e82055d4ffb2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.3.4","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.2","@sentry/vue":"^7.72.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^8.0.3","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^0.34.4","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.2.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.1","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.17.0","@vitejs/plugin-vue":"^4.3.4","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.14","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^0.34.4","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.14.2-07b3bf5-202312211111.0_1703157150026_0.16945910758953708","host":"s3://npm-registry-packages"}},"1.14.2-07b3bf5-202312211331.0":{"name":"@flowfuse/flowfuse","version":"1.14.2-07b3bf5-202312211331.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.14.2-07b3bf5-202312211331.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"76d96108861f4320df39631d915b939b87a2f46f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.14.2-07b3bf5-202312211331.0.tgz","fileCount":308,"integrity":"sha512-8k9z4m7MLsmB0DDRD+DEMy1rDAYLfGHkqlTrl4aTH2OBjLhfD2LfDi19pbnEgFvyfyJ4a8rczx+O9rnEgNBVKw==","signatures":[{"sig":"MEQCICSL9/9M56DvX3Nn0lkKodb5fSydMiqZi1hs62Hqwo8UAiBmhnIQfsnqV9eYQcdoY99NXdE8+0gqNlVsyn3IBusy/A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6169752},"engines":{"node":">=16.x"},"gitHead":"07b3bf5d7bebc207ebcf7e3f5eb9e82055d4ffb2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.3.4","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.2","@sentry/vue":"^7.72.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^8.0.3","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^0.34.4","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.2.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.1","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.17.0","@vitejs/plugin-vue":"^4.3.4","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.14","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^0.34.4","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.14.2-07b3bf5-202312211331.0_1703165539973_0.1683086790817212","host":"s3://npm-registry-packages"}},"1.14.2-07b3bf5-202312211333.0":{"name":"@flowfuse/flowfuse","version":"1.14.2-07b3bf5-202312211333.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.14.2-07b3bf5-202312211333.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"33aa4547019d1c85ca83c9ce130bd9bef46ea93b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.14.2-07b3bf5-202312211333.0.tgz","fileCount":308,"integrity":"sha512-ciVvjafOLf6amWw/a76ta9vB9PX83r7+J2Bym9QEG7UolB4v7tYpPeEwh9udq69SiEqmWbQllUnXuGB2c8XPHg==","signatures":[{"sig":"MEUCIQCh9oPcPA4bW3RXU5sYYXw/Vc6yqzVfOW84Z9nGkqWMeQIgOCeoqeWWxOVFQDn0Y32Is88JVAi3PzcuC2y+z5msoIo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6169752},"engines":{"node":">=16.x"},"gitHead":"07b3bf5d7bebc207ebcf7e3f5eb9e82055d4ffb2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.3.4","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.2","@sentry/vue":"^7.72.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^8.0.3","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^0.34.4","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.2.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.1","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.17.0","@vitejs/plugin-vue":"^4.3.4","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.14","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^0.34.4","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.14.2-07b3bf5-202312211333.0_1703165698037_0.11934073064198891","host":"s3://npm-registry-packages"}},"1.15.0":{"name":"@flowfuse/flowfuse","version":"1.15.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"beda9ff0753819214b12f48469fe64a90ff8cf7d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.0.tgz","fileCount":308,"integrity":"sha512-wWtY0Nh+7YU2Y346Lex7ux/wtOQDnmR80p44puqHu059SYtgQsvdCnBzo4kzGN+KThn5yJ92VUNBrB/tHBnXhg==","signatures":[{"sig":"MEUCIQCU0X5g/WK0B0z1EY3ixSdt+TnAzAhPaQApt3dTMPH7GQIgNLql9EnqpvS4csLC3RJZ+AfMyX7gEeKRU95JaUqmOkw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6171048},"engines":{"node":">=16.x"},"gitHead":"9fa974fb5f4f3072a124b3203699b8f70034618d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.3.4","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.2","@sentry/vue":"^7.72.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^8.0.3","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^1.15.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^0.34.4","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.2.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.1","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.17.0","@vitejs/plugin-vue":"^4.3.4","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.14","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^0.34.4","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.0_1703166002965_0.2038679378786139","host":"s3://npm-registry-packages"}},"1.15.1-9fa974f-202312211349.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-9fa974f-202312211349.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-9fa974f-202312211349.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e93abe62fcedb8d311241f02c22a24d8b1a669b4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-9fa974f-202312211349.0.tgz","fileCount":308,"integrity":"sha512-ppxpxX3b4Q00Mu2DSHawCxEcM74m0tiGywPI2LN3dR6MM+q7EAl+3VTowHg7luMktl2LiRKCT+RcHDColURABw==","signatures":[{"sig":"MEUCIQDqNCBdkN32XtPxTiGVs6I1sa53XVV4Uj7kcrj9tULKrgIgJGIWhH9qcsefk78BNAguldvdLJrMWMHoDH49tBLccII=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6173044},"engines":{"node":">=16.x"},"gitHead":"9fa974fb5f4f3072a124b3203699b8f70034618d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.3.4","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.2","@sentry/vue":"^7.72.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^8.0.3","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^0.34.4","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.2.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.1","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.17.0","@vitejs/plugin-vue":"^4.3.4","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.14","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^0.34.4","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-9fa974f-202312211349.0_1703166605699_0.5526685204173889","host":"s3://npm-registry-packages"}},"1.15.1-0335c90-202312221307.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-0335c90-202312221307.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-0335c90-202312221307.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"42fc2d3e85e56aec19c19805429bde8281fca87f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-0335c90-202312221307.0.tgz","fileCount":308,"integrity":"sha512-+nbkumIEqcbyqLQIhMHXpyFoC+53VNmFB2g0OK29komqKWwu9Ilr0jh4TDXmJinOivOQs1ZbjEJ5FXDUZ1VeCw==","signatures":[{"sig":"MEYCIQDCB+WBNfFUPjTg2dCnzeV7DGkhsG/rxK3YgWCXvV4jDwIhAKYT817bV/BCf+8o58yPddr7pIsr2ObbjlIkI58sMwT3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6173166},"engines":{"node":">=16.x"},"gitHead":"0335c9056019ff9987d97f3ad3f18675de1c2422","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.3.4","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.2","@sentry/vue":"^7.72.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^8.0.3","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^0.34.4","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.2.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.1","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.17.0","@vitejs/plugin-vue":"^4.3.4","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.14","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^0.34.4","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-0335c90-202312221307.0_1703250488075_0.6072041775888914","host":"s3://npm-registry-packages"}},"1.15.1-14fbc5f-202312221529.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-14fbc5f-202312221529.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-14fbc5f-202312221529.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e387a619b8a78c6f7a6f179171a491fb46094e07","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-14fbc5f-202312221529.0.tgz","fileCount":308,"integrity":"sha512-NWWOqzMzxhjhrtiEZUvOgkAmeVz58vD/kT6oUrLY8KPdbaRLhwRYPy6j8z4xcp+xqrzZABrt++vCesVzG2/cSA==","signatures":[{"sig":"MEQCIDXZg9gVwMY0qic5KCTtZJpMUIUqioWftD6VsrnjVwKOAiAnJH5i/9RROyBXeSsTFw9PWBAOskF+g+DIaZvOgOO3gQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6173114},"engines":{"node":">=16.x"},"gitHead":"14fbc5fefc09ca2e79bea241ae1bc02ac0b5f168","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.3.4","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.2","@sentry/vue":"^7.72.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^8.0.3","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^0.34.4","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.2.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.1","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.17.0","@vitejs/plugin-vue":"^4.3.4","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.14","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^0.34.4","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-14fbc5f-202312221529.0_1703259032692_0.9078393932836291","host":"s3://npm-registry-packages"}},"1.15.1-5100509-202312221623.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-5100509-202312221623.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-5100509-202312221623.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"57591c4919e2262fcab734f595730937b81c0df3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-5100509-202312221623.0.tgz","fileCount":308,"integrity":"sha512-2ibpda9EVzCtLpkwmRxTVSdSdHfZcgC1FV3w9HEmus0/yjM0gCS6qqIP5boy/CIMUfqbsfGSORXT04PX2azusA==","signatures":[{"sig":"MEQCIF0lzh5LYIUPzPbqL3yUdGEBWJW+PSN0pzY/CmVr6ccoAiBDj63pg97bJXGFQFy3mknzsN67lQ6bCYhAyTKk9UwjLg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6173114},"engines":{"node":">=16.x"},"gitHead":"51005093410dcb00b347817c75117bee30b31373","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.3.4","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.2","@sentry/vue":"^7.72.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^8.0.3","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^0.34.4","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.2.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.1","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.17.0","@vitejs/plugin-vue":"^4.3.4","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.14","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^0.34.4","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-5100509-202312221623.0_1703262257793_0.9089964691581687","host":"s3://npm-registry-packages"}},"1.15.1-0301fdf-202401021043.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-0301fdf-202401021043.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-0301fdf-202401021043.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"67ad18f9a44d2d9d31ba6a31af9094104b7d1821","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-0301fdf-202401021043.0.tgz","fileCount":308,"integrity":"sha512-5QUnEKbpHV6g0Ew+S1qZOGlcFjFEM/YV1rLUIlMySKI+XQTf7J5nWTtKTSLPIgM4hw3sVq/uEKdUBTXYtdOdOw==","signatures":[{"sig":"MEYCIQC7Ji6eUOeIFS7+sOG4wNuZQ5AsVfuPM7F8Bk37zzPdvgIhANdQaPkU5GOKuluVq9KkKU/KFmMo3BTVkEqOEGpBnNSO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6173116},"engines":{"node":">=16.x"},"gitHead":"0301fdf4923f97f542644a571deb63e5b0b95a8b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.3.4","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.2","@sentry/vue":"^7.72.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^8.0.3","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^0.34.4","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.2.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.1","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.17.0","@vitejs/plugin-vue":"^4.3.4","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.14","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^0.34.4","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-0301fdf-202401021043.0_1704192260042_0.771480092402981","host":"s3://npm-registry-packages"}},"1.15.1-f38acb8-202401021533.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-f38acb8-202401021533.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-f38acb8-202401021533.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"685336c600155879afc546a0968ba3a616a7ff98","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-f38acb8-202401021533.0.tgz","fileCount":308,"integrity":"sha512-2w2pY2DYLpES8yuln+ANnRlZvwqIiV0/HzVQ/fIlyfWvaF/QwImTfD8Q8KHfhMnTJIlUk3KwzUR+D5f6fx2nXA==","signatures":[{"sig":"MEYCIQCBdIUUV5Vxc/Ge2yK7dRcw0mpvjEwuQ5agd1oZb9M47wIhAJ+ErySi4VM2i7KnqlxR720Irmj3QvCO8EO0e7RcH0GY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6173116},"engines":{"node":">=16.x"},"gitHead":"f38acb8bdbd754c2dcb0176840e652ee018626b2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.3.4","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.2","@sentry/vue":"^7.72.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^8.0.3","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^0.34.4","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.2.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.1","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.17.0","@vitejs/plugin-vue":"^4.3.4","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.14","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^0.34.4","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-f38acb8-202401021533.0_1704209663073_0.7363267039584884","host":"s3://npm-registry-packages"}},"1.15.1-1688ce1-202401021545.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-1688ce1-202401021545.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-1688ce1-202401021545.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8a2874bffb4c23542f4426a4a7a9ca3e461eacce","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-1688ce1-202401021545.0.tgz","fileCount":308,"integrity":"sha512-kEdJuDFuRGavJoPkEp5drWXNqPfFTiQ6L3OgdzZE1Yp/QooEysUoG+TLqSFSMH7chZN24JTtHEsLISJ3HZo78A==","signatures":[{"sig":"MEUCIQDdWWLNxgDd25vVSESQT1PV7nKkw6RuNDWgFdwLdX8x7wIgHU5X/kFgOXHONVYl8H12V4jaAL/QyQdu9Dm0p5PSqTg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6173106},"engines":{"node":">=16.x"},"gitHead":"1688ce111a003170494c8c1390167173851301ac","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.3.4","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.2","@sentry/vue":"^7.72.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^0.34.4","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.2.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.1","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.17.0","@vitejs/plugin-vue":"^4.3.4","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.14","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^0.34.4","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-1688ce1-202401021545.0_1704210414596_0.46072396842067254","host":"s3://npm-registry-packages"}},"1.15.1-248b4f4-202401021553.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-248b4f4-202401021553.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-248b4f4-202401021553.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c1fad803e178a8dc49fbf3e3ec55ebba273274c3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-248b4f4-202401021553.0.tgz","fileCount":308,"integrity":"sha512-TkG0wJBLsyMW4VtRmDudslFlUWMxFgb5IBfAhNtYY06Gy/YrwkIzE1mNHSIVfOsK8be690LnBSUel4fOkGIKiw==","signatures":[{"sig":"MEUCIQDPVv8JZW76MZugzL19VfouQXVimU8je50J6RrwL7lLkQIgaMVBEiv9OpQkquVnOudOKAXT9Bl9gtCLzsjShd7Xryc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6173104},"engines":{"node":">=16.x"},"gitHead":"248b4f481787450ff5b56e436f4479a770093116","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.3.4","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.2","@sentry/vue":"^7.72.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.2.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.1","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.17.0","@vitejs/plugin-vue":"^4.3.4","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.14","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-248b4f4-202401021553.0_1704210876862_0.5150390546574433","host":"s3://npm-registry-packages"}},"1.15.1-248b4f4-202401021559.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-248b4f4-202401021559.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-248b4f4-202401021559.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1bc9b055df20c7a7a2e02a23dc7c9becf28537b9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-248b4f4-202401021559.0.tgz","fileCount":308,"integrity":"sha512-mRpCMO7ygLcK1sucdq7FPFzxDNBQmT1Xq9iqGNk6WKB/WFn9mH8G0VqZ+/B0n7pOVppsAU59UCvwHA/C5BucYw==","signatures":[{"sig":"MEQCIETB3LqmJzWeW34rzmkIC9qFbgIOq8LeLij0JUlRI11RAiBUvHPgd7FmQEDdkwqyzwtaK0Sj0FE0vBwo3tV4T03rpg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6173104},"engines":{"node":">=16.x"},"gitHead":"248b4f481787450ff5b56e436f4479a770093116","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.3.4","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.2","@sentry/vue":"^7.72.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.2.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.1","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.17.0","@vitejs/plugin-vue":"^4.3.4","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.14","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-248b4f4-202401021559.0_1704211240340_0.0035196437385305313","host":"s3://npm-registry-packages"}},"1.15.1-248b4f4-202401021602.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-248b4f4-202401021602.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-248b4f4-202401021602.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2b4c5513704bb223891970a6378a10c1577fd9b9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-248b4f4-202401021602.0.tgz","fileCount":308,"integrity":"sha512-CwIKwzzItBuj/hOGSx6VjsqWjS+LZYu1xiFC5xiW9r7dxiE2r9G2WraBZLt42ZIhnfD3rR0cxT1VHdSImvatvw==","signatures":[{"sig":"MEQCIH9m+oc5dfX0TFKZglYvO4Z8lc1Qlbs2UCNubgEzRerUAiBXl90nX1BhaP5iPohKsNatv/6ClCBPawEuT2oQdgrnZA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6173104},"engines":{"node":">=16.x"},"gitHead":"248b4f481787450ff5b56e436f4479a770093116","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.3.4","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.2","@sentry/vue":"^7.72.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.2.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.1","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.17.0","@vitejs/plugin-vue":"^4.3.4","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.14","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-248b4f4-202401021602.0_1704211437339_0.4295861188595904","host":"s3://npm-registry-packages"}},"1.15.1-eb4473f-202401021701.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-eb4473f-202401021701.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-eb4473f-202401021701.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c4354fce905e83149bd69b24b18c979ae51c07e9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-eb4473f-202401021701.0.tgz","fileCount":308,"integrity":"sha512-vmNFLkW8f7K07JgNA4qqDj5/Alpli0bPfiGCUor8h+3dIZ6kT2o5G18banbbCLNUvZOcfjhgs1RVqa7U/xvCsg==","signatures":[{"sig":"MEQCIF5TIeh098qP0tAICm1IVZMNaB78rxRGaEBQa3QI++OMAiB39MI5WX+Zj3f6qJtlzpqDHBc/VBNzhgKObRytukLf6g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6173104},"engines":{"node":">=16.x"},"gitHead":"eb4473ff883c1421baba1cf949c7fb111b389c66","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.3.4","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.2","@sentry/vue":"^7.72.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.2.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.1","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.17.0","@vitejs/plugin-vue":"^4.3.4","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.14","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-eb4473f-202401021701.0_1704214936315_0.04379378795084765","host":"s3://npm-registry-packages"}},"1.15.1-a295288-202401040927.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-a295288-202401040927.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-a295288-202401040927.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1f2735a167abb7b008a0ab80e080856ed09d0e58","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-a295288-202401040927.0.tgz","fileCount":308,"integrity":"sha512-Ql56Qc/FY68rewlDyShFmHoKaeHE2k6rMSzIHgX8cYhJOP2pto1gFnyI9yn5/wPKxRLin6SEhTujPVuEhr2QEw==","signatures":[{"sig":"MEYCIQDCuS64BHCPhr0NMvSBoO7KUPlELGn09HumwWWiLgjmewIhAMyXwl76Kl3DlL7TGN+sAP+OOmHqZgQRRnhEnOUjLQmG","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6173140},"engines":{"node":">=16.x"},"gitHead":"a2952882ac7a525cf374daea4b7503c10d2d2d44","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.3.4","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.2","@sentry/vue":"^7.72.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.2.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.1","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.17.0","@vitejs/plugin-vue":"^4.3.4","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.14","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-a295288-202401040927.0_1704360526227_0.2736665475261326","host":"s3://npm-registry-packages"}},"1.15.1-600a0f4-202401041245.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-600a0f4-202401041245.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-600a0f4-202401041245.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"42a4253428a6951442900a2e06bdcc52ec3a0a3c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-600a0f4-202401041245.0.tgz","fileCount":308,"integrity":"sha512-sTC4AJk9/9Em4ZIsybypUTTAOdP2t35fTssnD8C/Y6NoF6NGFJJJlY2v0gi/pPfLUc95+IbjAzSw73NRjWM5pw==","signatures":[{"sig":"MEUCIFwPLi3QsLY/6q2TTpQOT+8qvOMx+4sUTokJ6DypKCIuAiEA6paaGBdjckg2ldznqBgT2gk87bzlDY1twpshPp3ylbQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6374119},"engines":{"node":">=16.x"},"gitHead":"600a0f45c0754516e9b945bb809cbc91a3e5eb32","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.2","@sentry/vue":"^7.72.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.1","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.17.0","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.14","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-600a0f4-202401041245.0_1704372382337_0.14838155660483987","host":"s3://npm-registry-packages"}},"1.15.1-1f7e349-202401041318.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-1f7e349-202401041318.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-1f7e349-202401041318.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5a7673897f9258f8d6227f9b8d3f8750ec315cae","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-1f7e349-202401041318.0.tgz","fileCount":308,"integrity":"sha512-vqFEshqirlSLJDg8IINhmsfUjreR+VLsgLmkd4Rw7054uAsW+48BFI0JndJoGcE4u7mFgPzoxvMzEGPGq8xOBw==","signatures":[{"sig":"MEQCHwuk220e5+dEEiIU7y4O2Pj+nhDLkXPN3TpDA4l7bOQCIQCG1eOqROl/WjzBIm9+twmrKSQgY6knsmtF4M4go0AiRg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6319881},"engines":{"node":">=16.x"},"gitHead":"1f7e3493b855c2567eb13184b014000af9e4ae5a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-1f7e349-202401041318.0_1704374365386_0.08785579438441027","host":"s3://npm-registry-packages"}},"1.15.1-fe5b4bb-202401041825.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-fe5b4bb-202401041825.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-fe5b4bb-202401041825.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a1ed51e8f5d92bfbcc067c2d63a23f4f90667226","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-fe5b4bb-202401041825.0.tgz","fileCount":308,"integrity":"sha512-S9nebJ/N5lLdHNY4Sc/kTf+e59FN9F8J0Kfu6jBj6tcR8tO3BHGnsxQzxC+CfXVoBPkrYVt6fmPg1zyJNSnb6w==","signatures":[{"sig":"MEUCIQCZqR7IOkEEU0MIPizu0XFFZ90mEcUL2xMe21ZZecsODAIgOEKo2hp9rI5tqxwWsQJtl6ziwQEUVNc0hbtK8BOjERw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6319881},"engines":{"node":">=16.x"},"gitHead":"fe5b4bb1081eb14f1ea4b0a87eb0f1a1e177b09d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-fe5b4bb-202401041825.0_1704392770486_0.4529671301111844","host":"s3://npm-registry-packages"}},"1.15.1-0e4a2d3-202401051651.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-0e4a2d3-202401051651.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-0e4a2d3-202401051651.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"965bc48aacf4b422bb16eef37fa0d36f628811d4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-0e4a2d3-202401051651.0.tgz","fileCount":309,"integrity":"sha512-D4QtM7TuWnY93SFjbcMGdVsarcOvqCzlpCCAxn3XAP32BGc9PWltD6uabQOVxx80DS6rD2QfH1eKWajAmqNsZA==","signatures":[{"sig":"MEYCIQCjszrE81BqIaisRpmTnWHlh74zmh98QFe3DFwSeMtHXQIhAMMbTTzwb1S4MU7F1ujh/SvVFgeeuerwPSztMsO1Euj0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6330237},"engines":{"node":">=16.x"},"gitHead":"0e4a2d37af58489fcfc31da13ec7b67906a3bf5b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-0e4a2d3-202401051651.0_1704473567724_0.18634801016469926","host":"s3://npm-registry-packages"}},"1.15.1-e7274a3-202401071853.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-e7274a3-202401071853.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-e7274a3-202401071853.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b02bd34032b24894c3b4770eca87cba876e6bd80","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-e7274a3-202401071853.0.tgz","fileCount":309,"integrity":"sha512-+kvjuTWVE3YNCWimttraCzivRP4HY6BjAdXHGBnB5+T9n06j6c/zEjoB//jxn3ZlPuMNLhNbr7lxwyUbZ8VeQg==","signatures":[{"sig":"MEYCIQDQDGQwx1uBjxYHGBk+cQafaPYEhWc+cai8PHn472rfgAIhAM56jTmp5f+Z8MgA54lTVJrYtHQ7wInoX3uh+sBcrqYf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6332312},"engines":{"node":">=16.x"},"gitHead":"e7274a374c8f04756fd639e5479c7523cc5e5d96","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-e7274a3-202401071853.0_1704653665432_0.015233540307126647","host":"s3://npm-registry-packages"}},"1.15.1-c8a5404-202401091401.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-c8a5404-202401091401.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-c8a5404-202401091401.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"689ec4f7a95c9ec84096f06200ba1dcae6b75d6b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-c8a5404-202401091401.0.tgz","fileCount":309,"integrity":"sha512-pjgjJeF6PrAcDIRh/K9icIipYHbOBdM35LZ9iZF6f+5BEh4+hph7XG5doCmImHkFsJzVKAc2g2ME+MgONUJvrA==","signatures":[{"sig":"MEYCIQCJDfUtNyDZhm3Uv5fYizz/QtldwybC8kI8T7CmucaaMAIhALrr/r8ecjXqrosXb7N1iKaE64LLmlNhoUjBkx6E80K5","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6334883},"engines":{"node":">=16.x"},"gitHead":"c8a54047c2750728bb83e0bad8125424cd3fdfad","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-c8a5404-202401091401.0_1704808946143_0.933614974758326","host":"s3://npm-registry-packages"}},"1.15.1-793ef24-202401091436.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-793ef24-202401091436.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-793ef24-202401091436.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"782863e192e732c799a3078ec8ba99a8c5b6a61a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-793ef24-202401091436.0.tgz","fileCount":309,"integrity":"sha512-niYBbFELmXywphph0lycwoLzkWTJh0uXrqf5Pak7peRUpr/WISpo9rPJvAJmhA9zPFxe1F4Fwo2ewId6GfO+6Q==","signatures":[{"sig":"MEQCIGRPXb3dWvni/G7HGLPOX0tPsXFCx6w/B7a5V6WmmeZ1AiBGNv/mBlJT1PfLcLrPxO8znFH4m8E5z7yRp42ZKduCfQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6335076},"engines":{"node":">=16.x"},"gitHead":"793ef2436555a0127fff0b8713a3a605da1c9a25","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-793ef24-202401091436.0_1704811077329_0.7374877536469655","host":"s3://npm-registry-packages"}},"1.15.1-c64aa28-202401091513.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-c64aa28-202401091513.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-c64aa28-202401091513.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"78676b60a30e33c88720d7d55dbc02f0a6183ae5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-c64aa28-202401091513.0.tgz","fileCount":309,"integrity":"sha512-C9s+J3euQvrJvdGaupptLEJgDny1GrCBrIcD8J6/hkC7kMcNMrASvLUt6tWpU4GaFg+3pomsso/SPklUP4qu0g==","signatures":[{"sig":"MEUCICXLI6oNHegy/dG/eZpct6tvKW7H4V7zlmJK1TokKkCUAiEA2LhIiDqmVYz5HdxEwRNZjB93RTLriLBBfLAIJgBXUkk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6335906},"engines":{"node":">=16.x"},"gitHead":"c64aa2807ec852d006190baa9bcf536f1783d5e7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^7.1.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"c8":"^8.0.1","ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-c64aa28-202401091513.0_1704813281212_0.6957109026944293","host":"s3://npm-registry-packages"}},"1.15.1-cc8404f-202401101520.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-cc8404f-202401101520.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-cc8404f-202401101520.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"13a7616f171e0075b02aebe0a6d06237254c463c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-cc8404f-202401101520.0.tgz","fileCount":309,"integrity":"sha512-5mQtEc5rRcMD4X0rNpUfTxfFYIoodvm0pil4ygt1aj8AFsLZyNU6U25OXvOHyN97Og1dk4AnJBNhQoY2+xiKSw==","signatures":[{"sig":"MEQCICRhkrpBJ1IRlf2mw9JhMEsTMig4b+SEwcNKxCpzNtyjAiB4tC/WfXbVVm3y6L8pV/o9OtZcH1tZyWbIgX9DBKoqlw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6335942},"engines":{"node":">=16.x"},"gitHead":"cc8404f0f69946a44010db493510d3e02abcb85e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-cc8404f-202401101520.0_1704900078986_0.09921694034696049","host":"s3://npm-registry-packages"}},"1.15.1-cc8404f-202401101527.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-cc8404f-202401101527.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-cc8404f-202401101527.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f01f043624307cbc16aaac8acf7b28bbb4673fe6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-cc8404f-202401101527.0.tgz","fileCount":309,"integrity":"sha512-kuPoYnxUb9MhfK5wrVeRLd/PMXHJ3T+hj7qKKueyS0tFdHpZFQzdK5g9bW6B569PedW0h6QnMhcKvcFRRV41Cw==","signatures":[{"sig":"MEUCIQC5xvKJOrEjcgT0X0pFs1DEFavpzRss/Q07uNzwIXuA3wIgYDxOZZ0pvUdaLPUsj990JoK4r+iNLLEP1xOaqr/bdmU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6335942},"engines":{"node":">=16.x"},"gitHead":"cc8404f0f69946a44010db493510d3e02abcb85e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-cc8404f-202401101527.0_1704900500983_0.8847418753534864","host":"s3://npm-registry-packages"}},"1.15.1-cc8404f-202401101717.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-cc8404f-202401101717.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-cc8404f-202401101717.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ff36a4554ba97ce7d70fffc32a57fc069eb79dcb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-cc8404f-202401101717.0.tgz","fileCount":309,"integrity":"sha512-F6iNIegN6lApHX6z1ucmnF/P+W7ioVwyuEU2ECeokv/f3lBiD6Bnt84ET7z9rCayqaui22sNRS6Ua6lVjArIjg==","signatures":[{"sig":"MEYCIQD16EVTU+C3Khy3X2JvHdGxvtZdYWbgYNY7/ea7JjUN/QIhAIXXq/VDdrPmsPxbh5Z3av6DN/CCmfcDu6SwZonloqkJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6335942},"engines":{"node":">=16.x"},"gitHead":"cc8404f0f69946a44010db493510d3e02abcb85e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-cc8404f-202401101717.0_1704907138464_0.9885528306856552","host":"s3://npm-registry-packages"}},"1.15.1-d5d4ed6-202401110931.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-d5d4ed6-202401110931.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-d5d4ed6-202401110931.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6fd5aa400b6ad4930b98569946c6d3c980d33ce1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-d5d4ed6-202401110931.0.tgz","fileCount":309,"integrity":"sha512-J5PgIAYxj+AuBuutK20KJPlo09wOGy7A4JexBMqK/Y8grEkpkAj4/+oPKKBaLq/U8yCv8avEEBpxwmnouWf5Qw==","signatures":[{"sig":"MEQCIBMroqi3X8mouJ+ePvKcGnKvwNW+Xp6bl1pQkbrOKKKFAiAkb6pMONJyYOkEn+AD612UVxSmLW+kaRp0+g22w9QZsw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6352600},"engines":{"node":">=16.x"},"gitHead":"d5d4ed6548cedccf851995d4c50c4a745114a900","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-d5d4ed6-202401110931.0_1704965533181_0.26728723949318867","host":"s3://npm-registry-packages"}},"1.15.1-463a348-202401111205.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-463a348-202401111205.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-463a348-202401111205.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9c28bded3b1a4bad50e98066067b1c957c2b9251","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-463a348-202401111205.0.tgz","fileCount":309,"integrity":"sha512-MES9aSI5/Ea9MRlYiHYqXr22c9gqgk5UjOjQiIS63CNi2lB/y8reKTatQphvnc1CaW++8tTXYJZIdXh3Ux4K2A==","signatures":[{"sig":"MEQCIDpcSyqxdiAVLN24iSwC1a0mCDTVAz94qAxa3aL6NQMvAiAwlB3mbRLYtTVFL9Z6Aa2fwLp6ei2IyQi7SsEMc5/tNw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6352700},"engines":{"node":">=16.x"},"gitHead":"463a34880bf1e137cb9ec4b93b422dde75146d8d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-463a348-202401111205.0_1704974769003_0.44089396684794924","host":"s3://npm-registry-packages"}},"1.15.1-ba9f167-202401111724.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-ba9f167-202401111724.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-ba9f167-202401111724.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3fc58c1c988a190681d45b41c405af3bbba1ac1f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-ba9f167-202401111724.0.tgz","fileCount":309,"integrity":"sha512-VKWz2sw5Rk0H22HZQYRB1Dq4l9nCNC4D2zl37/WNjBWNUSSZFtEMlj8UJDkzd9yA+7ytZgFvuNReji904fxEqg==","signatures":[{"sig":"MEYCIQCLFckbpqynuNkMu6LcB5DGLc7EGdLoVN3kCNiAsxpVBAIhAKSgjaeObrVRj0jmuEbMugGeuVeNZ0rX/Ybi2LuWT8f2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6353201},"engines":{"node":">=16.x"},"gitHead":"ba9f167640caafa2a49824ba4771a121c30255a2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-ba9f167-202401111724.0_1704993928917_0.1545273689571991","host":"s3://npm-registry-packages"}},"1.15.1-2750159-202401111734.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-2750159-202401111734.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-2750159-202401111734.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"53efd2f8b6ca1a45e623618e8657011fad73e6d7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-2750159-202401111734.0.tgz","fileCount":309,"integrity":"sha512-JHJFcot4sFlxhTNb8j2xB9u40mYa3eITF7BLprayf6pqwe1daFbHrf0dIQgWyZWqWy2VRlNZbYpoNh3rDgiwMA==","signatures":[{"sig":"MEQCIFu7cKaDoDMkfMSynetkVUQOildCefC8M+leRkbKqtdPAiBe4uc2H0d5Iqbg1hbKZ/qKNslUun+1ybNMlpAbk+T9YQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6353201},"engines":{"node":">=16.x"},"gitHead":"2750159d8f9abca24663c5f8cedb830b3d682f1c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-2750159-202401111734.0_1704994549380_0.39413341574935035","host":"s3://npm-registry-packages"}},"1.15.1-c9f9f8a-202401120935.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-c9f9f8a-202401120935.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-c9f9f8a-202401120935.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"71b810e16065ac05147aac62ed41f7d42b6d002e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-c9f9f8a-202401120935.0.tgz","fileCount":309,"integrity":"sha512-fXW6QROtFf+X6QR+lWJwuI6pMWHgtqQKLf4JR8/GNd9DJi2W2UBZJMU/WbJnV1qTpd604E6wvkgp1xNRvCuVBA==","signatures":[{"sig":"MEQCIEoPp8uAA90VRiuOLE84r+LNv0UchDWjTBYitSeKFD/RAiBAYqDOPAxQT37T5qloMUNRsAiBrCOKk7zWsQra5hV1kw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6353205},"engines":{"node":">=16.x"},"gitHead":"c9f9f8a23a2cc0a1f83c02e8d4432632f90f8367","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-c9f9f8a-202401120935.0_1705052186050_0.44915861918905353","host":"s3://npm-registry-packages"}},"1.15.1-51e46dd-202401121008.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-51e46dd-202401121008.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-51e46dd-202401121008.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6a536291c0a2ca29d2ceb882553faaa1aedaab60","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-51e46dd-202401121008.0.tgz","fileCount":309,"integrity":"sha512-wl91GO0+pxuY5UwSxsit+u0gzA1sL2JlEKMYvv40S7y1ofLZrvsl22N5sHoOV5jws/S63p2O5AabuhlM63Ux0g==","signatures":[{"sig":"MEYCIQD1hvsQVwkkCUEJ3zJ/Ta50gAuPnKz/S7O0aFXxmTu5NAIhAII8YUbAuv/7LKNnqL09E6mnf/i/XN7IDiuXA30ySvHs","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6353205},"engines":{"node":">=16.x"},"gitHead":"51e46dd6332707332336c40a0998268b4bb9b551","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-51e46dd-202401121008.0_1705054189074_0.532601545116526","host":"s3://npm-registry-packages"}},"1.15.1-214fc03-202401121115.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-214fc03-202401121115.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-214fc03-202401121115.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4c81c75e3d7e8f46a26691a8b6fc2b2034c0adce","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-214fc03-202401121115.0.tgz","fileCount":309,"integrity":"sha512-wj/cDf9jnzZ/AzJKajV3uXnHGBbrU6DLb/WkzO54hO/OYlABj4f6clX8CjxVJ8gxIEXNs7lJp2CesmkHRuTXyw==","signatures":[{"sig":"MEQCIGeeeP2UKBM55p2jx+a4Qj0QgU5a1Dl67cSBgQ5B5cCsAiAkyOevt6oGxk2u3wpGUh0P+1uM6+BtIa8EOElnL+Y2rg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6353238},"engines":{"node":">=16.x"},"gitHead":"214fc03e898c6b60ba8d30523e24bdda7030b347","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.24.0","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-214fc03-202401121115.0_1705058213110_0.900719811945776","host":"s3://npm-registry-packages"}},"1.15.1-5995f8a-202401121445.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-5995f8a-202401121445.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-5995f8a-202401121445.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"149d2b4302ca67501f34f2936c4254cba2e1576b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-5995f8a-202401121445.0.tgz","fileCount":309,"integrity":"sha512-6od1STeCtBboTWKwFd9mg/h/hKURvsV6ilnbvvCsJqm6LwPnrxHPd0Iko1mji1KCmVhKvYLv0rLA9hfe58u68Q==","signatures":[{"sig":"MEYCIQC1qERCfoJW89PxSKimQK/veKgPDPDA78cQ1TiE6uqAEwIhAOEzaWL7OTB1D2mG2gVQZTU4qWrtftyWqAVkAZ0rI4lj","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6356861},"engines":{"node":">=16.x"},"gitHead":"5995f8a05a8528900399e5f6da38bcf60aa946db","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-5995f8a-202401121445.0_1705070765270_0.6165276595484115","host":"s3://npm-registry-packages"}},"1.15.1-5995f8a-202401121451.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-5995f8a-202401121451.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-5995f8a-202401121451.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"46075c771e4e82950643fe899bf6088ef0c213b4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-5995f8a-202401121451.0.tgz","fileCount":309,"integrity":"sha512-me8BxR45F/kJxZUESWFqG/qKCXkBtgn5qbQpOt5bgjJNw3qPU+WKzuc9jr9J6Bxc/ipxcOeMz5Z//paW4Apa5Q==","signatures":[{"sig":"MEUCIFh3vBfS/PksnRYHa0V35oXKjpJbR6VQE1GqGXBF9RO0AiEA4LUbttH0kKlvMiLUcKQCgU7V4Sd6UMscArbO/NPVpIU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6356861},"engines":{"node":">=16.x"},"gitHead":"5995f8a05a8528900399e5f6da38bcf60aa946db","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-5995f8a-202401121451.0_1705071174764_0.6542970297074822","host":"s3://npm-registry-packages"}},"1.15.1-16ffc90-202401151045.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-16ffc90-202401151045.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-16ffc90-202401151045.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9616b71520af2815e292b7e12db8ffc63b199caa","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-16ffc90-202401151045.0.tgz","fileCount":311,"integrity":"sha512-Zd7K2U5RZbvMA7pRtaINZdQKmWHpHNCZapE/i6Mn5bB7TzkPBVfiu2kPNyXVoL1vNqtPhk2i8rjvzAyFK+nuEQ==","signatures":[{"sig":"MEUCIQCaqDQ5N6pKBbgqKjSdY1qmJyyGjzEel458NYgMJe6/+wIgFqnCXEUGkWyNtnYdbdrR1v8NnL7Nf++mH+V30dBE7nI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6359958},"engines":{"node":">=16.x"},"gitHead":"16ffc9008975d10aa4ae27d2720ba65c4d842589","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-16ffc90-202401151045.0_1705315616632_0.9979720360447866","host":"s3://npm-registry-packages"}},"1.15.1-16ffc90-202401151054.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-16ffc90-202401151054.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-16ffc90-202401151054.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d704a5159c070389b7cf3dae9102bf56c8dbab33","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-16ffc90-202401151054.0.tgz","fileCount":311,"integrity":"sha512-lnz5QScHHpc+51lewdbxCCwCcxQBvxhQ9nkuNlbvZspv6MnGECc16hm1LX/lqpbPa8qWhboGP9e7p5eZXRLeew==","signatures":[{"sig":"MEUCIQCteYWSxevUOH3f5Th9aqSFtIgS2V3AhwIHSZwzMgz/bwIge/xjLMz1hfwVBJCoUUw0V2POLLTHrbNiPatxmDIiZVY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6359958},"engines":{"node":">=16.x"},"gitHead":"16ffc9008975d10aa4ae27d2720ba65c4d842589","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-16ffc90-202401151054.0_1705316131403_0.03797297444819536","host":"s3://npm-registry-packages"}},"1.15.1-22cf30d-202401151157.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-22cf30d-202401151157.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-22cf30d-202401151157.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ef51c13bb02a8bbbee8edccb7592cb05e4179693","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-22cf30d-202401151157.0.tgz","fileCount":311,"integrity":"sha512-k+y4a5RPQ54Fl2gOJwxUUtp9CSQVDQ9vHNtzRx9m/q6O+m3H6oKErK1ivH/tpFlFGWjI3yXBgJJrYFskEDKBkg==","signatures":[{"sig":"MEQCIFIw56kjnop75vZO5Ea6mXrd0f5I+1z3B6ad4h0zSM6QAiBJF+gDD+HlEBdoc6tZ0TIN3/X8ads+U46sqihnKWYhFQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6359958},"engines":{"node":">=16.x"},"gitHead":"22cf30d26e50908a4fb00dff5a77f2073ea3979d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-22cf30d-202401151157.0_1705319919624_0.038276647332948555","host":"s3://npm-registry-packages"}},"1.15.1-960a198-202401151202.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-960a198-202401151202.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-960a198-202401151202.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"eef2ddec86a7f86e034a2248e493368e3029dc73","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-960a198-202401151202.0.tgz","fileCount":311,"integrity":"sha512-0R7103n8FBvBzkWkcqRtO4VM3QrLeS0LD/d6jQJD2JnYsid7VXBOB5ZGlqWZKWXeaXRWsd08VNMG6TnoRJOgew==","signatures":[{"sig":"MEUCIA7TS6NguW33jZCc7azFQQCqj/ZK8Bvkci0FrGihFjNVAiEA3W4H0mEaNC0brjnMKuUuiaL089jBLuyRxuRnmpU1DkE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6359958},"engines":{"node":">=16.x"},"gitHead":"960a1987397966d041b593969865134ca21f4979","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-960a198-202401151202.0_1705320208182_0.6828347134900774","host":"s3://npm-registry-packages"}},"1.15.1-45f88f2-202401151530.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-45f88f2-202401151530.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-45f88f2-202401151530.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c2f7f4d8bfe1de306414594ba297cf631bcb5ef8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-45f88f2-202401151530.0.tgz","fileCount":310,"integrity":"sha512-67Ub+hQwmLS4QqBTYGw8xvx0A1UCFado9Kxe5hlji73ClsMyzzN2HuYZ9D1WgeP9VK6ws2uo4N7ifcah7bxLqA==","signatures":[{"sig":"MEYCIQCw144pQ2L2MoguKXW8OB3kjH2QvZzuMPbitI35Kuq9lwIhAPHFmVoEP35Ys49EYbysiWz1J5OYUHGGxoJmd36hV4/v","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6360784},"engines":{"node":">=16.x"},"gitHead":"45f88f21d3ade4573926e60be1273969d05a3a41","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-45f88f2-202401151530.0_1705332675924_0.5677981693440823","host":"s3://npm-registry-packages"}},"1.15.1-45f88f2-202401151537.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-45f88f2-202401151537.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-45f88f2-202401151537.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4a8297b79161feec38bd705be99e0864efb76536","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-45f88f2-202401151537.0.tgz","fileCount":310,"integrity":"sha512-5G+4v8d6UxJcccMNC9vK4o4Ubk8F+UN/SlF3CO7z7XSN14V2RkxZoMAg7hXGEoqRVPyKRbS2tUWwlEFU7r67iw==","signatures":[{"sig":"MEYCIQCSCERX0Qj9Qi/ICoh4QD9lTai8Xq9UV0o14kasTu8DhgIhAPqvlE3m4TFpfFctaKTF9POyv2yeAHgHMTvCK+qrkIUl","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6360784},"engines":{"node":">=16.x"},"gitHead":"45f88f21d3ade4573926e60be1273969d05a3a41","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-45f88f2-202401151537.0_1705333116368_0.06153464536066333","host":"s3://npm-registry-packages"}},"1.15.1-45f88f2-202401151617.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-45f88f2-202401151617.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-45f88f2-202401151617.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1b1ef85aa85041d6273506cb2f6ae500f1857cf0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-45f88f2-202401151617.0.tgz","fileCount":310,"integrity":"sha512-uXqD3oEgWwAhbGIECrja5jkwdOaZ+XYR48OLOJuwHLySfX2DvjgQYqOcBu1PUKQDvayKXqhJ0hQCKbbcnEoxkA==","signatures":[{"sig":"MEQCIBBH6NI+cfVNOPLv1IGCpQonDjkfNfmIibzzLDiBLh6nAiBD7VfRAsojp5qfaBCTZOdlW96uEiNtp7o5Pqq5d218qg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6360784},"engines":{"node":">=16.x"},"gitHead":"45f88f21d3ade4573926e60be1273969d05a3a41","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^1.9.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-45f88f2-202401151617.0_1705335522008_0.4593645976536773","host":"s3://npm-registry-packages"}},"1.15.1-d38ccba-202401151654.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-d38ccba-202401151654.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-d38ccba-202401151654.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dc2af84306eef116cc33c684fe68ceb0b5c0c7b0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-d38ccba-202401151654.0.tgz","fileCount":310,"integrity":"sha512-28DxAwOXeVGbOnhh8/szuWSzXo1TMbxxMA86hLwjRlsfPAiFgpVwob9ZnREVbkhw5ssWI1y8VZrKTJi4Rn2Kqw==","signatures":[{"sig":"MEYCIQD/jUFphrzCyE18yNLL5rZgvmRcn5UMWoG/M81YAw37OgIhAJIUunLVFBMu9mjbbmJCOfKPhtQNVuR4hItjn3diEqv/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6360992},"engines":{"node":">=16.x"},"gitHead":"d38ccba0259415d9b4d5ab9f369639316b667b35","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-d38ccba-202401151654.0_1705337705947_0.33203397522515843","host":"s3://npm-registry-packages"}},"1.15.1-bda021c-202401151721.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-bda021c-202401151721.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-bda021c-202401151721.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5a89a0f21b5b2219293b6e8a0ce4260614122d48","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-bda021c-202401151721.0.tgz","fileCount":310,"integrity":"sha512-XDS8HqroPTl8AM9iFesa4aFKEbO8Msq1uSZahk9gOaknuxd5FJfhYdDB4Ypoxq7oPgcAmwOaZYa/a8KVm72WKg==","signatures":[{"sig":"MEQCIHraAGic340efWZHHjJF4iJNR75dd62k5JUuIBxFR2+mAiBIkPdEooGVeqA7mtqoOBc+4vUZhLQU69BQhxfncMBbUA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6360992},"engines":{"node":">=16.x"},"gitHead":"bda021c84f6cfb87f11d5e30c6cf84b0ffbf0c7b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-bda021c-202401151721.0_1705339353632_0.6533443886230379","host":"s3://npm-registry-packages"}},"1.15.1-e1584f4-202401152226.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-e1584f4-202401152226.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-e1584f4-202401152226.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"246b6407d67799eb7decc02bbebc2766207e3466","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-e1584f4-202401152226.0.tgz","fileCount":310,"integrity":"sha512-CGS4cGvvJIeGG507G5nK3w38vyFDVs0bg73/ghzQ78ZrU9AFLXFf9Wd44v5Tf4/3b8Qwnpat/noH/MSw8LlJmg==","signatures":[{"sig":"MEUCIQDA2RkTx/QWIUC+tfUY+XArlzG2DzdjxQdJgqqFUSiiBwIgQwsMy06eWNVCqoqdPmY56sml8Yz6gl56Fe5pPP5HaJY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6361045},"engines":{"node":">=16.x"},"gitHead":"e1584f4af164530a5a2564b4ba3dc22f433f4d80","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-e1584f4-202401152226.0_1705357625829_0.5362534984500411","host":"s3://npm-registry-packages"}},"1.15.1-cea84ad-202401161048.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-cea84ad-202401161048.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-cea84ad-202401161048.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f404f9b1af65e6be6622dedb2156185a8b8e05d3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-cea84ad-202401161048.0.tgz","fileCount":311,"integrity":"sha512-CNAWhD4aAWB9nL2JGg4Q2epLnKquJUqKX9UMFePwk1RWFnBJhpVLnCeXiJ5i67ptE3YMyttMLtjbFRRU3A5MUg==","signatures":[{"sig":"MEUCIQCeOGKUjkq7YZ5mCwUcm9wfArLwCR/mz3pcXXkhPU9f7gIgAxvcmsd0c4tRwarxJPh+wlV/4FHjFkg7UyvhnTYwHGA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6361342},"engines":{"node":">=16.x"},"gitHead":"cea84ad20d245166791498f3641423986d69875f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-cea84ad-202401161048.0_1705402147022_0.010821462666368298","host":"s3://npm-registry-packages"}},"1.15.1-9579e30-202401161117.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-9579e30-202401161117.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-9579e30-202401161117.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"eb84909c344e77cc9827fb13197580044d794382","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-9579e30-202401161117.0.tgz","fileCount":311,"integrity":"sha512-55UCARqCetKu4OLbwPxso5xF1gYP/V184hfsEJBwCgJfYkOJ2YCqWv1O64Ip6DvIEYG5+LYP57lwFuQdyZkT4g==","signatures":[{"sig":"MEQCIGyst+Ggi7eMTDtzmQvuxI92eucTFk2iBAmMMMu5Yy5AAiBy045CZufh4nYKtG4qgduBfasToCz4yfTMK/GxzHV46g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6361372},"engines":{"node":">=16.x"},"gitHead":"9579e30b79169eb10bb61b6c421c07b783eb438b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-9579e30-202401161117.0_1705403929860_0.380541766921207","host":"s3://npm-registry-packages"}},"1.15.1-32d6063-202401161419.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-32d6063-202401161419.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-32d6063-202401161419.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"75deaaeeae61923431c31e51abf3b014e172fa0b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-32d6063-202401161419.0.tgz","fileCount":311,"integrity":"sha512-SsA6rtTFFtUMWJye66b1v6j/8Mcg9QKGFVnsEzV1RyA1uIn7wgUkiUMoS83mKvviL2+mr/LGyq+WquSpTQCX+Q==","signatures":[{"sig":"MEYCIQCF99dBkuuRsz+Hm3URaH9VVKwlOib4h+iju1zB7smOCgIhAMJdHYP68ehy22HoTEz7aHcihgTq8xcz6EDpFxYGSoHE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6357746},"engines":{"node":">=16.x"},"gitHead":"32d606399d092b0f49391195110c72535d51c968","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-32d6063-202401161419.0_1705414847308_0.2787239401282158","host":"s3://npm-registry-packages"}},"1.15.1-8aa9ec6-202401171000.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-8aa9ec6-202401171000.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-8aa9ec6-202401171000.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1ec307cf9d9155fc345e798221c76ff9db541745","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-8aa9ec6-202401171000.0.tgz","fileCount":312,"integrity":"sha512-1G1gw0HGZNDABUc3PON0JjRl5snOcIZVNnSMOb3Xz8eZB/76U7d4HYIrLY8bXPpIkYHnSY2iha2esshclwTIIA==","signatures":[{"sig":"MEUCIEQzrCSgoXpH3fZiwinZQOegB9lAmRLr05do6wnU6kmCAiEAqDpelUlT9BXbHwTHg50w2DdkK5MVzrwSR86/60ceCxI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6365935},"engines":{"node":">=16.x"},"gitHead":"8aa9ec61587a241c8876d12c19b0eaaeb9f7951c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-8aa9ec6-202401171000.0_1705485681960_0.9169516218934948","host":"s3://npm-registry-packages"}},"1.15.1-8aa9ec6-202401171006.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-8aa9ec6-202401171006.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-8aa9ec6-202401171006.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cd66e4785a9bd6b4a09e61081c12ae18120fb29a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-8aa9ec6-202401171006.0.tgz","fileCount":312,"integrity":"sha512-fL4xySzDH3rWK4awFvH2z+Ckkr5NHZAC27Q79Qm6/HKuO784jZZXdsy7jehoIIv99Gq7lBRUrot72o9HoHxodw==","signatures":[{"sig":"MEQCIDrem6P1EC4mF50EzgCK9j1eXugpMvqYD3GI/kZzHBDSAiBZsB2FStCDpWgo6FL3THoOmRKXMMnXVMPXypQtAH6P/g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6365935},"engines":{"node":">=16.x"},"gitHead":"8aa9ec61587a241c8876d12c19b0eaaeb9f7951c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-8aa9ec6-202401171006.0_1705486031283_0.6721817552320686","host":"s3://npm-registry-packages"}},"1.15.1-7ad420b-202401171458.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-7ad420b-202401171458.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-7ad420b-202401171458.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"875c874c5bf2e538ebb9c9f40d7a7ff9405bc9e0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-7ad420b-202401171458.0.tgz","fileCount":312,"integrity":"sha512-CkoXvVDFeIzUJUNQy5wUuGSviTZRv+s1wtCRDc5YZlVW0R9ffkv5DqCNa7CO5GOaDeD6zszbBdC1R4kN0O6mWA==","signatures":[{"sig":"MEUCIQDg48VM+m1zbVnypuHY8Wp0PfDX4/9ve6FL7sBVXUWfPQIgWcB+4ZDUozzT4D52VTZeLyTheTrMJQoKQqH5AMfUfDw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6365935},"engines":{"node":">=18.x"},"gitHead":"7ad420b9611969bc32c4484bc458864652fa825c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-7ad420b-202401171458.0_1705503550001_0.19852287134599944","host":"s3://npm-registry-packages"}},"1.15.1-d785306-202401171508.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-d785306-202401171508.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-d785306-202401171508.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"084e717ed007a2bf658a86778134c4b349b58a35","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-d785306-202401171508.0.tgz","fileCount":312,"integrity":"sha512-ZYLQCHWubQrJx5Cp0rwsooJGZMXIoWqGq7fQ3ujJKhT5NZ3jc5t5t4fprVIQxD0Rtay8dUeqIFr0p1sRBKmeDg==","signatures":[{"sig":"MEQCIG2/w82/S00imqhkmCHTaCBu16CSauh8Updq0pMNhRibAiALSthnE0f4Oi17yclA3psA/tSWaNE6Xq4PaIkkMHUOrA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6365935},"engines":{"node":">=18.x"},"gitHead":"d7853063d50d670a7b93df96e0a994e76d747fb0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-d785306-202401171508.0_1705504182458_0.7305797398179563","host":"s3://npm-registry-packages"}},"1.15.1-d785306-202401181023.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-d785306-202401181023.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-d785306-202401181023.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2774cc4be2b774c5cf8dcf78aaf1b64109b426da","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-d785306-202401181023.0.tgz","fileCount":312,"integrity":"sha512-d0hQY7ALosPidL6DQT6I8YHL0RBkJYFigLiCLhKbmN8IuQHCLdBGVpS0P+v8pBhYdxY8IUd+oBRxcj90ytOUWw==","signatures":[{"sig":"MEQCIDqz3DjXGapNgXWJHKWolUiBkXKc08+HBD1XsfvkjOwkAiAXnumvKXx/clE3lGX3TYmMXcz8W6ecnaXVNo8p2uE5KQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6365935},"engines":{"node":">=18.x"},"gitHead":"d7853063d50d670a7b93df96e0a994e76d747fb0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-d785306-202401181023.0_1705573484247_0.10616637765335346","host":"s3://npm-registry-packages"}},"1.15.1-d785306-202401181025.0":{"name":"@flowfuse/flowfuse","version":"1.15.1-d785306-202401181025.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@1.15.1-d785306-202401181025.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"55853c1a67eb66e8fd009331a52fd53240f807e1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-1.15.1-d785306-202401181025.0.tgz","fileCount":312,"integrity":"sha512-EzPJ8ccU65a2Xfau+Xxxt3XovEB6g3BW2gq19nuSmG7OB4jtj6dHMgThNBjEJK15dRMTaAfyT2X/tQnA+mKEOA==","signatures":[{"sig":"MEYCIQDNNiKu7nKMupvfWFPpY7Wg/67sR4ELFGgnldyW+oKUnAIhAJ1yr5+ydYBRPLItL9cykIFU1YKZugAJymvOkFZPLEFR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6365935},"engines":{"node":">=18.x"},"gitHead":"d7853063d50d670a7b93df96e0a994e76d747fb0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_1.15.1-d785306-202401181025.0_1705573575390_0.6661100917274716","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@flowfuse/flowfuse","version":"2.0.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a0d1f65a9fd22cc94a9524833cfd07709ecb7f90","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.0.tgz","fileCount":312,"integrity":"sha512-9gnGGOuOootkyWMJHskZrqqkqr1uIJIb7GxWB0yRk0SHbqph0aCesaB+0+4j5AIL3fuOI85APjIbNd4SaPY0bA==","signatures":[{"sig":"MEYCIQCT0zCPMsxQLBpuy9ctwc+WjgJXi/xyrGn9iG5n67omrQIhAJntW1DFQupEM7P+XuCJx3sd2AsPJwWVgySrtlnU3X0k","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6367526},"engines":{"node":">=18.x"},"gitHead":"4a760cd7ff046211fb8b7096a8f5abd3bd1b2f69","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.0.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.0_1705574304464_0.09418736711565168","host":"s3://npm-registry-packages"}},"2.0.1-4a760cd-202401181048.0":{"name":"@flowfuse/flowfuse","version":"2.0.1-4a760cd-202401181048.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.1-4a760cd-202401181048.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"86580bdacfaac6d6dad428b0d58130ae4a9e05d2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.1-4a760cd-202401181048.0.tgz","fileCount":312,"integrity":"sha512-04CQqGXLSdsw+of9F86Xf95yI2raAUBn9asuLDZajVsz4taYTwHCaEgXhpN75pV+5skkTKsszAJcoswFYhm8tw==","signatures":[{"sig":"MEUCIQCPd7LgqL5BXMLOl3WMWxKaXPTC9yNFDWprq75lwBwxbwIgG38h+8mfs2mXIOrjhxWivTSINchMRY2Zt/4WvSYC3tc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6369527},"engines":{"node":">=18.x"},"gitHead":"4a760cd7ff046211fb8b7096a8f5abd3bd1b2f69","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.1-4a760cd-202401181048.0_1705574945219_0.9812733781986889","host":"s3://npm-registry-packages"}},"2.0.1-e9d2aec-202401181500.0":{"name":"@flowfuse/flowfuse","version":"2.0.1-e9d2aec-202401181500.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.1-e9d2aec-202401181500.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c47717b3db7952818a4ef39d47271bd26bee7856","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.1-e9d2aec-202401181500.0.tgz","fileCount":312,"integrity":"sha512-28fla5mIW7UdPC/KNG+ZjyFjmKTr9P4R6kWJYUoWK8pcSZM9wOvcRCVo+TLLugXNOo07Zom3ulqf1CUBA4vDHA==","signatures":[{"sig":"MEQCIF+J3oKMj3ejqBADbkdf32zCiqp7rAJnErGpJC/uMnaCAiApgmvbgcfxMP2Jd8Qyyo/8jUymsmBKE5ksMJdS6d3dkQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6370467},"engines":{"node":">=18.x"},"gitHead":"e9d2aecb9f78f8aebdc11074c5f701cef29e5b7a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.1-e9d2aec-202401181500.0_1705590120107_0.23559078315511428","host":"s3://npm-registry-packages"}},"2.0.1-787e80a-202401191134.0":{"name":"@flowfuse/flowfuse","version":"2.0.1-787e80a-202401191134.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.1-787e80a-202401191134.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5d2adef8a8e9b773f1f4b0e63396f777be7544b6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.1-787e80a-202401191134.0.tgz","fileCount":312,"integrity":"sha512-P1fBAiuPH7R4xVhZGL3fe9BwGx9UXq2jou3sJ9LWHV1kZegIBaVKfVXHQXUWNRmEgeh6OLhJLEHbNAGJdQlpzQ==","signatures":[{"sig":"MEQCIDLICkOM0mz4GcI7s5JDi5/kQqyaZ4532ykmDmULbwSZAiBmKHoZEmJkF5YuESZK5RXGC3LR3Jts4WnPWAdCPvVSHw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6370467},"engines":{"node":">=18.x"},"gitHead":"787e80a8bb98d1af658669d34d276fbef3b3057b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.1-787e80a-202401191134.0_1705664115230_0.4834141907153988","host":"s3://npm-registry-packages"}},"2.0.1-fc3932a-202401191152.0":{"name":"@flowfuse/flowfuse","version":"2.0.1-fc3932a-202401191152.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.1-fc3932a-202401191152.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"96218d0e0a9852868035dd518e0dcf95281ce1f4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.1-fc3932a-202401191152.0.tgz","fileCount":312,"integrity":"sha512-zAHBjSbVHX7D5PM1eCJsgi7XinW+kWfETmvtvJepbvv7kEcIrxxPCSkC3+IRwP4uMz3x1Ce6G8nL+YhwRyJD5A==","signatures":[{"sig":"MEYCIQDwJf0I3n2Coc0udRR1twUzq3t2rhW49RpiMmAW2wjh2QIhALDc+ZLkOAhNS2h73VIGB5aTvyebNpcMN1dQ/wsic684","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6370467},"engines":{"node":">=18.x"},"gitHead":"fc3932a3cf3d0fc17e8b3b2c7ff859bdcaf82ac1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.1-fc3932a-202401191152.0_1705665205639_0.30080671688426164","host":"s3://npm-registry-packages"}},"2.0.1-fc3932a-202401191207.0":{"name":"@flowfuse/flowfuse","version":"2.0.1-fc3932a-202401191207.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.1-fc3932a-202401191207.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"38d48d1de233299bbaca8c1cb9853e8d1bce2973","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.1-fc3932a-202401191207.0.tgz","fileCount":312,"integrity":"sha512-L+4Lr6IaO5yaHJ7GRMfjTniHpCkOPo3nrr1DomXEOxPkvXjw3a4kj4TEHhmglKVUuCPh/CbyW1+T+8XdY9Dqbw==","signatures":[{"sig":"MEUCIQDGaO2RKQXF0dk2FmwR80fGnUKoK/GSOKAJzTFJ0pdFIgIgJ2vwBIf9FkJ+sukGCyDGRdrcv0o5wr4mOQL308Or9RA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6370467},"engines":{"node":">=18.x"},"gitHead":"fc3932a3cf3d0fc17e8b3b2c7ff859bdcaf82ac1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.1-fc3932a-202401191207.0_1705666131918_0.5314763581577657","host":"s3://npm-registry-packages"}},"2.0.1-0f6e814-202401191436.0":{"name":"@flowfuse/flowfuse","version":"2.0.1-0f6e814-202401191436.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.1-0f6e814-202401191436.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"949aae5cdcc99dd9785e17c3c272af5eeae40bd7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.1-0f6e814-202401191436.0.tgz","fileCount":312,"integrity":"sha512-aOiFchxmGf/PFX/FNYIXjcpEYjsVKJKduh2XJqn3xWA6nj+mlGmsrDcA4w7OEnNQ3Dvu5ILi0g0zRQONymMIRg==","signatures":[{"sig":"MEUCIQDw7tFn4yYmDG5t9TKToFTUP+GEwg0WbmdRrpt4vEfbxgIgHsDwswh43xKURcQTtFsa65wmMH3tiZvAM1F3XWCPl0E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6370467},"engines":{"node":">=18.x"},"gitHead":"0f6e81400738ec18dac09294f192d67ff9596044","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.1-0f6e814-202401191436.0_1705675041507_0.38350630156675036","host":"s3://npm-registry-packages"}},"2.0.1-82f4e1b-202401221140.0":{"name":"@flowfuse/flowfuse","version":"2.0.1-82f4e1b-202401221140.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.1-82f4e1b-202401221140.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a1ea93765767cef8a1cb11f0d4a9458ffc0f64ea","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.1-82f4e1b-202401221140.0.tgz","fileCount":312,"integrity":"sha512-hWctnAr7F8j/g8Ez0xYNqQVGSZ4pdrn9apD23qmKq9L4AQ/zDbiTeCWUwdUI5VS/ShxGEBCNacsmo0GC+C2Avw==","signatures":[{"sig":"MEQCIAqdQSo36gM2m2KkbG8aAouSn3969GjEBhVBFcp2aFKoAiAWJpcq+XlQ4RO1CMEjR0GpDRmIjZVLv090n5+qh9n/qw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6370467},"engines":{"node":">=18.x"},"gitHead":"82f4e1b0fa75bd5b42f75e3336c17df605496655","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.1-82f4e1b-202401221140.0_1705923689926_0.1664251180480032","host":"s3://npm-registry-packages"}},"2.0.1-850bd01-202401221552.0":{"name":"@flowfuse/flowfuse","version":"2.0.1-850bd01-202401221552.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.1-850bd01-202401221552.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"15871f27c5a0cbcf720d8ef865a69bf542ad67ad","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.1-850bd01-202401221552.0.tgz","fileCount":312,"integrity":"sha512-UhmC8eeUs6wz/TlT0l/zXetTG/a6mvJ2vH+W4Rw/uTfU3VZQu7VD2negb4pZBcqHXRP3T1A6ZDLW8AQc7GjqCA==","signatures":[{"sig":"MEYCIQC24OzDBwItS8cS0cEtYH3Mjn626UiLY3AY2HD5VnjN4gIhAJDSVDUJVJtb6QJJNGlav1sHwqCiYK/HtfcN26x/zWjf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6370467},"engines":{"node":">=18.x"},"gitHead":"850bd01f102d2b688c39f762190eee33b5dc34de","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.1-850bd01-202401221552.0_1705938835033_0.7097471632527972","host":"s3://npm-registry-packages"}},"2.0.1-4e15018-202401230930.0":{"name":"@flowfuse/flowfuse","version":"2.0.1-4e15018-202401230930.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.1-4e15018-202401230930.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4711b2fe77b8ad1423befb42b2333c2c8ab852c1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.1-4e15018-202401230930.0.tgz","fileCount":312,"integrity":"sha512-OYRgJPxSoF8VjcbTusuap7XTIBHGlKZN6TEzWWRZpwGc5cKIl/nBjjMbA3t6D3FDkUJZZaFaPW3tAXSFnyllZg==","signatures":[{"sig":"MEQCIB6j0buk21xnQaclEGDCUMR6HZAupe5tETKjlpmE47qbAiAXDOwSlj3vRIhrkZDSBcxIQF/JfdlbiazT1fOWMbozEg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6370550},"engines":{"node":">=18.x"},"gitHead":"4e15018a5b310e1c7a59bb9e188add1cacf8e915","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.1-4e15018-202401230930.0_1706002314329_0.2230269738916808","host":"s3://npm-registry-packages"}},"2.0.1-4e15018-202401230934.0":{"name":"@flowfuse/flowfuse","version":"2.0.1-4e15018-202401230934.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.1-4e15018-202401230934.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9977eba6d6a07b2a316eda690f5ecbe5228dddf4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.1-4e15018-202401230934.0.tgz","fileCount":312,"integrity":"sha512-0ZfOLOL4HjQbtW70z/62LgB557YLQU2fi5QUoTvaAKZ2mV32m+/0qKnTanZv77fNRh6aL0bAW4BqckaB9Z1Qgw==","signatures":[{"sig":"MEUCIQDEkw4/0XZ6Yj6BqPNsTDEfC7SVOPmQ8MPio9Uox88eyAIgLkYUTU1yMFBJNMYBTfOMmffVReAFBI01GylBYU+Mq88=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6370550},"engines":{"node":">=18.x"},"gitHead":"4e15018a5b310e1c7a59bb9e188add1cacf8e915","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.1-4e15018-202401230934.0_1706002539597_0.13354312139575097","host":"s3://npm-registry-packages"}},"2.0.1-4e15018-202401230936.0":{"name":"@flowfuse/flowfuse","version":"2.0.1-4e15018-202401230936.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.1-4e15018-202401230936.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7962f73cdf137d683a3d5a3dc0cb256f71d6152e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.1-4e15018-202401230936.0.tgz","fileCount":312,"integrity":"sha512-Wj6FDMC/J+ILeX/ff1UezPFeiqyZhcLQlccHp2BkoiR5DzrYtkV495/ZTdVnw364kozn8BSCC9VKcdzMejakXA==","signatures":[{"sig":"MEUCIQDLW7wnFcPVoP/RCRfD6URfreDNpwoiDO9nWGwn6yQ1QwIgdJjHEAoQJDz0gtb6JoKpNa5zPs72vO5e3Ad6oK6Xgso=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6370550},"engines":{"node":">=18.x"},"gitHead":"4e15018a5b310e1c7a59bb9e188add1cacf8e915","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.1-4e15018-202401230936.0_1706002665100_0.012046087918925696","host":"s3://npm-registry-packages"}},"2.0.1-4e15018-202401230955.0":{"name":"@flowfuse/flowfuse","version":"2.0.1-4e15018-202401230955.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.1-4e15018-202401230955.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e42b1702f51e6558d8af47c93d34213a2aba81bd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.1-4e15018-202401230955.0.tgz","fileCount":312,"integrity":"sha512-+UNUZSwQOBT4tiHM07MMpt9v9L5YIogpShLrP9l5klAyYM9fpZug8NxTbuMWU+ElqaiCc5CgqF9YRlCsFzzSwA==","signatures":[{"sig":"MEQCIFL2YV1jgfB5W2VuRe+vpmPRxEYR4t7DvkYfd8+1phOfAiAlfBjVOtgZ0NzZCQ8M0hYvsSAuX8XK0Wst3i7N4JwIGA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6370550},"engines":{"node":">=18.x"},"gitHead":"4e15018a5b310e1c7a59bb9e188add1cacf8e915","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.1-4e15018-202401230955.0_1706003798331_0.532802459174242","host":"s3://npm-registry-packages"}},"2.0.1-8e8cf85-202401231009.0":{"name":"@flowfuse/flowfuse","version":"2.0.1-8e8cf85-202401231009.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.1-8e8cf85-202401231009.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f19cb09a60f32eaff644cbe7ce4045eeb376fbb8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.1-8e8cf85-202401231009.0.tgz","fileCount":312,"integrity":"sha512-r/xskXd6/tKiMUNEFVtn0D6MVeUZ826QSX113ry6cxI0xo2VNeZGRhr+4p7aYcO5yPxG7mH1NIsVEdZVuUT2+g==","signatures":[{"sig":"MEQCIEVj1AfNyyrkha5FwKHMuPGbHOMn0TZASjSdcJVH9AEQAiAqiXLPkPJ+4paDKxosIgo4/+tntjqOHbx06CCayeIaeg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6373113},"engines":{"node":">=18.x"},"gitHead":"8e8cf850cd8f4a47238f4f66356a4dfac93a3f1c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.1-8e8cf85-202401231009.0_1706004623860_0.5150998213714133","host":"s3://npm-registry-packages"}},"2.0.1-8e8cf85-202401231012.0":{"name":"@flowfuse/flowfuse","version":"2.0.1-8e8cf85-202401231012.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.1-8e8cf85-202401231012.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"41dbe8ad72bc2042c7883b505212af60e01fc343","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.1-8e8cf85-202401231012.0.tgz","fileCount":312,"integrity":"sha512-99OoxoriT3GyJVOZbn5v+Eb2wuLYVGx6lOmsTVAeHg3r1DSde1W1DpjRxGfqOdxpPZrCVbkIaKj6++Yz+hFthg==","signatures":[{"sig":"MEUCIQC7ZrYceBGNTdj1//omYnyz62rPOIzjf2/zSmugeAv8ZgIgVWq3su8XRLsx7ti1t8TmQCaVKFQZoL84IdQVReoe2Sg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6373113},"engines":{"node":">=18.x"},"gitHead":"8e8cf850cd8f4a47238f4f66356a4dfac93a3f1c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.1-8e8cf85-202401231012.0_1706004787038_0.27223163458724087","host":"s3://npm-registry-packages"}},"2.0.1-432d9c5-202401231030.0":{"name":"@flowfuse/flowfuse","version":"2.0.1-432d9c5-202401231030.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.1-432d9c5-202401231030.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a292b72a00a1f3afeab07eca9112487d31e1e76c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.1-432d9c5-202401231030.0.tgz","fileCount":312,"integrity":"sha512-blaMovRCKuswNP/5vUZo+ct+v7XK54RdKYpWqQ6WAkOyNkQxFYBTpIN6j7KqLBMUJ/B76umLCyfeVeHr5jF/Ow==","signatures":[{"sig":"MEQCIBZQZO7YnXePOhOEcptKYFW0XKLALVRgiB+X00ymaNi6AiAvoMhK0vtVcGlmFhUwn1TWoqX4XM/XEXIGtB6bf8LqsA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6373113},"engines":{"node":">=18.x"},"gitHead":"432d9c5985401d8676bdaa3716e6fbd6f0560d3d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.1-432d9c5-202401231030.0_1706005896276_0.8291035815987937","host":"s3://npm-registry-packages"}},"2.0.1-432d9c5-202401231352.0":{"name":"@flowfuse/flowfuse","version":"2.0.1-432d9c5-202401231352.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.1-432d9c5-202401231352.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1c857bf8820c532bee4fd35a953365a20d89bb26","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.1-432d9c5-202401231352.0.tgz","fileCount":312,"integrity":"sha512-DASiZ2VLZGl921BXL0G9a8IGHVQiAWLelPZdgGfSqO7TvIcLxTqTvBLPIWWv8w6LMxZDn+ZG1Rd+nTWJR5yBCg==","signatures":[{"sig":"MEUCICp+ZhIezgv3Urjbn+TJgEhg4GcxNioyBBe2eKMEFcs7AiEA3L1fyEaD8OaCjXd6RNZ0zKJ1eGEoh6pOrXcuAg/1+lA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6373113},"engines":{"node":">=18.x"},"gitHead":"432d9c5985401d8676bdaa3716e6fbd6f0560d3d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.1-432d9c5-202401231352.0_1706018000907_0.839474687570692","host":"s3://npm-registry-packages"}},"2.0.1-432d9c5-202401231412.0":{"name":"@flowfuse/flowfuse","version":"2.0.1-432d9c5-202401231412.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.1-432d9c5-202401231412.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0b5c0080793310e8e27b795e1fddd40c58b5dbfc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.1-432d9c5-202401231412.0.tgz","fileCount":312,"integrity":"sha512-mvgIzqqKhAO+AQdXBDl7BzN+zpw53rFI6oAQdz2BiIdot66UZUC+K8BE6yWIcC/RMS6EWeBcrBWiKOKX8mZmhw==","signatures":[{"sig":"MEYCIQCaza0q8XAcdFM7Hg9DgREO5AWwdux03viWAuQ02h3OUAIhAP4VZrQOft/2fAt+xyijozBFrFxruQx5eeJpAthVOAeo","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6373113},"engines":{"node":">=18.x"},"gitHead":"432d9c5985401d8676bdaa3716e6fbd6f0560d3d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.1-432d9c5-202401231412.0_1706019229056_0.7669915658456177","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"@flowfuse/flowfuse","version":"2.0.1","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.1","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"749219dc735fa58a4412ac94e8b8a86a0331da11","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.1.tgz","fileCount":312,"integrity":"sha512-D1X7cL3cZM0rrb6MR/67Ck39hVRUNM/2MQRH8JebCGPH4uPjE3eo0YS/gnHK6Xh+iu8kOjPTwh4ZHpPtP0v21w==","signatures":[{"sig":"MEQCIDJ3Ao421WRlg+o/+KlcH5ADx+Zu8KSpjWvW2q2AoOpCAiBnj8i+IB5fLLPSes8/HRpc1+K3WvREQlhC3jtqjy1tug==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6372040},"engines":{"node":">=18.x"},"gitHead":"749fe26878a142d737039269502a0a9e14844b0b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.0.1","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.1_1706021258960_0.4355165011809572","host":"s3://npm-registry-packages"}},"2.0.2-749fe26-202401231455.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-749fe26-202401231455.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-749fe26-202401231455.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"db9560067753a38e77bf2c5409e8d8b5006cded7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-749fe26-202401231455.0.tgz","fileCount":312,"integrity":"sha512-eXGcYqV3zj3CdKmPJ3ExLWC3UlnnT7V06kXbRsFgfJhyga88ZVdtn8IhVWDVKci6vbd9RHr00LQl6isdEjOFRw==","signatures":[{"sig":"MEYCIQCdDGUmadVZ4RyQojl3XB/25tHay35RA42Ig1PJEGmmDwIhANKrCku9eiu0rU+GbzgJy6P4HBbrj7ReiyNFZi1I8Mcw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6374041},"engines":{"node":">=18.x"},"gitHead":"749fe26878a142d737039269502a0a9e14844b0b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-749fe26-202401231455.0_1706021823203_0.0002918044028255018","host":"s3://npm-registry-packages"}},"2.0.2-3850e58-202401231547.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-3850e58-202401231547.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-3850e58-202401231547.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f70d4e2ca59ec3e35f3bb9740731b6eaff0d8bdf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-3850e58-202401231547.0.tgz","fileCount":312,"integrity":"sha512-jUvVpcg3+fCet9LXVhKcmV0Hd+OZOToyMMN6+uuyNTt76T7CIzLgt/A3Y+kH+gSfi9OGtUc1CpvDZiP08hSe4A==","signatures":[{"sig":"MEUCIFB8ccWM9zWqPuJcAU5OFzyzMVmq+CLj488HGk0cw6VbAiEAgwlpt8LHAv/YKfHaF5+/jLRi+QqayeMMxNKrfUk7M7k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6374041},"engines":{"node":">=18.x"},"gitHead":"3850e58c87498bffda03522dffca6f1f74141697","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-3850e58-202401231547.0_1706024885914_0.31099830896016534","host":"s3://npm-registry-packages"}},"2.0.2-6d7d4cc-202401240931.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-6d7d4cc-202401240931.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-6d7d4cc-202401240931.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f26de6c601ef7f6f11ff900956b461f317c09d0f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-6d7d4cc-202401240931.0.tgz","fileCount":312,"integrity":"sha512-E/jnOrU1em7z7p4mzDV7KnjK7DXCFgBd2q04C4iyyr3B3WnaHamCkodpVT1HjIS01jIm7jBtpUU3iLBjiPwcDA==","signatures":[{"sig":"MEUCIEfUhYIv3GZ+FRq69IRfR6XX6E5GtrKjgOlkwKjqkfmNAiEAmb/GgZSKgl+cBSBdb7GDxnFVOsztsrIO4zw887qqqNk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6374158},"engines":{"node":">=18.x"},"gitHead":"6d7d4cc329b5bc22702c61235fed0c50ee249ed5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-6d7d4cc-202401240931.0_1706088771681_0.1978934484769017","host":"s3://npm-registry-packages"}},"2.0.2-501b361-202401241043.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-501b361-202401241043.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-501b361-202401241043.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"60b1a01d90a67b4869e383e69a1c379c272553ea","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-501b361-202401241043.0.tgz","fileCount":312,"integrity":"sha512-r3oiDW81t88GgH3PeyqrNl/uTC+uWJ+rTs8rkOxCpOdKvaPcu6mk1ps7aTpTDQwGk/1SrFeojfFC45IRIyj5oA==","signatures":[{"sig":"MEQCIDt+jKy4qF05BaQ2k3x/N/us5LzerLEV/Tl7/r/g1VgVAiAplxgTh0EVWysauEnRU3yIu8XMY1z26rbnpenNf9e+Vw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6377793},"engines":{"node":">=18.x"},"gitHead":"501b361f0acc85b16f81cc6dbf5712ad9fbf5c35","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-501b361-202401241043.0_1706093080299_0.8604665176694604","host":"s3://npm-registry-packages"}},"2.0.2-05ead6a-202401261142.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-05ead6a-202401261142.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-05ead6a-202401261142.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4e0d5ad8135273e250afd57245f181d11633d9c9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-05ead6a-202401261142.0.tgz","fileCount":312,"integrity":"sha512-sHorxMLbGqRgBggBtieLN4geTsLgnw13h5g2Ao0yeM22SyK1MlvAclx0pe/alCdYHyVfWilHIXBV4XybybGbqQ==","signatures":[{"sig":"MEYCIQDI1TLbxWzeligAG194pQiqwi/wx2b3LcGZUYz8zEc50AIhAMlPilm0Xm7YbymKBE2ufKigly9Fgno83HgeyKAfl7lb","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6377793},"engines":{"node":">=18.x"},"gitHead":"05ead6aad2d7e2426afbb9a7c511ed83d3fde482","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-05ead6a-202401261142.0_1706269394577_0.6643329741677892","host":"s3://npm-registry-packages"}},"2.0.2-16cf95b-202401261333.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-16cf95b-202401261333.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-16cf95b-202401261333.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c8df66c547b11abed1914ef7ca96f786ffdbc305","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-16cf95b-202401261333.0.tgz","fileCount":312,"integrity":"sha512-BZdIuwtaefyMc4Vob8oKmfHB4vcOQ97x8c/O7PJYBJ/0aK33of6k35VwCkLeWwnCCSlRmOkEvLBqoxiCfYkA8w==","signatures":[{"sig":"MEQCIBINX+NenAsltB25Hmy/mjh1jNAYokL6YcpHBY5gkZQkAiBCSlyVhw0NNN0rVnFDbZJn3J6Uqri2Hopz6eZhTgwTyg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6377793},"engines":{"node":">=18.x"},"gitHead":"16cf95bc4109938a529011527ce735b0f4f3da0e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-16cf95b-202401261333.0_1706276071644_0.8107567800224575","host":"s3://npm-registry-packages"}},"2.0.2-8427346-202401261649.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-8427346-202401261649.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-8427346-202401261649.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0158f0a3c75fe47aa362cb3c6099178d970055f7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-8427346-202401261649.0.tgz","fileCount":312,"integrity":"sha512-ALAFfb0zI/Fo3eMZGbFm6iprbjuz+eJgC9gV6N/0csTPAgtWmFNnXozTk+tC/38TK48Hg/2jaDHMBZu2+xrpfQ==","signatures":[{"sig":"MEUCIQD27k2LnDJk82LAfxJUSgtpyQmeJ7OCQF8gWNw8upkwHQIgOEJSIBphN2HpLI0aghQFUg/vKB0bYLXOLkcPxA/qsjw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6377845},"engines":{"node":">=18.x"},"gitHead":"84273465ee49c9c082125a5a788c75b77cf3b2a0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-8427346-202401261649.0_1706287800245_0.5985221216027301","host":"s3://npm-registry-packages"}},"2.0.2-9bc98df-202401290912.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-9bc98df-202401290912.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-9bc98df-202401290912.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"56ccab659890bb5811fb57055cfff996df66eb0a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-9bc98df-202401290912.0.tgz","fileCount":312,"integrity":"sha512-p6Scr3oq4MBaix9aofEezViaMk71zfninYS/AfEMEiAIyNnCaFtKaKiguG5K9vCzenHawvU3C5SU+bdqVNs9Vg==","signatures":[{"sig":"MEYCIQDJwSuiczfjTGjsVb5iHjurfGxuNzx5IAXdOrPtpYTbpQIhAP/+VKNBhoqoCFRIimnNtzh0cIgk0kmXQuKQ9TMAtSuK","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6377845},"engines":{"node":">=18.x"},"gitHead":"9bc98df9d9f49a3b15f43d2fac3348ccae80396c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-9bc98df-202401290912.0_1706519636071_0.9039309571940481","host":"s3://npm-registry-packages"}},"2.0.2-8e6c6b6-202401291150.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-8e6c6b6-202401291150.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-8e6c6b6-202401291150.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a65fc4d3fba7483820cf195f288de0b539f35efd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-8e6c6b6-202401291150.0.tgz","fileCount":312,"integrity":"sha512-xSEP9Zx/sGqDn1j7+T4YFrIUFjtOyurYNMoXiyqVwGrBFYcwbmILiLjrZgEC60xJmtgS37m9DMogS7x5r+JokA==","signatures":[{"sig":"MEYCIQDdSnAS5CA/h8Gx3XrC36tRzBd/0jxsHw88Dkl+OYtMGgIhALz3XB6xAuDNTZ6u7KJGJG2ox3lt/Pg0Ex5Z0m+V82LU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6377841},"engines":{"node":">=18.x"},"gitHead":"8e6c6b6104e7381be08e494373dee2dcdb1a54db","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-8e6c6b6-202401291150.0_1706529066360_0.10933804738084252","host":"s3://npm-registry-packages"}},"2.0.2-590233b-202401291306.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-590233b-202401291306.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-590233b-202401291306.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e49b3eb04d584f6685d53578d80b1351f8b1a083","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-590233b-202401291306.0.tgz","fileCount":312,"integrity":"sha512-mXFoLc8xvb98qC3iY86yTaBJA7mSQMlGGM6Lp/nLoYaJYwRKh1/840d6hBgaZT4JOWFHd1FFFTuPIzRETB/LkQ==","signatures":[{"sig":"MEUCIQDWzuHB8P4L1OaTxbwNxEcbOybitaT1ZN2DvM8uKE8CzQIgUOshsaBCV05x0KNOAR/8SGVLifB3qAzClIFXUnkqHiM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6377841},"engines":{"node":">=18.x"},"gitHead":"590233b120a57703d442ba2ab6ce1bf87aa4a645","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-590233b-202401291306.0_1706533656831_0.8093668260317206","host":"s3://npm-registry-packages"}},"2.0.2-6b0e36b-202401291455.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-6b0e36b-202401291455.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-6b0e36b-202401291455.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5fe5ef9fc7ef4be204c29ff64a8df0cb0aa0fd1f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-6b0e36b-202401291455.0.tgz","fileCount":312,"integrity":"sha512-7uJ+KCPSAnrcOpYqgrhNOutWBNx/Nr0qrVzr08p/yQJ/I0RRzmjutkhaevYAQQUP57eJU6/hIkACT/vEtbygmA==","signatures":[{"sig":"MEYCIQDKcr+5FceiiF5ZEpWVigjG0oW1P+KMRdCdzlmO2yn9GwIhAMsz6V3eJHqSeSbg/IuPkzNouyhzLFCYL0vWX4zM2wbG","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6378376},"engines":{"node":">=18.x"},"gitHead":"6b0e36b843b108b9c88e68ff9a08541f5db5f5a2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^10.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-6b0e36b-202401291455.0_1706540161558_0.2993059171752741","host":"s3://npm-registry-packages"}},"2.0.2-01db9b4-202401301128.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-01db9b4-202401301128.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-01db9b4-202401301128.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ab32281bade32c42b8105a50f023414d9f8589ff","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-01db9b4-202401301128.0.tgz","fileCount":312,"integrity":"sha512-Nngc3xo5OKtMVzy9q/4hrZyKVEWchLxprXRycxm/+q1gC0reJsfxlW7pB8aIOOnyDPVJRaGnxRPWh135j8udeg==","signatures":[{"sig":"MEUCIA0KvNgti1jcgHy+4iASw13asfiBSetB2AU8mEXFMZwuAiEAjnUJ9DPDqalib6x7oTmQUgfQuGj55AuU7oHd48nNu08=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6376583},"engines":{"node":">=18.x"},"gitHead":"01db9b4513c9a51ace6b4edcfab0726b2eb9d091","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-01db9b4-202401301128.0_1706614173176_0.22634177039834658","host":"s3://npm-registry-packages"}},"2.0.2-01db9b4-202401301131.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-01db9b4-202401301131.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-01db9b4-202401301131.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2446a008906106e3fa6b1b4b74f2925d70bc671c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-01db9b4-202401301131.0.tgz","fileCount":312,"integrity":"sha512-3FHkvQyCbfwVfdbLyrrHCXK7xVJiXy2o6yutZiKeK1Kq6OyBo6oJWGKKnxGDcCwNFzGOL9vKaIILd6Ijc2Z2vg==","signatures":[{"sig":"MEYCIQCa9E256/KB2gG3UazkbdGsjPdOwcwa6CaLhzL8pZSoZAIhAKFM5/x5yq3bFQtTx5ZOHzr0FHbVsfvzdJrBtiPf3duw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6376583},"engines":{"node":">=18.x"},"gitHead":"01db9b4513c9a51ace6b4edcfab0726b2eb9d091","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-01db9b4-202401301131.0_1706614340146_0.6442262282419067","host":"s3://npm-registry-packages"}},"2.0.2-01db9b4-202401301132.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-01db9b4-202401301132.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-01db9b4-202401301132.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"abe2d763b916cb3c58cfef18b2af62317c641c1d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-01db9b4-202401301132.0.tgz","fileCount":312,"integrity":"sha512-Nd4nzaCjEYQ3YBPug4Ls68Vy3tOgnv7Ke0XsDdkkXzCn+6UJVADyNiV4ePfRtH7WPs8s2TbBf6QX3xVmUGzj+Q==","signatures":[{"sig":"MEQCICA7812fBnefQ4eA74L5DSVUIU0T9qWAi1JNrGRlLJ/ZAiApmOhTa3CeeTt2xYPe6HyeKlK0Ay0yPvgfrlqthE5oEg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6376583},"engines":{"node":">=18.x"},"gitHead":"01db9b4513c9a51ace6b4edcfab0726b2eb9d091","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-01db9b4-202401301132.0_1706614433215_0.8451965859871526","host":"s3://npm-registry-packages"}},"2.0.2-01db9b4-202401301136.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-01db9b4-202401301136.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-01db9b4-202401301136.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d8805e640712359059ea3d61abed259790c3d8f6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-01db9b4-202401301136.0.tgz","fileCount":312,"integrity":"sha512-EFIEGMvIKlOGgfyhqDXRMqWDLx58izd3Y8ddY/RYAQ/pw+Dh8dBhRw2BwN5ARxXFKbwpcP9CpNwZwxZw+I1DVA==","signatures":[{"sig":"MEUCIARCtw6rYIyiPH/8Me5M6LZkLrpKNWXFXO4b03X0c7ExAiEA+O7Wg5S3WpxzZUrJ91kecqnWcbnjKpn9gshiy3GeFMg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6376583},"engines":{"node":">=18.x"},"gitHead":"01db9b4513c9a51ace6b4edcfab0726b2eb9d091","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-01db9b4-202401301136.0_1706614659772_0.4509876866854432","host":"s3://npm-registry-packages"}},"2.0.2-610c998-202401301331.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-610c998-202401301331.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-610c998-202401301331.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c2c44e2a5ed7625816331a805c3473c2868f0fa6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-610c998-202401301331.0.tgz","fileCount":312,"integrity":"sha512-PJH++cKOvtJ7tSg5t7emePR8DeksKDu+duYZQKTJk7JZEZujoZyPPJ0DNmXzPHlUrvl0m1BfeT/HMxLPJ/kP2Q==","signatures":[{"sig":"MEQCIFeDoJ3ssfvOEIfuPxF2RgY+GA4sETk/pCg1llfspcz5AiAJyJGPG3sry0Nsmj5Yz6gDGgqOW2POys7zpgXmLWtJwQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6376630},"engines":{"node":">=18.x"},"gitHead":"610c99898a110dafce2d4d4f4e1e492f151460ae","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-610c998-202401301331.0_1706621536722_0.12740370304954451","host":"s3://npm-registry-packages"}},"2.0.2-ed44f35-202401301400.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-ed44f35-202401301400.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-ed44f35-202401301400.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2b0dc1b991e64f9864bdfa579b6d5d22c23901cf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-ed44f35-202401301400.0.tgz","fileCount":312,"integrity":"sha512-4EsZci3qFJ56PAV21VE+U0UM0eiyWYWO3ObB9payJ8bqMjcPYVea0ipS5PXbtMSRn5Uc9OWRbuTMo7U7ZPKuRw==","signatures":[{"sig":"MEYCIQDVjrCAqNECgnozk3LjHKQGA3EsGikmSkMLqjYYHhaHvgIhAOUbLMshmlnnBye1Y1FdahGV245uo06GZY0eTwWLmsoU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6377158},"engines":{"node":">=18.x"},"gitHead":"ed44f357d86b183ad353cc9a21726b96d9eff39d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-ed44f35-202401301400.0_1706623285673_0.48207990241168397","host":"s3://npm-registry-packages"}},"2.0.2-e85cbaa-202401311505.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-e85cbaa-202401311505.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-e85cbaa-202401311505.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1bfe0cf524c5d0c0ea617d1533a946e595742743","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-e85cbaa-202401311505.0.tgz","fileCount":312,"integrity":"sha512-EH7k9k428CzcIREIsIziuZtABdAsjEoV8Pb9VTn+pQroo1QGtIjMdqL+06UsSlN3dSKZEcRTKfOCBYjIMqeBHA==","signatures":[{"sig":"MEUCICrpGaK7rEJKIH42OgiZ/X8CsQfP3140jN7ttaf421rWAiEA1tBzXgdO6/eKJTl1GZ8yu6P6byimlFTaDWGFLWD3+d0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6377234},"engines":{"node":">=18.x"},"gitHead":"e85cbaab636dfd2ee0e7fb0dbadbe688e06788d8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^10.0.0","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-e85cbaa-202401311505.0_1706713578685_0.7745067504200542","host":"s3://npm-registry-packages"}},"2.0.2-d0f6c98-202401311756.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-d0f6c98-202401311756.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-d0f6c98-202401311756.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"420925b0703a9e37ea33a35bd4e43c8fb5f57adb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-d0f6c98-202401311756.0.tgz","fileCount":314,"integrity":"sha512-Tcj6AkkRvu9zudBxt92MWQuSSBxdJtlDRImgFzlxDfTQKkhTqrUXQnlnQDEr6jYiAkduRuaj42kX/8VbX3fgGg==","signatures":[{"sig":"MEYCIQDqgGBlZqYBu3S0MADlP8f4h37a7L3Pfg89JaWzNUf9lQIhAKCbjVcJpCmxFpAIKiGUYA5RoFvuPWmH80zSKpks96+n","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6379295},"engines":{"node":">=18.x"},"gitHead":"d0f6c983564f94d36a4cd64dd48638bb5e0deb42","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-d0f6c98-202401311756.0_1706723839958_0.9542127986634588","host":"s3://npm-registry-packages"}},"2.0.2-2331d72-202401312044.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-2331d72-202401312044.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-2331d72-202401312044.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"91c580b8dc8d0e18560ad4a8718992af5be97354","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-2331d72-202401312044.0.tgz","fileCount":314,"integrity":"sha512-nX4MZHrCnRhGGA32xbVa+gPbux8H9dbSX1/DQSrQ9o3+c6W0n+Wgo7obUF71jvAjmNCy4jQoA7+kGnP3YNgEfg==","signatures":[{"sig":"MEYCIQDjaBTF83+NGTCZodfbE8NAMG3jeasW/lInObuC5FLl0QIhAIyUjmfIISBHAfHAfxf5m17npIv7F2PzdarPkoH4M1d1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6379391},"engines":{"node":">=18.x"},"gitHead":"2331d72bbb1d2e1cc0e16351c495841de54ea9fd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-2331d72-202401312044.0_1706733908672_0.2906951340422306","host":"s3://npm-registry-packages"}},"2.0.2-79f2e21-202402010748.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-79f2e21-202402010748.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-79f2e21-202402010748.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"114feff5b82251f9b819f11baca231a66fd22ad7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-79f2e21-202402010748.0.tgz","fileCount":314,"integrity":"sha512-MzK6bKqiSqJ5HBe61NDanhvWMFJLEZPUdmYpkMZvTqwR85zGqRdU+7+ldPGUz8X3DHVoKg6e23if6xWc8bXaUw==","signatures":[{"sig":"MEUCIQDFtAMapmXnQGew0N86WJOJzhTw/nt/xQgsMCaIQUSfTAIgMK63AXF61JrwXh3g0AOSh2b/HFhV9qp5Udzh4jgd5Cg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6379391},"engines":{"node":">=18.x"},"gitHead":"79f2e2133889a14f03e30f855cfdd5158341efea","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-79f2e21-202402010748.0_1706773791756_0.5915213837034006","host":"s3://npm-registry-packages"}},"2.0.2-1106bac-202402010836.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-1106bac-202402010836.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-1106bac-202402010836.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2db4c616c7d6837ed43e62ee4872dcde8377f669","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-1106bac-202402010836.0.tgz","fileCount":314,"integrity":"sha512-8wg8PZoOX8OBf8lZ0mpH1vC8be+Tjt4LJUiuMBbXt3C2NjB6038bRVp5EbvgdJnpheMEntqLVXdSEfRZDXRLEA==","signatures":[{"sig":"MEQCIA3sSpn3GKR1ms9UA5KQH2UzuSIo1wbYjiPVJwuoR4J/AiA89sHfHLiEVKHOgvbfDUWq2wtnFnWjX6N9O5bsa69GMg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6379391},"engines":{"node":">=18.x"},"gitHead":"1106bac6675e386555bebd586ad99eaa3132433c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-1106bac-202402010836.0_1706776640058_0.8366137503048166","host":"s3://npm-registry-packages"}},"2.0.2-8e6736b-202402011153.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-8e6736b-202402011153.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-8e6736b-202402011153.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b8371d682eef61d37d20d424b3668187d141321d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-8e6736b-202402011153.0.tgz","fileCount":314,"integrity":"sha512-fE0UV2wWvfPAcMjesRZGTzFirAh7oPq4CAoP5SYz+gDrNeXhfHNJlNC67nUTFWEeGXKUW4POAsZ7Apw5Ke3CQw==","signatures":[{"sig":"MEUCIQCp1L/VlmIrhsdx6NFICEfrNdATjscg9RolpNzAsIry/QIgd7s7ADEMf65GWpmGtamnOg1v5bVsU939YNTSaf9d7+w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6379391},"engines":{"node":">=18.x"},"gitHead":"8e6736b95ea0c980b63d64aa3d1e499649063020","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-8e6736b-202402011153.0_1706788461195_0.7809577044557685","host":"s3://npm-registry-packages"}},"2.0.2-d665d06-202402020937.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-d665d06-202402020937.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-d665d06-202402020937.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9efa3a30e1ffb322e65d4256147526639f75321f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-d665d06-202402020937.0.tgz","fileCount":314,"integrity":"sha512-ybgAnazkBxJu2kXQC0ewnmtvUeXTyWG8OnTYuy4+qUrl7nes9WMB1JmgwkNPwLYjAPLZkzKlOc1mjNs/hcfPdQ==","signatures":[{"sig":"MEUCIQCC45czsT1lbPpi17rGxLfBxANRTfCDB+QjCejBh+8g4gIgXd65wObSPJFyNz+Pr7jBPqDBirDavdwbuaUBlst7Dok=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6377906},"engines":{"node":">=18.x"},"gitHead":"d665d06a15f8c9b31759d244171c1e3947e7e292","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-d665d06-202402020937.0_1706866729141_0.3387326747456927","host":"s3://npm-registry-packages"}},"2.0.2-9723fe9-202402021130.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-9723fe9-202402021130.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-9723fe9-202402021130.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a1f3303fcb951eaa08a543bf4ef055fa5683dafc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-9723fe9-202402021130.0.tgz","fileCount":314,"integrity":"sha512-s1pJzSpn8G4K6uM7NkNQ236zEsHPUbLZ8q8GemWEBby9SZhbCaKDpbmRc2SsIC0LV12UYU6kGxrbhBmbgr9wpw==","signatures":[{"sig":"MEUCIQCi8MCRO0vRxaTuYXLg+1zXLUHaooDew+NqaV4AueFR5gIgTNG+j9cYSx8+gF2jlRuCApulMyV7izhq1VHKHMQLJ/I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6377906},"engines":{"node":">=18.x"},"gitHead":"9723fe95576c488f31cc05da8b61ebde2ec2a29c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-9723fe9-202402021130.0_1706873481507_0.6378033285113183","host":"s3://npm-registry-packages"}},"2.0.2-1b92584-202402021229.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-1b92584-202402021229.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-1b92584-202402021229.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dcac0a5d4c9dd5cdc812673e19368a862e66dc76","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-1b92584-202402021229.0.tgz","fileCount":314,"integrity":"sha512-WkeIPwUt38v2bEz/QZB4ggJLQigs2DkWCT/GvXB1dNSacF8lWMtJWs73Hk8cFBndNziuNUOPJOuGtjvTPmeofw==","signatures":[{"sig":"MEUCIHCPeUbKzmmi6Z/TI/cZO3cyQm7zR3kiCjtsfOiNGqRJAiEA3FxpCyeLHdVkN2nGTsr6C9GiN72ZejSqeGyOvbiz2CE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6377906},"engines":{"node":">=18.x"},"gitHead":"1b9258477e23baa3809e1ed241473078c593b427","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-1b92584-202402021229.0_1706877008005_0.7415343054716286","host":"s3://npm-registry-packages"}},"2.0.2-3f2ac1c-202402021735.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-3f2ac1c-202402021735.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-3f2ac1c-202402021735.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"80a4897e011a1ce78204f696582e2532dc3bc3fa","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-3f2ac1c-202402021735.0.tgz","fileCount":314,"integrity":"sha512-YSlztZ0HQEDbtYoWEUOvNqGMvhk3WXUdSKXi/g8i8ZyoAz/uO/Hmb6S+VU2sgsdqg/6EnYBN6Ft3pcUJ0GG3yA==","signatures":[{"sig":"MEUCIBykgiju9PIw/3BcWWxnBK7mhWHNm26jokmnOtKmaT2PAiEA7UrZeA7B6bdta+UHnB+NK9W7//nFsT4FODNn67FOE4k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6389126},"engines":{"node":">=18.x"},"gitHead":"3f2ac1ce452131136f2904752f29cdaf2e6373a0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-3f2ac1c-202402021735.0_1706895403133_0.06230487122270434","host":"s3://npm-registry-packages"}},"2.0.2-25e6e62-202402021737.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-25e6e62-202402021737.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-25e6e62-202402021737.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fe2c0933aab3848b4e30c3f040f9715451b05793","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-25e6e62-202402021737.0.tgz","fileCount":314,"integrity":"sha512-nO69+ynf23wfPt5j/RdsJxAFNjLrRSBu6NExrBlwJ1EXG9ua7QVPP92+qbimt9rjjGq3v6QH97Es+n+4AGd5MA==","signatures":[{"sig":"MEYCIQCX+D2WNsQImPvk8BB97haeT1C/M0Mi4p7daUz3Wm/X1AIhAPk5aQtDtn/uzBZGAF8lIM1lkLBZj6qyY5zokRWkFUYr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6389126},"engines":{"node":">=18.x"},"gitHead":"25e6e62c3a632e3d295b42f3d94335c01829fd3b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-25e6e62-202402021737.0_1706895536406_0.7020596783324831","host":"s3://npm-registry-packages"}},"2.0.2-4f6f294-202402021803.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-4f6f294-202402021803.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-4f6f294-202402021803.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"95d925cde1cfe42d77fa3a43d386ea6edfa5d860","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-4f6f294-202402021803.0.tgz","fileCount":314,"integrity":"sha512-X4pHkbSuBZlRc27z+AuskAavNDlCfWEeLlols9QCk+mDtmfqyHlvfgc49GdMe47J3V3SJI/pI/P3KNZgByrA2A==","signatures":[{"sig":"MEQCIFEvLtzY0AdgVlrF1nA/i5EvCXOCQRcbNinDJOspHZyjAiAHNuFx9x//gfoOgqitxa5U2sdID6TYv6gwOVBkLMr1Mg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6389748},"engines":{"node":">=18.x"},"gitHead":"4f6f294da65902c002c3d0080765e083e9c91bb6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-4f6f294-202402021803.0_1706897058540_0.39706704604695187","host":"s3://npm-registry-packages"}},"2.0.2-4f6f294-202402021806.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-4f6f294-202402021806.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-4f6f294-202402021806.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9d817c24eb337889d98f6668200d298fe6a9d2f9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-4f6f294-202402021806.0.tgz","fileCount":314,"integrity":"sha512-K558M/pWOPhwPtTNk9e68wYepWwoKrPtOPSHMu8sduo483Gw+LS+vHIPxSKC1KgM+tf+HuZH0dilZVteGq91PA==","signatures":[{"sig":"MEYCIQDFnPPzG3+4dBruYWIwDbuFiAhS287zAhyTVOeV1HKQ9gIhAJLsP5HwqN9KY5imOSg8JZrefbxv+s3ZkuuBdW56GndS","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6389748},"engines":{"node":">=18.x"},"gitHead":"4f6f294da65902c002c3d0080765e083e9c91bb6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-4f6f294-202402021806.0_1706897264354_0.34858427405650727","host":"s3://npm-registry-packages"}},"2.0.2-c0d1a39-202402021822.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-c0d1a39-202402021822.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-c0d1a39-202402021822.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"831d2a01e497c677a5695a0432d124c4a2c8c4e6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-c0d1a39-202402021822.0.tgz","fileCount":314,"integrity":"sha512-Sp9wK1F29/MkqFKK5AzWNXtYgMg2r+WW9GuD71GyPDyjdB1dpD9OLwvvJ1FklEM3qpzZ8i14c62XEWOSnWyGzQ==","signatures":[{"sig":"MEQCIAeaBC/2zPgeYjFHTOaebP6w2Z8YppeyfgmhkzlQpkIRAiBBrI7/U5lzJmSRNr540lyVdOvYk63blwSbJMNT2g0mEg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6390089},"engines":{"node":">=18.x"},"gitHead":"c0d1a39808b621213cf3ab559543e8cba02c92f1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-c0d1a39-202402021822.0_1706898196027_0.16476302343810745","host":"s3://npm-registry-packages"}},"2.0.2-8de1ba9-202402051102.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-8de1ba9-202402051102.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-8de1ba9-202402051102.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d1ea8d4506f465221105bfb76c59d310c652199b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-8de1ba9-202402051102.0.tgz","fileCount":314,"integrity":"sha512-MgrdOpbpCCLlymBXwSEJmVafTXnYnTXof4r4kVGlh6ZXGzeM1whgg9QdFSJim/CQdMX7bSzvzSCguyx00T1CjQ==","signatures":[{"sig":"MEQCICN/unAQCruaXLZg3TKOiY2XaEl2U9NOhM9Sqed+zh9IAiBo0WadSD+a63diEMZWYHWMRK66RfhKQEwJhW7VOUzyKg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6390423},"engines":{"node":">=18.x"},"gitHead":"8de1ba9f77aa179821ae5418c5fb255803ca09c6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-8de1ba9-202402051102.0_1707130980190_0.9474625987628587","host":"s3://npm-registry-packages"}},"2.0.2-a8422ea-202402051525.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-a8422ea-202402051525.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-a8422ea-202402051525.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ba01b85793a68e9fc3031126cb297f7e3aaa0c3c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-a8422ea-202402051525.0.tgz","fileCount":314,"integrity":"sha512-BvFKHjMsP6PSsdy+wGDgjqSso3ILO+Beb6Yz5E243D/3DZPStnEv6Ns5p6F7r50n1KAetiDV2uzAM3Exc8z/qg==","signatures":[{"sig":"MEYCIQCuGtHruYDx17JkBBapVa4l/jjPYexZEDPGTdLLiq47XQIhAK+ZSvmdLPS6IiZIGGSbRe7SYRt2uWYIdi4chBgOIQly","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6390549},"engines":{"node":">=18.x"},"gitHead":"a8422ead5149edb3749c7ba5335ab9e719907ac6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-a8422ea-202402051525.0_1707146818355_0.3791832177208334","host":"s3://npm-registry-packages"}},"2.0.2-d347177-202402051555.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-d347177-202402051555.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-d347177-202402051555.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a58b494d698132b9f3429c745f5a68da61656a01","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-d347177-202402051555.0.tgz","fileCount":314,"integrity":"sha512-Dw8PJuDB8i5wevhZ9NW3giFdgiev+ckqcD9qOU1acVIqRItYQaA5wW/b6JMO0CkwQcwNTOubAhEZ63pIrC2Ttw==","signatures":[{"sig":"MEUCIQDGCre8fqWS2KbeqkSaEgguhLJZxI0Nl2D2sAXabEFN6AIgeu35nRoXOZlxPf/0MtlNl6LEjuFy7Lck965CuEVaJfs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6390511},"engines":{"node":">=18.x"},"gitHead":"d347177c8e91ceb2a3a7441979a58416fe7a85e5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-d347177-202402051555.0_1707148586326_0.5362143903956658","host":"s3://npm-registry-packages"}},"2.0.2-d347177-202402051653.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-d347177-202402051653.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-d347177-202402051653.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"773a6a9a4331c4b2b06ce5967c6f8dfbb0edddf7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-d347177-202402051653.0.tgz","fileCount":314,"integrity":"sha512-2dGdXA9oc8IH5rYYeUDfYaKLIGCsaVF9K7ws2DbFLrTgCNnNV1PdidTRy04zUMn3iqjRlrSRow2mXx1H/Tu3WA==","signatures":[{"sig":"MEQCIHauM02DHaqXP9K95jT8MDFnGBpVptArgC8ZKWVN/tdFAiA0AWoKxzuk/1HXqLVlSeIMSmhgDMttFRk3I/imAQo90Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6390511},"engines":{"node":">=18.x"},"gitHead":"d347177c8e91ceb2a3a7441979a58416fe7a85e5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-d347177-202402051653.0_1707152053523_0.9367223031999647","host":"s3://npm-registry-packages"}},"2.0.2-3b7ed0e-202402051804.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-3b7ed0e-202402051804.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-3b7ed0e-202402051804.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4214ab08257ffbc9005a2d3cfbceb5e4973bb692","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-3b7ed0e-202402051804.0.tgz","fileCount":314,"integrity":"sha512-W0hE7Plc4BAlbUMf/ZCIgQtBRygcnDqn7NLMG8GLmSXNzUessyDwdHxpKMvOQy4pLXZ8uSo48B0R7KyjNO6dzQ==","signatures":[{"sig":"MEQCIFCeCznPNXQ7Oeu9yMkcNiQIyiP6h9/H9lWPNxQg/LpiAiBUDIFvqISWevEUl9LJDpBwOa2Lq++knyiblWLreZtwDw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6390511},"engines":{"node":">=18.x"},"gitHead":"3b7ed0e39a4e4486eed745edf04f83f2a8ad73a1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-3b7ed0e-202402051804.0_1707156319926_0.755684066375039","host":"s3://npm-registry-packages"}},"2.0.2-3900376-202402060953.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-3900376-202402060953.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-3900376-202402060953.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"260bda72f2d37ef21acfb072038f75c09ae2cf8e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-3900376-202402060953.0.tgz","fileCount":314,"integrity":"sha512-Arb9kTnksFJUOIxMFEGzMnrlM7FZejwqW6jfTWFjuC+TYPZId23/OGXuxOMrajNHqI7K8QIeLy3NS0nlhnMzIw==","signatures":[{"sig":"MEUCIQCemtGVW4jiYQCo6SVDg4A/cYH8fgJ8nXWtB7uFhSHMRQIgeVwcZxXabpcfThcQFWUISVEg/gWUgx4C7eOa67lGvI4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6390511},"engines":{"node":">=18.x"},"gitHead":"39003767ebf53ae74af6438b4071996db3e70fd0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-3900376-202402060953.0_1707213242854_0.274283896112556","host":"s3://npm-registry-packages"}},"2.0.2-3900376-202402061002.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-3900376-202402061002.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-3900376-202402061002.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"daa8ccbe5974f944b829e16a04ec8a8e55322f79","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-3900376-202402061002.0.tgz","fileCount":314,"integrity":"sha512-EAM/Hfrvdn2kqbQhmSVK85m/D+mH3xN/4JVLq+J2Qcgq39vuv02gb2ZGSU22rts8ZDThb+uflzOfF4Sfx9p8wg==","signatures":[{"sig":"MEUCICgRzkEiiNhNSxsCTFxU/cwLfhD0FrIbyoiPCYB8eIfrAiEA/x4nTUwlFLt2QzmN3f/XK95O0kWGuJubbyg3eCB4S7E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6390511},"engines":{"node":">=18.x"},"gitHead":"39003767ebf53ae74af6438b4071996db3e70fd0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-3900376-202402061002.0_1707213798425_0.8999419144729055","host":"s3://npm-registry-packages"}},"2.0.2-a3edd3e-202402061031.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-a3edd3e-202402061031.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-a3edd3e-202402061031.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6d53aa29a3dcf816f6a23ed3c3c778b79c1599b8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-a3edd3e-202402061031.0.tgz","fileCount":315,"integrity":"sha512-yKLUy70Wqw1f0B4pV+I00n3frxRKLDXDsSmkBSFdDoKJwsftrUmshA/k/i1lYH/cT7sIlllCl0UWPtlg3w58vQ==","signatures":[{"sig":"MEYCIQC8B5/qeQRJ7zqJYK9f5eAzYGVdPXv3hpGlmRokRHSpOwIhAMjOTIh5vA5M9fbU2WnyaAEKd9J8iIdScU2lQrGyX10d","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6391239},"engines":{"node":">=18.x"},"gitHead":"a3edd3eaa96a3c066683d3ac8834f975488da565","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-a3edd3e-202402061031.0_1707215524546_0.9983946382688815","host":"s3://npm-registry-packages"}},"2.0.2-7da4626-202402061036.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-7da4626-202402061036.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-7da4626-202402061036.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"23131fe34cf563662bea593fd6c78f0b1cebf8b8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-7da4626-202402061036.0.tgz","fileCount":315,"integrity":"sha512-CENQHcc3HnY46U6qyLGWN3q+CYeL6hhXbwO8SPE1Gesnz5ncxMerrtLj/iDoF1hIRlcpTP7/ZbmzrF3VJIqo6g==","signatures":[{"sig":"MEYCIQDWBRU84kTy/yNaiTKgbFYx34hKNUw9g+RhmJBTVxZoYgIhAI2IlTFfKxGATEwxL58n8r0T32xe7Lk92vX3DIqjWeuZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6391239},"engines":{"node":">=18.x"},"gitHead":"7da462639c04d7276b1b6f3f9ee832289a12f8aa","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-7da4626-202402061036.0_1707215829060_0.9705682033693035","host":"s3://npm-registry-packages"}},"2.0.2-bc79846-202402061432.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-bc79846-202402061432.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-bc79846-202402061432.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a1a54d704ad8c5b039c25b30cb1ce88047378528","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-bc79846-202402061432.0.tgz","fileCount":315,"integrity":"sha512-Rfv4RKZN7/ty3+PTmkHX5Vbuwl78CdrDBdK1tyjUgo0Cb0vcV7z5eG8QKMj9pXeogC4P+KTOrlHmsLQpEhOzCw==","signatures":[{"sig":"MEUCIGstwHAMnjH1QsEB9nt6kkee3tW71Jgz7Z3UhvwtQ788AiEAtLcDRcxvggHgBuL5WrxDwJhyG2PyKeEgteWqgNDUe1Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6397123},"engines":{"node":">=18.x"},"gitHead":"bc79846a1a41ddf8d98dd309ffa12d8cefcd4899","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-bc79846-202402061432.0_1707230032406_0.4455352254215552","host":"s3://npm-registry-packages"}},"2.0.2-3ec2e65-202402061515.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-3ec2e65-202402061515.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-3ec2e65-202402061515.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"89981ec285b93b94c5c2525c979a0d2da4510bf9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-3ec2e65-202402061515.0.tgz","fileCount":315,"integrity":"sha512-px2laKTj7RWhyr05tBVkNN2B1GEBidVOeLxtjIs7VbbmMXWfcgqD6J+65g3rslmbQSTCaDzURU4LkmMhV5dSdA==","signatures":[{"sig":"MEYCIQDGu/xFfLTisy3y9nbFL03HpUuUBE8KxamhG7JWun0TAAIhAIWlU7Qb5+IZEz2TKL/BuGzhZoe0Uv/PjEHYS7mFlvwU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6721473},"engines":{"node":">=18.x"},"gitHead":"3ec2e6577f00957387b43d7f23aa03e4fa1df2cf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-3ec2e65-202402061515.0_1707232621539_0.047472448012720436","host":"s3://npm-registry-packages"}},"2.0.2-cf40e8a-202402061807.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-cf40e8a-202402061807.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-cf40e8a-202402061807.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"59256cd61874571efd55d48186cf82d8b3ebe19e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-cf40e8a-202402061807.0.tgz","fileCount":315,"integrity":"sha512-WucHcBUJI1FOZMVjSlbuQ3X0sY1NHfUBKqW7Sfo6+d0QUeKjuLj7csereu+gjbDgEiMX0Z4OzMdleyLfTdUuRA==","signatures":[{"sig":"MEUCIAfhBjtVYTEi5tWqz87EByldnbbWNFV8VkTue8PYlRsGAiEAodb2j+B8RETI/rLJQPRqD3+TOOBY3plddzd5gcpzbmg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6721748},"engines":{"node":">=18.x"},"gitHead":"cf40e8acd07d96e21b8c465f164748fe9fb13367","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-cf40e8a-202402061807.0_1707242941134_0.6496155589146837","host":"s3://npm-registry-packages"}},"2.0.2-cf40e8a-202402071014.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-cf40e8a-202402071014.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-cf40e8a-202402071014.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2b416709e01f859be7615d819f495e7d9c8a1a3d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-cf40e8a-202402071014.0.tgz","fileCount":315,"integrity":"sha512-MyVnR2Ie+UMZ+mYP0dS8LOCtdaXyBKup66SltDWf41wCMJheKZQCWJcJ7YSXrmQB/fzZipAhiKNVqiGHUhX+aA==","signatures":[{"sig":"MEUCIErtzt2U0HETPqNIzEFyEGqU20ruto/ZA1Rvn4Pwlv0AAiEA1NrVEf3U4BfWGz9v0MlVzoO7lneXsND7xm3H7nHY8dY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6721748},"engines":{"node":">=18.x"},"gitHead":"cf40e8acd07d96e21b8c465f164748fe9fb13367","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-cf40e8a-202402071014.0_1707300968284_0.5042481256188358","host":"s3://npm-registry-packages"}},"2.0.2-215d7a2-202402071227.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-215d7a2-202402071227.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-215d7a2-202402071227.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"15d5412364f56343b5bc9794d5c33293aed143ac","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-215d7a2-202402071227.0.tgz","fileCount":315,"integrity":"sha512-sE9hT2g44I8PpP+4tdMNzFtVsDJ+1rGXXnVmBKqpmawW5qXcjNKsRfIX43TrBG4h8IfX6/MR+2AUikLrw7FA+Q==","signatures":[{"sig":"MEQCIDbHYBBoYl+F3OahZRUbpMxyQCiSQ2/3tttPxVqSeoWCAiBhia70wFUpnQFXrvYK193CVJfEpT9drMEKxQyX55HMaQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6746171},"engines":{"node":">=18.x"},"gitHead":"215d7a2cd88b148f51b83032641b2a45269ed89f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-215d7a2-202402071227.0_1707308923367_0.48393618497001456","host":"s3://npm-registry-packages"}},"2.0.2-8b76c12-202402071258.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-8b76c12-202402071258.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-8b76c12-202402071258.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0ea2606c5e43a69a255ccb1148a2298afbe2654a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-8b76c12-202402071258.0.tgz","fileCount":316,"integrity":"sha512-xjDOgLrAvNbmZuAXJ9IE3dXccTSM2JaduXojZTNg4aKtf4s9jYZY67yFK09LbJcbgDK8d73y4w+GL+4Rd/v+BQ==","signatures":[{"sig":"MEYCIQCvsR8AuZHRyqLDxl2qOqM8dagWlAml+xV70N39nE+enAIhANEjGbe5ldWSHMv43CslXQmsCVNIDkxnma2hh9ePiTu7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6789350},"engines":{"node":">=18.x"},"gitHead":"8b76c127375a277ad9f017cdb6039e9eb59abbcf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-8b76c12-202402071258.0_1707310746047_0.22783218211455258","host":"s3://npm-registry-packages"}},"2.0.2-b75b0a4-202402071333.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-b75b0a4-202402071333.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-b75b0a4-202402071333.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1462e04a143192770bb08c6646307d1283130a1d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-b75b0a4-202402071333.0.tgz","fileCount":316,"integrity":"sha512-R4A+kU0b80KOP61vRJzIr1wLaDnOWJ69ym9quQC4PTjLTLO0DO6yqAKt1r7zI+KDuBSWhTTfwX+t1RBCt1m9IQ==","signatures":[{"sig":"MEYCIQDcieEccsfHXvnjaqmZcyK74EWqtRiLoRlnEy3Dq3q6/QIhALD2Jxi+rBtF7WAAdSoTyCFWrM3aq6sNHBjne0oxEd+s","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6789846},"engines":{"node":">=18.x"},"gitHead":"b75b0a4c6a8bb8de8c86a31d07f66ae38053a485","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-b75b0a4-202402071333.0_1707312897766_0.05640122766016087","host":"s3://npm-registry-packages"}},"2.0.2-5cf9e6a-202402071340.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-5cf9e6a-202402071340.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-5cf9e6a-202402071340.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2b46e0ad693f62d297b1a7a469f2e855be502dc9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-5cf9e6a-202402071340.0.tgz","fileCount":316,"integrity":"sha512-LTjQYeShm5GJ3xOw9AnPI5uPjf5K89lqeqxlioDnTsz5GrFmBe5I4BWZ0RShqky2aZP4XVU3oIX8I95gjj2hQg==","signatures":[{"sig":"MEYCIQD0UJscFVnS8z81ar30QtjmNme22aXztynuB5WJqQfWDgIhAPathC5tWqljoZr/TejdnbwLZhDnRrumprHTvTULCZ8h","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6789846},"engines":{"node":">=18.x"},"gitHead":"5cf9e6a8d4c7cc7970215fe0eae9458394f2248e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-5cf9e6a-202402071340.0_1707313309323_0.4614477058281714","host":"s3://npm-registry-packages"}},"2.0.2-2de789f-202402081437.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-2de789f-202402081437.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-2de789f-202402081437.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"97f3266196e00f7da61d0a57e7f4a2295fd74abf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-2de789f-202402081437.0.tgz","fileCount":316,"integrity":"sha512-swYF09OHaMF4SXw8zX/Br6TY/KXixXYphh9YYg1576sgbb3cAqmBLzZtudWXa34zejx0UXhYu79TPc45Y2rs1Q==","signatures":[{"sig":"MEUCIA9mcV0Z9S+ir9IH67j0Mi+ZIRBAHnm4WVitk86cu6FjAiEA+Z7nJb5SRYzHuL2zPRXnOGOH8t8lamvSzPq1T1otmRk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6787675},"engines":{"node":">=18.x"},"gitHead":"2de789f0308d83116f39ab3094b111b8c42af5c7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-2de789f-202402081437.0_1707403097527_0.17289151885170662","host":"s3://npm-registry-packages"}},"2.0.2-2de789f-202402081443.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-2de789f-202402081443.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-2de789f-202402081443.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"62d7f42637e2eb06140b2a178adb112b0cf5936b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-2de789f-202402081443.0.tgz","fileCount":316,"integrity":"sha512-T64qQMn/LzyPjhCoLYNrNn0h22v+WrwLV27/KKJHd6cmmYpfcs4O4WbSuVu3PIUkcuWvqbm8ps/B1u+ho8ooxw==","signatures":[{"sig":"MEUCIQCVTnXlEXb1c1prxUhr0zLtASusXnTW1YCKU1YoU2Hs2wIgS06oY6wo/2vghnKU8tpwatIhYqjW+VlCaU4JGSqeb8o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6787675},"engines":{"node":">=18.x"},"gitHead":"2de789f0308d83116f39ab3094b111b8c42af5c7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-2de789f-202402081443.0_1707403470887_0.0867191351047758","host":"s3://npm-registry-packages"}},"2.0.2-2de789f-202402121002.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-2de789f-202402121002.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-2de789f-202402121002.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"08fa4a2a68570336c54af8a43c1f7bc94f43e063","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-2de789f-202402121002.0.tgz","fileCount":316,"integrity":"sha512-yP0WUbT8y7apr5tLOubDZLR6kRMIfPowgIA/HGf1O/owaALYYYqjQ5yJywWY0Lryvrz5ItB0K4UN0kMyH+00sQ==","signatures":[{"sig":"MEUCIQDhZ4lOgdQ//IRu+EqZggykSI3JnhOtNuoUDtTa1/M/5wIgbDYcRoinm6K814rgZziXf/WFSjyHMp/3k8nUzDikiX4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6787675},"engines":{"node":">=18.x"},"gitHead":"2de789f0308d83116f39ab3094b111b8c42af5c7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-2de789f-202402121002.0_1707732237558_0.09197157996425886","host":"s3://npm-registry-packages"}},"2.0.2-7f6f405-202402121606.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-7f6f405-202402121606.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-7f6f405-202402121606.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"313e01756a228b2a7d35d28f690ea26246fe6d6c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-7f6f405-202402121606.0.tgz","fileCount":316,"integrity":"sha512-C6js1PhSy8qFt8HD9BE8HUviERySj5S6t6t8J3NHYJ1neGEsMX2F7XF+7r+mNoWE0NJUNgcT24XRWD+1NFODng==","signatures":[{"sig":"MEQCIHfWl/qFsJdIAmERF/PYInAO6n7FFYjUaeIGVamitsLXAiBEr5pEhlGp3NzBYre9kezcrF4nNkQNnV8mfUndlfZ1tg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6787691},"engines":{"node":">=18.x"},"gitHead":"7f6f405c4920a5531f230d9aded4612cea8cf037","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-7f6f405-202402121606.0_1707754041438_0.8005405834049162","host":"s3://npm-registry-packages"}},"2.0.2-7f6f405-202402121608.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-7f6f405-202402121608.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-7f6f405-202402121608.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"18cd68da9e91ae29ab75598f65fa2724410111a4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-7f6f405-202402121608.0.tgz","fileCount":316,"integrity":"sha512-S4xGpYe4FQNCBpPXiMvgKy9PRHUmiu5id/i64IMSTnnZE8w2/tmukv9bJLhRZ55EB41z2p11vqSLoj1JGDq5Cw==","signatures":[{"sig":"MEQCIArSmxCo+N55fFy0Nm8IiwK2z8e7V2FrDAJdYppjCb/UAiAn6B5Ms7RXAygNuvJF4+cN002JybcqNWDNtxtgE+N5VA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6787691},"engines":{"node":">=18.x"},"gitHead":"7f6f405c4920a5531f230d9aded4612cea8cf037","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-7f6f405-202402121608.0_1707754148074_0.7792184590614295","host":"s3://npm-registry-packages"}},"2.0.2-7f6f405-202402121609.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-7f6f405-202402121609.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-7f6f405-202402121609.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"30869dfa6d4dcfd31441ea67a51012e19e7558dc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-7f6f405-202402121609.0.tgz","fileCount":316,"integrity":"sha512-o68UesWrxCetphRQqfckokkTqen6/SL904YtIJJ0QEoIpkxAMyWpVKJ/E0Z7PHPcdOkfdUq6Rz4x0u2WGkM1Bw==","signatures":[{"sig":"MEUCIHQVT6AZyRi3fHb0qSptICE9GkGUHebZlwCnwszDH6lTAiEAvQkIVvRpaVP0VWYHM6zXPr1HVDRE+8ZlGDffNrH2Va0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6787691},"engines":{"node":">=18.x"},"gitHead":"7f6f405c4920a5531f230d9aded4612cea8cf037","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-7f6f405-202402121609.0_1707754274227_0.7852673486270376","host":"s3://npm-registry-packages"}},"2.0.2-7f6f405-202402121613.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-7f6f405-202402121613.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-7f6f405-202402121613.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9cf29395ef1723562ac9dfd9382fb2b3d9439bb0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-7f6f405-202402121613.0.tgz","fileCount":316,"integrity":"sha512-NJ/BE76rA0L8CLlj0i4SQt19AIGbZYLLPBebI67ti7ZJBh48Gtd16hKvi/G/Xc+KkKRnGwBc6ZkYQrMndVf8ug==","signatures":[{"sig":"MEUCIQDIhR8ppLFtNiCRz/ufO+q0mWmiXQ10crEd6u++3t9LSgIgCEblPqSiyi99fGn3FUhnGFdiB5YBIIefJ4y0NzWp0LA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6787691},"engines":{"node":">=18.x"},"gitHead":"7f6f405c4920a5531f230d9aded4612cea8cf037","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-7f6f405-202402121613.0_1707754462018_0.6484802219631423","host":"s3://npm-registry-packages"}},"2.0.2-4e8b625-202402130900.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-4e8b625-202402130900.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-4e8b625-202402130900.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4bc2d5b7beca66f0be0d5e70365b292812bf3c60","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-4e8b625-202402130900.0.tgz","fileCount":316,"integrity":"sha512-cQO6DfotnuyofOyEUkVMUuXlgI0z3W/7/4vDBDAusuiFyy1YnZSn7yV4g0V4Pz2+eddIj7EAKVbOw6VI35VwlA==","signatures":[{"sig":"MEUCIDvM8Cwnsr7KAqKE2/Doc8xo5n/3Zo0LgZJ/oOqO9UBKAiEA4ZjnBNci4YOJ/jSn4NCNPqpqMqthOCrxhRC4Vie36C0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6799753},"engines":{"node":">=18.x"},"gitHead":"4e8b6257ce0db1c66de5c87497fc41b94e201bc8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-4e8b625-202402130900.0_1707814914829_0.35335569390204435","host":"s3://npm-registry-packages"}},"2.0.2-7ce995a-202402131437.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-7ce995a-202402131437.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-7ce995a-202402131437.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"171b07615cbe3945e580c94c759570798d67508b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-7ce995a-202402131437.0.tgz","fileCount":316,"integrity":"sha512-x32ceiZCK0WQV8LRkzwfAz2eXVskRakDridHcFesA3yzZzZsywvUTLPONiqJVctx3ZE5RjBqw0cpKt4eshH/3g==","signatures":[{"sig":"MEYCIQDjGITBegq8pzHpdegc1owHTGTzz/AcJPjzpWYwDKot1gIhAIs//oXynPE+nyfsUKsTDmCddyh+71O38Ra/tJxds3V8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6799895},"engines":{"node":">=18.x"},"gitHead":"7ce995a36cd0585142b042cb8557aa1a1fb2efaf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-7ce995a-202402131437.0_1707835165565_0.8870876207580769","host":"s3://npm-registry-packages"}},"2.0.2-005e863-202402131643.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-005e863-202402131643.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-005e863-202402131643.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"108e9033b7d17756b9ca42e244a43fb2581326a5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-005e863-202402131643.0.tgz","fileCount":316,"integrity":"sha512-H02zEIzDTzi0yz1cqKe7moKEkhSIB2ZxKHbhaU0DyDww/c/2X4nvaEn9A7cjURlh4xRL9+Ld/ZPzF0UA4Vz38A==","signatures":[{"sig":"MEUCID4Ms8zF9pgUyk0Bgc20l2dDUB9AbktLLoGWBpQh9EEcAiEAvlQTA5hnQTnlBlYMwdXx0oHL2xtb9P5n70DyhrKH2ZM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6803079},"engines":{"node":">=18.x"},"gitHead":"005e8638bf5796adcd1c70eadc13793aa5f2b034","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^11.2.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-005e863-202402131643.0_1707842671085_0.3930852176627979","host":"s3://npm-registry-packages"}},"2.0.2-97d2901-202402141026.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-97d2901-202402141026.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-97d2901-202402141026.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d8d9ec513b2694c611c6bb313d1f1f07d573bf0e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-97d2901-202402141026.0.tgz","fileCount":316,"integrity":"sha512-g6btB+eu1TT2HJZAii81QZNlAcjW2+Ht6BHzsItds7LMNj5Rve/PqP/TF9t481MSEcOE5agJrc5rn6VybMU0Uw==","signatures":[{"sig":"MEUCIEqjZfyvOcC9HaYWLP3hdi76Xv6n3RzWoD02EvGljKDjAiEA7/6pt+fav1IO5g/78INAdl909RH7FBtbwzWJBbHKk8o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6803075},"engines":{"node":">=18.x"},"gitHead":"97d2901995f4b05dd0052f4a1c8005450752f082","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-97d2901-202402141026.0_1707906420337_0.6140779222412533","host":"s3://npm-registry-packages"}},"2.0.2-faf15fe-202402151207.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-faf15fe-202402151207.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-faf15fe-202402151207.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d1e486d3232ee443c66d00f60ce05e1b21d7532c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-faf15fe-202402151207.0.tgz","fileCount":316,"integrity":"sha512-tFa2e1zkX12+twQDxoSNYfpCXQ3pm1PdY4ylu+HVoKXIPacj6ssnBLdIQGh6HlPlL+HXTDDXkeikHdtKrgBtGA==","signatures":[{"sig":"MEUCIAfJ09vgu3XQYq4A+68/qFjgkdMxf1r627jTSONtoXigAiEAp2vjU0ZtuCAb7UGvcXxNXS/SqSDO0ajIkQoZSBqY6vQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6826230},"engines":{"node":">=18.x"},"gitHead":"faf15fec194d9f3fcf09540dfba3fe5c9115ff97","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-faf15fe-202402151207.0_1707998893495_0.04640615720861874","host":"s3://npm-registry-packages"}},"2.0.2-faf15fe-202402151355.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-faf15fe-202402151355.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-faf15fe-202402151355.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7c7d075bca77d03a2201011e2faaa83fc5ff478c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-faf15fe-202402151355.0.tgz","fileCount":316,"integrity":"sha512-rC+LoWvBlQ4jnmLuNp0p2Y3txGuPnOStZeZ8kIXanfY8j6fKgcqO7z4A+deUqxvUdBaE0IiszPQT7QY/k1YV6w==","signatures":[{"sig":"MEUCIDq5FpvzswZaiTiRpcayoD7h3KU8Rm66rwjFb3Yf5mNZAiEAuvSVd+wf/r3fy8w8agl9cenW+vVrx9YPQ+wYpsPmfoI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6826230},"engines":{"node":">=18.x"},"gitHead":"faf15fec194d9f3fcf09540dfba3fe5c9115ff97","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-faf15fe-202402151355.0_1708005388630_0.4579676624529261","host":"s3://npm-registry-packages"}},"2.0.2-faf15fe-202402151359.0":{"name":"@flowfuse/flowfuse","version":"2.0.2-faf15fe-202402151359.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.0.2-faf15fe-202402151359.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"60f9a2a3f13d4f27be414a38ed19ba1252971167","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.0.2-faf15fe-202402151359.0.tgz","fileCount":316,"integrity":"sha512-T9v70U4TpeneBeTX6g5iOpuMP9TRcw27RZWjTLDO9jW/R+8w4MHjf/WsoT+H1fvYfzWnrMzRAqV5OtJB8SgDCg==","signatures":[{"sig":"MEYCIQC3O9LBnoENCPwd2bPLGWCB41hV6ajaySoEJLz1aWQGDQIhANkq3lGx2VzasPhY+FV0sOdQukUqFP0J90acw2KUBoNn","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6826230},"engines":{"node":">=18.x"},"gitHead":"faf15fec194d9f3fcf09540dfba3fe5c9115ff97","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.0.2-faf15fe-202402151359.0_1708005642556_0.9438970641510371","host":"s3://npm-registry-packages"}},"2.1.0":{"name":"@flowfuse/flowfuse","version":"2.1.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"caeac0e3e651c5052dcd6badca41c43745b2f50c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.0.tgz","fileCount":316,"integrity":"sha512-2WO9ZicWcezjvaRebDbYBCje640rAlnrNSV1mAgXdrxaUa2ueHq9Tll/uogISU+d4XsR7LQ1E8IK5fP6KF7lFw==","signatures":[{"sig":"MEUCIQDQPMmWplyJHwm1M5d/25MmRzhMUs7pjSdiv78LCmdyfgIgESK58dU+FduZya8P2d1cF5X+BLC2PUF2BbbJ6qs8W9c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6828202},"engines":{"node":">=18.x"},"gitHead":"0ad3ff817c1277e21fc209bf931175e425c7b12a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.1.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.0_1708006639542_0.906932000844088","host":"s3://npm-registry-packages"}},"2.1.1-0ad3ff8-202402151424.0":{"name":"@flowfuse/flowfuse","version":"2.1.1-0ad3ff8-202402151424.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.1-0ad3ff8-202402151424.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bfaf67a8a75dea427089a0cf6de15e5a76838553","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.1-0ad3ff8-202402151424.0.tgz","fileCount":316,"integrity":"sha512-ihXSrr4QQSUDpDXwC4Two0zNQuefozp3vbJIOHP/FKmK/REqwHDU1GG18oEJnw4Z/3JP3AmO4OiCjfVa9CsJuw==","signatures":[{"sig":"MEUCIQClIMTATvbpctsYDQupDfBuHCiwkwn35hhUD5jAelfgoAIgV+ElqLkK0kl8GIbX4ES3q1hDUo0vOlEJtQVVOUS+MZg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6830203},"engines":{"node":">=18.x"},"gitHead":"0ad3ff817c1277e21fc209bf931175e425c7b12a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.1-0ad3ff8-202402151424.0_1708007132725_0.10415927222467292","host":"s3://npm-registry-packages"}},"2.1.1-173eeed-202402151653.0":{"name":"@flowfuse/flowfuse","version":"2.1.1-173eeed-202402151653.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.1-173eeed-202402151653.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e3aa8c1abb39ae68495c10a6daeb05fe07def8b5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.1-173eeed-202402151653.0.tgz","fileCount":316,"integrity":"sha512-Kj/6womFNcDgVdR8345asnZU+qwfDweRfMsba3R2LGUYohhX64xmdDWakFQVvVz+AI2rqojfGwFbRFluOHFU+w==","signatures":[{"sig":"MEUCIQD/8yIyN8Zf4j2XjUNjDpFnMIELgI2Z9ETF9Jg2GQEd9wIgXy6lsBST/bdFxHnh+/eJbUaK9BCUCYKngVnuKVVo3ec=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6830203},"engines":{"node":">=18.x"},"gitHead":"173eeedd2facc6099bc16e06c8a93780c7601f21","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.1-173eeed-202402151653.0_1708016094109_0.1910975654962881","host":"s3://npm-registry-packages"}},"2.1.1-de8e1a2-202402191004.0":{"name":"@flowfuse/flowfuse","version":"2.1.1-de8e1a2-202402191004.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.1-de8e1a2-202402191004.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c82f90382d0c1b13ef81b3e3b330ac1a3834073e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.1-de8e1a2-202402191004.0.tgz","fileCount":316,"integrity":"sha512-TnKgqFu5mLjujjCmrUIh1dOtfAm1AN5eY25MyhqsguZvgDcCcXQJua+pRGlGwFX80TlTjOaL29e+4UQQSR++Ow==","signatures":[{"sig":"MEUCIQDVA0QxFOxLoysP3cXlRtg7DrvQE/GU5Jzs/Dgp6/XpZgIgFGAE1XgDF4vBegX3zEZSQeQsZgUisrUYpLUL2N+LbBc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6830964},"engines":{"node":">=18.x"},"gitHead":"de8e1a26c3822439b8c0ccfbb66262fd670587e4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.1-de8e1a2-202402191004.0_1708337147765_0.6011964698368812","host":"s3://npm-registry-packages"}},"2.1.1-de8e1a2-202402191010.0":{"name":"@flowfuse/flowfuse","version":"2.1.1-de8e1a2-202402191010.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.1-de8e1a2-202402191010.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"386d2c172ede32b96e9cd7c458032c911d98a4d7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.1-de8e1a2-202402191010.0.tgz","fileCount":316,"integrity":"sha512-VnDoTBF9BeJYhITCofwNa85yiUt3vztds8esVd8QHG15Wt2GbLwd7g7L0dBKnbd+urXcY7suX9jkM9gf7xFsoQ==","signatures":[{"sig":"MEQCIFkkh3cGg7m8mz+58GgPMAFdHxFk0e34q/B3Rpz+96izAiAq8hiCQscO0QDm+wn+U7GoPNKvARyRjPc4Fo6roqgpBw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6830964},"engines":{"node":">=18.x"},"gitHead":"de8e1a26c3822439b8c0ccfbb66262fd670587e4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.1-de8e1a2-202402191010.0_1708337521370_0.5938187983263596","host":"s3://npm-registry-packages"}},"2.1.1-07b531b-202402191025.0":{"name":"@flowfuse/flowfuse","version":"2.1.1-07b531b-202402191025.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.1-07b531b-202402191025.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c0e17b670a645e272c720304f202a0418f85d193","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.1-07b531b-202402191025.0.tgz","fileCount":316,"integrity":"sha512-UpsL94R/hDciK/+noWKw/UJeEDDbyf1YfaXSxl+LYGrNHvIpGCr8dJVub7OmlTcUNFi27SjAWsnmG9s/VHx+Iw==","signatures":[{"sig":"MEUCIQCoFaAC6TM6rqIULMsyPcfJl+N3sDGMtgSRb3dHbcnavAIgYL5VVnd5Oo5MsU0fy7YiFPk5c2QstIUtuwHa+3TUDro=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6831473},"engines":{"node":">=18.x"},"gitHead":"07b531b09e2eeda9b11080b372831efa61cf6626","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.1-07b531b-202402191025.0_1708338368292_0.3826861594817774","host":"s3://npm-registry-packages"}},"2.1.1-f0a0f03-202402191112.0":{"name":"@flowfuse/flowfuse","version":"2.1.1-f0a0f03-202402191112.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.1-f0a0f03-202402191112.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a3d8ee982afd286b1b0517f292620d194da4a373","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.1-f0a0f03-202402191112.0.tgz","fileCount":316,"integrity":"sha512-4zPutTFpzAiYabFy8eAiGvqePHg0A/17xDMO99YRoCDkitMxOw8AAj1bJuwK1ygleadWtepoQ+R6CdAXOSIJcw==","signatures":[{"sig":"MEQCIBy5hviaK0PJYQL/Qg51mk8q1DjHMVItkjPmWk6YQghqAiBy46MzhkpNxci5jAiVARZF3J/n2dlhV1mnUdroaY2HJA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6831473},"engines":{"node":">=18.x"},"gitHead":"f0a0f03aaf1b089ed9d606e3c2be987a96fe3422","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.1-f0a0f03-202402191112.0_1708341200096_0.31581483290593093","host":"s3://npm-registry-packages"}},"2.1.1-ac2675c-202402191150.0":{"name":"@flowfuse/flowfuse","version":"2.1.1-ac2675c-202402191150.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.1-ac2675c-202402191150.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5c9fbb494663e69948feb82262e7e3a96a4fdb55","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.1-ac2675c-202402191150.0.tgz","fileCount":316,"integrity":"sha512-IJQugQ2ZUnhXg/tST1G4GMRz46cwHU0tt+FZmi3dh/IzVNnC4uPYx6gdhqgaHo940cxx6XhZnzU6n1pMQEDoXg==","signatures":[{"sig":"MEUCIQDpIDvNunm9ZqpFbk54XyOo311o2owiS5Z9DciKlMYHfAIgD7E6KV9qG/0UCXI1AG061B8oKQGIMDTILiOTHH/ZcLg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6831473},"engines":{"node":">=18.x"},"gitHead":"ac2675c21d5265261a0fccc79dda55504c6fc781","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.1-ac2675c-202402191150.0_1708343499403_0.450175079952976","host":"s3://npm-registry-packages"}},"2.1.1-8e31538-202402201002.0":{"name":"@flowfuse/flowfuse","version":"2.1.1-8e31538-202402201002.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.1-8e31538-202402201002.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"eb9458ed2761a8f6f99c5e954cc5e46c199be2b7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.1-8e31538-202402201002.0.tgz","fileCount":316,"integrity":"sha512-xLs34AgMPe+N5mg5QDD8DxF/94pZoE7RLc0cEOdiezerOwfp8/r4TXftkGRmITGsWzj2VrRrO+HJYCxhVHgq8w==","signatures":[{"sig":"MEYCIQDrBo1vvS5QnXBIc4lPIkZp7RghpzWnp4ArLYTIYnqnkwIhANhy3m7saqBIGn/lHnsju8jcTDB/LfSUpB090mBuSxq5","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6831473},"engines":{"node":">=18.x"},"gitHead":"8e315386325e28998c0b473d114689591dc2c5f0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.1-8e31538-202402201002.0_1708423441730_0.26695698075576346","host":"s3://npm-registry-packages"}},"2.1.1-3cab712-202402201131.0":{"name":"@flowfuse/flowfuse","version":"2.1.1-3cab712-202402201131.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.1-3cab712-202402201131.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c5bb83cc4adebb28e246be9d5fe62e0e92826868","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.1-3cab712-202402201131.0.tgz","fileCount":316,"integrity":"sha512-+Qf90Ml1jlAuI3Z/37FJ7Mrrx+7Gp9fkpQ62w/NNKiw398VSAh3F4PPMZS65EmoCrJhiaBxP9A5OairOPTGQ6Q==","signatures":[{"sig":"MEUCIHSmVEc1mOwVUzOCu2MVoLLCygh9KtGVlMdD9DBZ96kfAiEA4OT31xRdEBJzvCoSbCBgm4gyj4mNXy8ePon7Aum6zT4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6831473},"engines":{"node":">=18.x"},"gitHead":"3cab712dfbb925f2bcf1a8993bd80868bb2ded4e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.1-3cab712-202402201131.0_1708428774112_0.7603450949759929","host":"s3://npm-registry-packages"}},"2.1.1-24e1d62-202402210913.0":{"name":"@flowfuse/flowfuse","version":"2.1.1-24e1d62-202402210913.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.1-24e1d62-202402210913.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fac223f57fcf8cbb046326b6de322b9f4adee52c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.1-24e1d62-202402210913.0.tgz","fileCount":316,"integrity":"sha512-wSuYUNBzzs3+UI8yYK7pH6+I+GhU55qhLDm+HKvixlMgm7HFLQ/gyO7mIvjKzw+ZH5s6ZNCwnOkabILtEp2R+Q==","signatures":[{"sig":"MEQCICJ6WaZzZjbBTp+Oq83I6WggIF0eax5k/pc0NkhIyLkHAiATTbV/lk2t6p3wTAzZd4uOvQJnGqtkZAl42I/CgqbsKg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6831473},"engines":{"node":">=18.x"},"gitHead":"24e1d62923cde33eb2edebf65c0a1af296128bd9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.1-24e1d62-202402210913.0_1708506891838_0.5984663126918859","host":"s3://npm-registry-packages"}},"2.1.1-24e1d62-202402210916.0":{"name":"@flowfuse/flowfuse","version":"2.1.1-24e1d62-202402210916.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.1-24e1d62-202402210916.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6779ab758a66cb59a36d816493e29fc9a6857df1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.1-24e1d62-202402210916.0.tgz","fileCount":316,"integrity":"sha512-n3SXjS0s5gWBCTTyKQCTLwPyT4KZqJHP9KigxIUVqd1J6iCTkoLnermGT1uuldWQp1wkGVV819FTYiLD7v/h3w==","signatures":[{"sig":"MEQCIEhUSgPnboAaaKXXM8mCFSWM/y9r7LyN0gRRuV5vebzHAiAybHd9KSTuuSCnBGW11JO/k7NMUYWQmTjfCfz1I7prrA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6831473},"engines":{"node":">=18.x"},"gitHead":"24e1d62923cde33eb2edebf65c0a1af296128bd9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.1-24e1d62-202402210916.0_1708507048539_0.9127531415262047","host":"s3://npm-registry-packages"}},"2.1.1-24e1d62-202402210919.0":{"name":"@flowfuse/flowfuse","version":"2.1.1-24e1d62-202402210919.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.1-24e1d62-202402210919.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"333145a030e665eb43a1ab484096b15301a294c1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.1-24e1d62-202402210919.0.tgz","fileCount":316,"integrity":"sha512-s4ZW/BQyQ0U9UT7ddBwqixbnxjitVfLR52CFsNPkd1P8DZaA9rsMPC0uBWdNUT9I379KuJ7cD/i/QethLaw9ew==","signatures":[{"sig":"MEYCIQD/PnO1CrXAvthWtK+LWkUN4Ff/AAfgLHn4uZcTXfZbRAIhAKnD2heiCtoM88b9+D45pCrqjE6yIFUO9ajgL8khpRfh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6831473},"engines":{"node":">=18.x"},"gitHead":"24e1d62923cde33eb2edebf65c0a1af296128bd9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.1-24e1d62-202402210919.0_1708507254490_0.7802511360089182","host":"s3://npm-registry-packages"}},"2.1.1-ca1b89b-202402210944.0":{"name":"@flowfuse/flowfuse","version":"2.1.1-ca1b89b-202402210944.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.1-ca1b89b-202402210944.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d73534a33c97a033a0c302b0cd85a10d0a40a7ca","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.1-ca1b89b-202402210944.0.tgz","fileCount":317,"integrity":"sha512-xapOU3aGYtZv24gsa4sOLDJZfKBf4y7i3c5F0tIjult75I2os4JgPwYFmgpT1fSNVhwuqxfitLUCPcWor8cz1A==","signatures":[{"sig":"MEUCIEqNcEEs9NS9aNTlFDGaxcERKT+DgO59F1CvNlRrMCGFAiEAuUfFPp9t/VMOQEuu6BlzxH8Ug6DlXjbFsVubkNt3ycc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6833859},"engines":{"node":">=18.x"},"gitHead":"ca1b89baedaa8d1dba35e1bed221987b4e3011ee","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.1-ca1b89b-202402210944.0_1708508744881_0.6232981478365047","host":"s3://npm-registry-packages"}},"2.1.1-ca1b89b-202402210950.0":{"name":"@flowfuse/flowfuse","version":"2.1.1-ca1b89b-202402210950.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.1-ca1b89b-202402210950.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"804ec61a250ee3682b339383ab977d6cb0cc39ce","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.1-ca1b89b-202402210950.0.tgz","fileCount":317,"integrity":"sha512-hpjYPFolUz0Otd77f5i0SD4DSU/Mw7v91GyiaUxk+nyHf9FiczCrWNjOlw+T9ZZlKOO0ujfR1KyFol75IhN1uA==","signatures":[{"sig":"MEYCIQDgc+usi/wGfvP91wIBMjLWO2JApcFmjGROMs11vh7JqwIhAJItUrsTnROAAcGgzpinjkae62k0f/DlqL4BU/cjJYST","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6833859},"engines":{"node":">=18.x"},"gitHead":"ca1b89baedaa8d1dba35e1bed221987b4e3011ee","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.1-ca1b89b-202402210950.0_1708509089601_0.03342517002437728","host":"s3://npm-registry-packages"}},"2.1.1-6e8647c-202402211918.0":{"name":"@flowfuse/flowfuse","version":"2.1.1-6e8647c-202402211918.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.1-6e8647c-202402211918.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"149f0ad0b006d3efc101548b3c55b7280112860e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.1-6e8647c-202402211918.0.tgz","fileCount":317,"integrity":"sha512-P40b70yPbUjQ2GBTVCRH4BwJdFDbFAGag1yBxWM8f0wJlbqAtxfNV1FkYBrWj1CmaWgBihHqOeK1j8P+rnWL5g==","signatures":[{"sig":"MEUCIQDGkg/HC7LmiXz1mTyGH9xhkPUMxJENW1M9OSI3SQE3twIgSZpQnkW9hVpCbs9ViRzuWmcMoV3eael0ApCymC5gLqs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6833859},"engines":{"node":">=18.x"},"gitHead":"6e8647c458e2aaa9b22a562beb2c4753e0817a08","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^16.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.1-6e8647c-202402211918.0_1708543191400_0.3605174348132125","host":"s3://npm-registry-packages"}},"2.1.1-54f75e9-202402220939.0":{"name":"@flowfuse/flowfuse","version":"2.1.1-54f75e9-202402220939.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.1-54f75e9-202402220939.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"925b38b9e30e06ae595b92e10959b1004a8d0717","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.1-54f75e9-202402220939.0.tgz","fileCount":317,"integrity":"sha512-amZm8jBB6ZJVeF7zgaQStxd6aAiW0hnC9xv+fYgPRhIZW8+7p4qzJZn2KoyNE51A1+k77QDahMuono5w4VUFYg==","signatures":[{"sig":"MEUCIAzbN7sAhLf7lDYW6aP3D5sbitYHEK+MLqFGyej7GqfEAiEA3Y1orxVgrr8jNiLWJTrc8qY46LveF48ho2R24gF5jtE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6833859},"engines":{"node":">=18.x"},"gitHead":"54f75e986da06f119c22eaa84f51f329ea3427af","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.1-54f75e9-202402220939.0_1708594860014_0.9177507574733843","host":"s3://npm-registry-packages"}},"2.1.1-0b4e1fe-202402231433.0":{"name":"@flowfuse/flowfuse","version":"2.1.1-0b4e1fe-202402231433.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.1-0b4e1fe-202402231433.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"75ab3ba8f9737bfddc6e266002d72c9cee36a9c2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.1-0b4e1fe-202402231433.0.tgz","fileCount":317,"integrity":"sha512-Ko3IBGejrg6Ma74rlSHCJe8mBGLLIM7/xdN1Mnf9H62CJpHW8H1PJYs9WKPmzC+ZLQfnuUguTbcv+HrXXs0ujw==","signatures":[{"sig":"MEUCIDtSaje2OUT1Nr/P8XsDESadVfwuRgki7Jdol5imL9y2AiEA+s8FthlILbIUhNyVuT/rauld7AN0TIny+TseyTkWboc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6833955},"engines":{"node":">=18.x"},"gitHead":"0b4e1fed64accbbe5f450451935ef9c488ba89df","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.1-0b4e1fe-202402231433.0_1708698895778_0.7393288997067069","host":"s3://npm-registry-packages"}},"2.1.1-d281b22-202402261349.0":{"name":"@flowfuse/flowfuse","version":"2.1.1-d281b22-202402261349.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.1-d281b22-202402261349.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dc93a10eaeffd4adce920c94b4bc09ae604ab35c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.1-d281b22-202402261349.0.tgz","fileCount":317,"integrity":"sha512-7JjaSvuBj2o2wunmzOkAUvQIVaWPw/yYn0AYF8ih8mSDImUqCQDLsjKKcMPRVwecy/F8EiKu+ehAAUTztZb8aw==","signatures":[{"sig":"MEQCIGgqpJU7xN/h8qgIFEz3bxPGQedlTWPLmZozsvg/6LTeAiBwiPtsN3oZ0ywRhKiBcvdRWbIbk/Gn/Tcx8QRpr7iDHQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6845389},"engines":{"node":">=18.x"},"gitHead":"d281b22608832445adf73b8a2bca65e0f878f36b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.1-d281b22-202402261349.0_1708955432196_0.852206896522252","host":"s3://npm-registry-packages"}},"2.1.1-335538c-202402271725.0":{"name":"@flowfuse/flowfuse","version":"2.1.1-335538c-202402271725.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.1-335538c-202402271725.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"28740ad76a5ce9f53c00caa9f8f79c7dd0d05fde","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.1-335538c-202402271725.0.tgz","fileCount":317,"integrity":"sha512-LmQlJvQ0Eas9QtjDmDhy21bH8VWn7Obr/w15c7HNFvnpLEThPE7Y2v53PWT2Ok9eDcmYqa96aczXujBAkykt5g==","signatures":[{"sig":"MEUCIHg2q0UD5QrkHMRGTeop3mHVMy0QtJDx/DPo7zeEMCKMAiEAwLXsdd6/6Zsatu7Do32FMPVZoz2K3wPlg54ds31eNKk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6845389},"engines":{"node":">=18.x"},"gitHead":"335538c2ce15782a86b402203e0e7cdc566a97ba","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.1-335538c-202402271725.0_1709054774709_0.9145290625273903","host":"s3://npm-registry-packages"}},"2.1.1-335538c-202402271757.0":{"name":"@flowfuse/flowfuse","version":"2.1.1-335538c-202402271757.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.1-335538c-202402271757.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e05142c4f525dc9deeafcc54bc22bfc7eeeac113","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.1-335538c-202402271757.0.tgz","fileCount":317,"integrity":"sha512-h9Jwoqidnkf7W+5+pu2HNok76SEdxjl5je9OxdbUBC0riC9Bjm4z1y/HjiYZBmexgoiK4KDEgRKTR4YQrvsrMg==","signatures":[{"sig":"MEUCIDX46PdGMjHoIfGETZHMP4sMTUoVxHop+jNsDV29XPXUAiEAhsZ+bzlSaX+lxJol0MFbU5YE5qwQiG8gZvTnenHm4So=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6845389},"engines":{"node":">=18.x"},"gitHead":"335538c2ce15782a86b402203e0e7cdc566a97ba","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.1-335538c-202402271757.0_1709056752655_0.716165665377092","host":"s3://npm-registry-packages"}},"2.1.1-1160256-202402280949.0":{"name":"@flowfuse/flowfuse","version":"2.1.1-1160256-202402280949.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.1-1160256-202402280949.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2ed69ef88b91beddc098930055abfeea550051b0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.1-1160256-202402280949.0.tgz","fileCount":317,"integrity":"sha512-mlMqfWRWiQeV+HNhYH5fM3Lgmr/Y4scJwgZk7Nbuiify0o0hWwpf9kIwocCRc8pUswbnj/9nXnvzfO+VODg3kA==","signatures":[{"sig":"MEYCIQDS6xipC4IlUloWlvXhdlwD1t+izZ2QWPLR6UZ8sPfWGAIhALGSP9xMXe1FfkOLfZRYpM1gyFD6XZIiIaCdvOHTJPoL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6845470},"engines":{"node":">=18.x"},"gitHead":"116025615d24b52b8886f5c356fc76202d421614","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.1-1160256-202402280949.0_1709113848292_0.9153009524832745","host":"s3://npm-registry-packages"}},"2.1.1-1160256-202402281120.0":{"name":"@flowfuse/flowfuse","version":"2.1.1-1160256-202402281120.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.1-1160256-202402281120.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c9aef4b3f24153dfe69053b41a1e4a3fa2cfa86f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.1-1160256-202402281120.0.tgz","fileCount":317,"integrity":"sha512-sy62wqUb7MOF8fEumfJu9ezpWrRj0n125vWDbaONAyXpQ1G5F2V/3bFFRfWeJOUTWEPdYyPM5vuH/1RwoLtAOw==","signatures":[{"sig":"MEQCIB5BbqGc1DaobqXAeEG65oaPCN2VtfQtk3T68BkGMXeYAiBc5vBin1HpHc5ezuHrgvspOuWME98VZkeE13UeWUDCUg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6845470},"engines":{"node":">=18.x"},"gitHead":"116025615d24b52b8886f5c356fc76202d421614","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.1-1160256-202402281120.0_1709119328916_0.9441109186571215","host":"s3://npm-registry-packages"}},"2.1.1-1160256-202402281139.0":{"name":"@flowfuse/flowfuse","version":"2.1.1-1160256-202402281139.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.1-1160256-202402281139.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"377545b15dc398a694f91220ff2f80d190f97df9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.1-1160256-202402281139.0.tgz","fileCount":317,"integrity":"sha512-LXAmfnYkIm/N7e84lyrzsPMtw4uGudMyi2CvZNKIcOClLccblndrbcozl6zGC5aIOHm4SJmk8oki72TYSWwmyQ==","signatures":[{"sig":"MEYCIQC7+i6OlK8NzkDSjlsLuEUn9NVhFxw8IGtxFCtzEy9ZkAIhAKyewSoWJ/RuoZYM9BQlN1EywbM9LZA2jB8F5eB6hktq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6845470},"engines":{"node":">=18.x"},"gitHead":"116025615d24b52b8886f5c356fc76202d421614","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.1-1160256-202402281139.0_1709120455676_0.24245259915603312","host":"s3://npm-registry-packages"}},"2.1.1":{"name":"@flowfuse/flowfuse","version":"2.1.1","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.1","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"80f0bd8ac4923224fe29bb0bd710631065273985","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.1.tgz","fileCount":317,"integrity":"sha512-2YyUOvDxWQvfOpRTUpnUqNCCLPLC7qtJ4X+xGcRTz//i79NEZ3042yVZc7qXyR8UB8h+7Tkw6apsGi+nA5r59Q==","signatures":[{"sig":"MEYCIQCQhcMhBCEgK8D92XiwmFw/Chh2tLFv6AniQ+X/uv35IgIhAN3WViNJXOqAZq8YHayKJWBnp7WsHYxtwuIrSM2HPIKy","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6844523},"engines":{"node":">=18.x"},"gitHead":"be21771c8ddc24bfa786bad54f8029ec4abb3495","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.1.1","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.1_1709121265627_0.18747927121128094","host":"s3://npm-registry-packages"}},"2.1.2-be21771-202402281201.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-be21771-202402281201.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-be21771-202402281201.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fd6c70fd28988125e236e8fe4fe7a5f52c904a76","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-be21771-202402281201.0.tgz","fileCount":317,"integrity":"sha512-k3GG5rdt4ntiiqw/xsg59H3l5g5tCALQs9OnZnevrsw6uiIM9gIa2PhvR8rW4Nxfgv4CfE4uHcLnY28KokBZAQ==","signatures":[{"sig":"MEYCIQCAn5txBl+++4E6BsBLW55Pm/AEaqsHcF+/GBIhIQG9NwIhAKt6d7qYMlgtZaR4S/Gy9W67EZierYVsVOS9rj4s19Ta","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6846524},"engines":{"node":">=18.x"},"gitHead":"be21771c8ddc24bfa786bad54f8029ec4abb3495","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-be21771-202402281201.0_1709121752221_0.288634282720591","host":"s3://npm-registry-packages"}},"2.1.2-2badcf3-202402291544.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-2badcf3-202402291544.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-2badcf3-202402291544.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c3b9bb85d2c8d19f659db06606b9873b611b3a17","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-2badcf3-202402291544.0.tgz","fileCount":317,"integrity":"sha512-Kb3s59n0+/vEzrDO12TDRuYjl/pEJAHefn6xoiu8QXjYiZSzc+v+AKMCL771mThXWePczmkRdK0rrkeKGJdEhA==","signatures":[{"sig":"MEUCIH8hN3tbVxpj6m5Bz6JlrUfp4K37VggUjlZb7GRbzHwcAiEA24Cr4CkB6oohz4zTQVpfDz6pmnQapJaWzad+o6SNZsU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6848293},"engines":{"node":">=18.x"},"gitHead":"2badcf332f7ecee8b33ab284f858d80e637d48fe","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-2badcf3-202402291544.0_1709221553347_0.08934646718872141","host":"s3://npm-registry-packages"}},"2.1.2-6b1332f-202402291613.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-6b1332f-202402291613.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-6b1332f-202402291613.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"24622d32d3aaaf2180252a210fcdf03a753f63ef","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-6b1332f-202402291613.0.tgz","fileCount":317,"integrity":"sha512-7Ncu/j4vBmX8rrW9z1T4YJ7bC7YsS40c1U71za/89MiRks0rcegmGWTk2XWDpi5TgPl//UF5ORfIYt+A4gMOGg==","signatures":[{"sig":"MEYCIQC+vC3E9mGD+UNErsvZlyOPlEp3MjwGdkFUuM4bPhUCDQIhAO8EKvTxvbhSLlEJ9Fv+xWRrnHJnbxFoQ9HZH7X4ZZdK","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6848293},"engines":{"node":">=18.x"},"gitHead":"6b1332f564d4664b31105d675fe26d0f510738c6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-6b1332f-202402291613.0_1709223258457_0.6425710943871732","host":"s3://npm-registry-packages"}},"2.1.2-de527e0-202403040931.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-de527e0-202403040931.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-de527e0-202403040931.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f6321a9f454aa04454c16e088e5dd0a373785b58","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-de527e0-202403040931.0.tgz","fileCount":317,"integrity":"sha512-s73wqRV1EcJPhjLnLE5UWUZ3ibuHMhP8dsV+BvC1qX0airZ8ccpFBqYJxvZKYUkuyv8WdsYsRe+pdsb4Zc7IyQ==","signatures":[{"sig":"MEQCIApYxD5Xkj+WAlL7ApWZLTY3bmLERhmFbKEfU+w6XBh2AiBcoo75RPqnoXIKIwdovzgnwVZy5y7XHwIhwWjzcnzXfA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6848293},"engines":{"node":">=18.x"},"gitHead":"de527e0dc6f16e2913245a19a23c39205d0f7b2a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-de527e0-202403040931.0_1709544746201_0.6514304659069319","host":"s3://npm-registry-packages"}},"2.1.2-4ade4c3-202403041059.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-4ade4c3-202403041059.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-4ade4c3-202403041059.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"95ba53bd8b6637364ee0b8d372481f3e2cee2a2d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-4ade4c3-202403041059.0.tgz","fileCount":317,"integrity":"sha512-J/cEMDjEzNpk31+nPcAxxNkZ7oZNBUgDTskHDZA8EGN37nyqW7bQzlZsXs06RceYndsS6y3r0iVQLlZ61iMrQQ==","signatures":[{"sig":"MEUCIQC0mYsrxgU8uOMlSY6wLy26ZWN8iG0MwMAkyKznWELOpgIgOzIMcdTZOg32YZIMOa9KfTXMD50zQII7t/p5MG2paNQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6848302},"engines":{"node":">=18.x"},"gitHead":"4ade4c300544fef1daba241162cbb6debada9838","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-4ade4c3-202403041059.0_1709550054532_0.5266931184878658","host":"s3://npm-registry-packages"}},"2.1.2-f389674-202403041206.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-f389674-202403041206.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-f389674-202403041206.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f32b551472e5b689b687ecae05b63653d04bdd7c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-f389674-202403041206.0.tgz","fileCount":317,"integrity":"sha512-vfWMakCGLBIjWMJXFOSsQnXuoRogQ4wNws4h5b12UpHdME2AvH0+bM6j1kZOM0MZmOK/ud074XiVDZQ8pmcDYg==","signatures":[{"sig":"MEUCIQCdSVps3/aDSiFlJJTW5jaCagB/LPAwaix6tnxxFIntagIgUPxqXFqoTO8vsujs8eSjpPVvCWDc6OfAn2BKcwMQ/Qk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6848303},"engines":{"node":">=18.x"},"gitHead":"f38967498550803692e0ae6014529ef150ce16b4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^6.10.2","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-f389674-202403041206.0_1709554032176_0.7867943528342172","host":"s3://npm-registry-packages"}},"2.1.2-114a8a5-202403051058.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-114a8a5-202403051058.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-114a8a5-202403051058.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c49e8944b3f8cf4d560fdaf66c3e10b1cd781e7d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-114a8a5-202403051058.0.tgz","fileCount":317,"integrity":"sha512-wUNGhZ8+Gy5d/RhmW1T412ueywy2EbVPB3Vv8HiBu5K/Vhg/TK5NeK7Kg9OoQAzQ6d4ctOT7KHjnTdv7xepx+A==","signatures":[{"sig":"MEUCIG5DOZQKuk5cJ6jAv8AAZiWYDyRIsXEjItQCV4607evWAiEA6eYshhRZDlOAejPCkku84ptQNuEJ112L5K2Bpj2i9VU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6848302},"engines":{"node":">=18.x"},"gitHead":"114a8a576a4b95befa6930bb74d0555922876e21","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-114a8a5-202403051058.0_1709636381189_0.7625872712731527","host":"s3://npm-registry-packages"}},"2.1.2-114a8a5-202403051102.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-114a8a5-202403051102.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-114a8a5-202403051102.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dbacfcd83bb643561e0cd624771755c4c8cfedd2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-114a8a5-202403051102.0.tgz","fileCount":317,"integrity":"sha512-2xPLKcr59QIeqQpf7k2oHxLDzfjlZyscbE3xrhFuExaRB+nhrhDbQRtfs95yqu70yflQYPEvG4dh/tuAdJcXNw==","signatures":[{"sig":"MEQCIALSowaneCff2Y0V5y9FbWyxDiWZFx/KEKwYMk56JLXXAiBr9hpaVvEVVYzDC4GqtlZzzNhiXau8l+MGWuFLBeU7Zg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6848302},"engines":{"node":">=18.x"},"gitHead":"114a8a576a4b95befa6930bb74d0555922876e21","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-114a8a5-202403051102.0_1709636625462_0.8363034928504365","host":"s3://npm-registry-packages"}},"2.1.2-826bd37-202403080957.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-826bd37-202403080957.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-826bd37-202403080957.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dc0f0c1a77777d0c0015b38aec4dceada32c6f0c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-826bd37-202403080957.0.tgz","fileCount":318,"integrity":"sha512-dk7b55DQESVtR+WjecUPZJfiQU03qdbwLIAMnP4o1NliQHX3JA+P8IhBRmGhgS7VI3JetmGfQaO7zRPNneFNfQ==","signatures":[{"sig":"MEQCIFvBmhAp/IqlXnygYVAdamKHfpw6pymc5rnGGjdPA3LiAiAemalZjrj53Td3NaSgtEPn3ms9x4gbHhFGfKDlVtqUfw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6853261},"engines":{"node":">=18.x"},"gitHead":"826bd379574c7ad31a7e2f58b9e33b7e117d625c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-826bd37-202403080957.0_1709891931431_0.9739672861309618","host":"s3://npm-registry-packages"}},"2.1.2-826bd37-202403081000.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-826bd37-202403081000.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-826bd37-202403081000.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b994574a135e68982be4ec14dbab3aa78dcb9a3f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-826bd37-202403081000.0.tgz","fileCount":318,"integrity":"sha512-8BkHw/7c6uOPWutZoDHQYAXWi+yIo+faxw6hs4/vuIzWNq3JeDOarYyL9NQUQG73VxqehsgiIoYS0WnTCd0J8Q==","signatures":[{"sig":"MEYCIQCh9s8p2/rk9wn0DtyFKHp8h2z/J6GoK9Mr043Mqy9zkQIhAM4SW2XFC1T1evHilKcLrmT1fP1yZZQF80fh8vymf3JF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6853261},"engines":{"node":">=18.x"},"gitHead":"826bd379574c7ad31a7e2f58b9e33b7e117d625c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-826bd37-202403081000.0_1709892087809_0.3029135669926848","host":"s3://npm-registry-packages"}},"2.1.2-d3eaf05-202403111131.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-d3eaf05-202403111131.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-d3eaf05-202403111131.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6d0023319808bf157a35c59cda76fda089f889d8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-d3eaf05-202403111131.0.tgz","fileCount":320,"integrity":"sha512-ZxzZJLESoJ0bZuFFJhQP1m4cVoeiS1fFB0lVnBMdD5HsimvsRmKB9eA0GYK6vAqS3OtCaup8ksVaQJ4K2UML9g==","signatures":[{"sig":"MEUCIFSAxlrUwohbvVDW78CDdnBnlVLbs7JwTmmndt1gkZehAiEAsRkhfzjtZZhOsCAw/qkIJXVIWt9OBHRWn0i5xEfnG14=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6874842},"engines":{"node":">=18.x"},"gitHead":"d3eaf0540d294e5da080579dd7175bfaa5d9d00b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-d3eaf05-202403111131.0_1710156746271_0.5477366946536657","host":"s3://npm-registry-packages"}},"2.1.2-d3eaf05-202403111508.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-d3eaf05-202403111508.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-d3eaf05-202403111508.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"44707c7fc40494464991e278c46ad10071c4c906","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-d3eaf05-202403111508.0.tgz","fileCount":320,"integrity":"sha512-0uSHH9fZ64AOKM/naE6jHF4W20A7zb9NBVMT4++wIftKF6g2Lwe7udmA9Ppyl6YzKv/xYDxci0DD8RBYoZIUHA==","signatures":[{"sig":"MEUCIQCdr3wOU/SjF4/4W26LqUXDf0/W9mWvG2cokR3XvNlWWQIgZyzzX2TTa6bqW1ad/QvGz+vWnM7ATSwGWBPb6Jj9wqw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6874842},"engines":{"node":">=18.x"},"gitHead":"d3eaf0540d294e5da080579dd7175bfaa5d9d00b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-d3eaf05-202403111508.0_1710169806957_0.780455186952949","host":"s3://npm-registry-packages"}},"2.1.2-a2674d9-202403111540.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-a2674d9-202403111540.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-a2674d9-202403111540.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1c10f6620de49e8f7cb372137102d9823c3486f6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-a2674d9-202403111540.0.tgz","fileCount":320,"integrity":"sha512-C12/3KiDr+EhhH92Q4PvZ13v7OnAvBv2/a94V72GoFtDnedvPzKIWzjM+MSZSJUgLWmOtrU8JMCvFTjlPXqhkQ==","signatures":[{"sig":"MEUCIQD+mtag6R263BOVh1SI2ps8NHIfkMJ+meBY52ivP/9RiQIgFPmKQHvW+KomzbM4aLfSW07Zx6zmDWmX6r4cQjmefrw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6874842},"engines":{"node":">=18.x"},"gitHead":"a2674d99e3485cd0f5efa1708ed4bafd25186954","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-a2674d9-202403111540.0_1710171701823_0.7716258046746733","host":"s3://npm-registry-packages"}},"2.1.2-a2674d9-202403111542.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-a2674d9-202403111542.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-a2674d9-202403111542.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3b7437202ad8e69283d0d1d1b385e71d62632eb3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-a2674d9-202403111542.0.tgz","fileCount":320,"integrity":"sha512-pJcz9kQXAHe3LuWxz8exS8PYZwb5Ag7kFqCxrgt/NUTx0qKCPVZXmlqsbNhpFEL+CPwCAuEGM+g4hK9D+S86Mg==","signatures":[{"sig":"MEUCIQDATxAiraPs3zVjAtly3a+5VZSYGcX7g75HbF2SugJrWwIgJO6qi3+yRmytJMSdCtD9oDFGAYLf+SonBTEL346EWuA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6874842},"engines":{"node":">=18.x"},"gitHead":"a2674d99e3485cd0f5efa1708ed4bafd25186954","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-a2674d9-202403111542.0_1710171789323_0.6459587787398136","host":"s3://npm-registry-packages"}},"2.1.2-a2674d9-202403111544.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-a2674d9-202403111544.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-a2674d9-202403111544.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"925854f1ed405306e5aa2fbf64598e31f924472f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-a2674d9-202403111544.0.tgz","fileCount":320,"integrity":"sha512-kW3mjU9yjbmSKqQr3y1H/Ly8vYQod5IdzQoHxyKCA/j6rEe4wqhF/XVP1xlSASle4PVSW+K/Gj/hjaWJWXnijA==","signatures":[{"sig":"MEYCIQCdu37B59hNP8DnG31tGo8GupsuVI7diS2F1d2kt07EYgIhAIYXE6647xXCasaMzCWFZIxgZ80HlkjtxP7ySx85Ac+d","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6874842},"engines":{"node":">=18.x"},"gitHead":"a2674d99e3485cd0f5efa1708ed4bafd25186954","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-a2674d9-202403111544.0_1710171920202_0.428854211748938","host":"s3://npm-registry-packages"}},"2.1.2-1b1180c-202403111551.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-1b1180c-202403111551.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-1b1180c-202403111551.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"afa4ec4a0e538086dcf025091a820365881851df","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-1b1180c-202403111551.0.tgz","fileCount":320,"integrity":"sha512-B2RJs6CbVDWIj61dhrkLPoEfzW4BDIKpak1DSW4vinmyOR4keGXSukONDE6fIzUf15khs388ajjOrmGxtULDYQ==","signatures":[{"sig":"MEQCICwE39DAsdU5dusbNrvGm5HAlcJCRuUreb0264/TVd0eAiAk7RIG7hgE383wT3WU0g3gYnum8vs8EAPqtkrrcz0yIQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6874842},"engines":{"node":">=18.x"},"gitHead":"1b1180c79449ec95589900d2dd7f8aef2d4c72c8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-1b1180c-202403111551.0_1710172389573_0.6662261660079936","host":"s3://npm-registry-packages"}},"2.1.2-bfd7cf5-202403111601.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-bfd7cf5-202403111601.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-bfd7cf5-202403111601.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2a8d06a05919c0d999a4191068363d3b8cae1619","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-bfd7cf5-202403111601.0.tgz","fileCount":320,"integrity":"sha512-5heMbhGuKemIT0yw+ZJOvJGbeE/EGk6SOM9Rd5tbLGJNuSlgq92+HS3K9EK0VtCv8LKqu2/ohO5+7lY4M0h4RA==","signatures":[{"sig":"MEQCIGidFbb0g0yHAxUPU2Zl4uWJJE2O8sWYl+BLn55e7ecTAiA1stBFROPrcGITynxPRygQM9V80O5/SXvZ2kOlcJEnIg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6876439},"engines":{"node":">=18.x"},"gitHead":"bfd7cf52b98e14eb9f20bbf69cf9e594f8c921bc","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-bfd7cf5-202403111601.0_1710172951160_0.6249639350086083","host":"s3://npm-registry-packages"}},"2.1.2-77cd320-202403111652.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-77cd320-202403111652.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-77cd320-202403111652.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"10539fca6f6d4de13b6215e547394666bd53cb82","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-77cd320-202403111652.0.tgz","fileCount":320,"integrity":"sha512-5dI3JcmLCWuuZ+juCeFFA4dYAxqjlyrtoqmU/TEaJmruPWKHNXZBHhT05YQjqx6XsavURwkVTxpMYG2jLAxoXw==","signatures":[{"sig":"MEUCICAyoSQFYEQghLiL42I/JzXVt6UBH3QgH/o8tFgkbpx+AiEA6N9rTzzYBFjvd6FESGk79PPTsfiW7Lw978FAsb0vXtc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6876439},"engines":{"node":">=18.x"},"gitHead":"77cd3207cf1fd9e6ca38faffa211865da30c7098","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-77cd320-202403111652.0_1710176024790_0.38942083132901884","host":"s3://npm-registry-packages"}},"2.1.2-4fb3dee-202403120935.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-4fb3dee-202403120935.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-4fb3dee-202403120935.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1267bc0e27dee97f1892871e34229a96707edbb0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-4fb3dee-202403120935.0.tgz","fileCount":321,"integrity":"sha512-+5clj2NVVOVDKWcV3mdl7lpMD4Stmh4vt+JDoA2bsCz20fC9aiVlf8AvR1dgOGiBFwaYTZJbdZSOuAMACycGBA==","signatures":[{"sig":"MEUCIA9s2+6uxpMP2m6su3ixi3mNMaWjue0r21297OsuMOIUAiEA3KMTuceaWlDcdeQt9xU1zTAupJLrH8RN6722RZqi1sw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6900361},"engines":{"node":">=18.x"},"gitHead":"4fb3deec9ddc9b3f9917fdb3844cddcfaa8004ff","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-4fb3dee-202403120935.0_1710236179075_0.5242247474849488","host":"s3://npm-registry-packages"}},"2.1.2-e5d8954-202403121029.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-e5d8954-202403121029.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-e5d8954-202403121029.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"592ddf39855c84c4643ab3de66b62f06b7513c7b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-e5d8954-202403121029.0.tgz","fileCount":321,"integrity":"sha512-QePnKUKqhb2T46YNHOIXF5629mWvjZkYvCnNy97X+qt7FfIMN021FLbxwSftb8NmYGGHTatCAzMapK1rkclRMw==","signatures":[{"sig":"MEUCID5y56aKqNUAtySzN5lJA/8GTv5aANhldn9ZNo/d4ItuAiEAxdnVOaUurpz+zF+vMC54uo56p2SYf8UC2lDDlMDgmQw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6901803},"engines":{"node":">=18.x"},"gitHead":"e5d89549ef71a3a543751e630b70e25b218cef54","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-e5d8954-202403121029.0_1710239440579_0.052786053288387036","host":"s3://npm-registry-packages"}},"2.1.2-4dd5cfa-202403121730.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-4dd5cfa-202403121730.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-4dd5cfa-202403121730.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5fc6dda357080aacf25efb90e8c33ba7d9242875","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-4dd5cfa-202403121730.0.tgz","fileCount":321,"integrity":"sha512-v/FfC2NTEY7gvq/iOPTEQICdTh8MOIqbPoFq9J6KEeO/XTtvxJhNQ6pZRdTVBgrUem/FB7N2n5bTFSuSqVBAwQ==","signatures":[{"sig":"MEUCIQCJ6Zjk0FzdBVaWZAB3mamoRp/Ci1aUBhZZ0Dpp7ZB9yQIgXqqs7QA4VoQACVNrZx2pXA6SWmRWH4hV2zQSB6iJwfs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6901803},"engines":{"node":">=18.x"},"gitHead":"4dd5cfad473f18ca7b8a94105728f7d344e16811","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-4dd5cfa-202403121730.0_1710264668841_0.6651347878071681","host":"s3://npm-registry-packages"}},"2.1.2-ed98388-202403131008.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-ed98388-202403131008.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-ed98388-202403131008.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"03fa36c3ffbdd8b9b21ce03fe5184409b8aa83c2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-ed98388-202403131008.0.tgz","fileCount":321,"integrity":"sha512-sgRBcI7JjKJOL9W2VIoPUS+huzdwAnRfvyyXLNJp6s/xRyedS8HHhdzLmW2MyGiR7NKyVZtMcYzcqFdekAFADg==","signatures":[{"sig":"MEYCIQDfprhWnABo9W4kw0+v8RrNdNE/RB8HzO9eed+3ZkAsWAIhAPFR3DLHuBHdw6IMCoCuM1OOhU/P73R8JYP66l5V0YA7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6901803},"engines":{"node":">=18.x"},"gitHead":"ed983883bd2773293b1ddd502bbe17a23469c2f8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-ed98388-202403131008.0_1710324589119_0.7241884518396859","host":"s3://npm-registry-packages"}},"2.1.2-bf6bcee-202403131045.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-bf6bcee-202403131045.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-bf6bcee-202403131045.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"454249fdba3d07fca3fb4e8b72ebcac1d94209f8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-bf6bcee-202403131045.0.tgz","fileCount":321,"integrity":"sha512-pXr7ZPguY6Hbm/Ze/qleFuffszQaZrfhA/2jczrjm91aYjuD9lUUkC3FDD1bwX7E0i+gjggPph1z3sibSKG1IQ==","signatures":[{"sig":"MEQCIEycyXPd+QNHTFsjtDE3xpfQDZTkfSemLaNEjzqZooVaAiAfbLnMwbcohIlMGASyHtDtMK3jjtDY9CgA+9Zm/GizUw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6905570},"engines":{"node":">=18.x"},"gitHead":"bf6bceede4554a81e43c3ae7696a83f2c5adb48b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-bf6bcee-202403131045.0_1710326796587_0.1122362749685657","host":"s3://npm-registry-packages"}},"2.1.2-bf6bcee-202403131048.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-bf6bcee-202403131048.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-bf6bcee-202403131048.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"94321cd69fe1bfcb390652ee1fce4d8ad78da548","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-bf6bcee-202403131048.0.tgz","fileCount":321,"integrity":"sha512-Hlb5j3JlVCqpFKjRuxT347mVYk6B2XuZGHsSR+IDwfMRA0KJCtgx5mi5UdA9aDnFJPvSQpt8OLrWBxC2AAtbiQ==","signatures":[{"sig":"MEUCICz1xQU8YY+auv8WSyXgVuyFF57sPwNnFz5TaQnQgNKiAiEAkzYAp9YbNg/J11XazJWkCbHCOpsPciPAx1i8yItq8BY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6905570},"engines":{"node":">=18.x"},"gitHead":"bf6bceede4554a81e43c3ae7696a83f2c5adb48b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-bf6bcee-202403131048.0_1710326967066_0.4711732409937963","host":"s3://npm-registry-packages"}},"2.1.2-bf6bcee-202403131149.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-bf6bcee-202403131149.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-bf6bcee-202403131149.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cdb3227a7c57231bc55410e443db9478e639319d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-bf6bcee-202403131149.0.tgz","fileCount":321,"integrity":"sha512-oDhKCfw/hTs7bH59Yb7EaUtMMqgC6rrF6VVxfUfpDSOULDMyMS19rBbYGolJqgzXXyhaZcmJ2FSbVlHD13FENA==","signatures":[{"sig":"MEQCIB2/3digcXNvMCZ3blB15cklTLnl2wIMVLetP7GBaEl7AiAfijv0EF2sVKW0e882ejGGaond41o2U+Se0dwv+HDyRg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6905570},"engines":{"node":">=18.x"},"gitHead":"bf6bceede4554a81e43c3ae7696a83f2c5adb48b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-bf6bcee-202403131149.0_1710330639345_0.5938201538221917","host":"s3://npm-registry-packages"}},"2.1.2-ac9b70b-202403131205.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-ac9b70b-202403131205.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-ac9b70b-202403131205.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"149c4bf11792ed2859c1c228770564bb9742dcab","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-ac9b70b-202403131205.0.tgz","fileCount":321,"integrity":"sha512-xKEUmCfYwLOqKWOPlbHCuo2kWtex/ghANQ5JlmsoruKoTga4+kqK/wFIN36YNSxlQPCvclWIulXDlEN4FhwhSg==","signatures":[{"sig":"MEQCICizXBAQjLJ0J0B4aPnVwXACL8hPr7Wr1eDrwnVj3+SyAiBcUrddoP6vpw2/f7YQbll4PtX3gZ3hu/r9oH8YjuSxMw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6905570},"engines":{"node":">=18.x"},"gitHead":"ac9b70b5dbd7fc68a4b8d87d47d1fd26e714bd2b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-ac9b70b-202403131205.0_1710331597948_0.500271768752999","host":"s3://npm-registry-packages"}},"2.1.2-ac9b70b-202403131207.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-ac9b70b-202403131207.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-ac9b70b-202403131207.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"acee491710034cfbf6c13d605fb34b216b7239a7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-ac9b70b-202403131207.0.tgz","fileCount":321,"integrity":"sha512-lnMQcTwJiH7aK1BPhp4QYD8jcppV/knk/sPf3mI5OiK/GZFVQx3wdGbGkW39rcOjFr41dDnHKDn12IR0QqKLIg==","signatures":[{"sig":"MEUCIQDlBlVEuvGoZb56gb76ZWiJ7q8SAf8mSTNrYX0WW5zWPwIgNv60OStx27AXwc2gITwRXDdXRbpMy9SLpwr5s4kTST4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6905570},"engines":{"node":">=18.x"},"gitHead":"ac9b70b5dbd7fc68a4b8d87d47d1fd26e714bd2b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-ac9b70b-202403131207.0_1710331688246_0.09740691168309534","host":"s3://npm-registry-packages"}},"2.1.2-ac9b70b-202403131508.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-ac9b70b-202403131508.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-ac9b70b-202403131508.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ed7d52ebc2e0247b9193c22213f41d1176beab08","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-ac9b70b-202403131508.0.tgz","fileCount":321,"integrity":"sha512-8OfhQYriPexh6IZ+b46+2rScEYkfRuSQK/1gFIwpBIMOaMDwoxKSbIlYNhzTmHNNAB8PQvXqnj9+p7Zq/pSCZA==","signatures":[{"sig":"MEUCIBfzm/YnsicbWsXi2SGyiDcP4DuKU9skc/8plbSNi/j7AiEAz32e6rUk7/FjVFWu5LqxN+szf9gUg+eGyWBss7HsXaU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6905570},"engines":{"node":">=18.x"},"gitHead":"ac9b70b5dbd7fc68a4b8d87d47d1fd26e714bd2b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-ac9b70b-202403131508.0_1710342558270_0.3544678457291808","host":"s3://npm-registry-packages"}},"2.1.2-1b6e344-202403131545.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-1b6e344-202403131545.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-1b6e344-202403131545.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"18f7e4780505a067eb2281939d080c9ab9397b54","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-1b6e344-202403131545.0.tgz","fileCount":321,"integrity":"sha512-ZTx26My/FLFBHCZ54faAMPLrRHYJ+/14mRWX6dxdCgBYYNuDE41KijFVJHtH4F9U5ErEJNgiUCz9EC+REjwIyg==","signatures":[{"sig":"MEUCIQDrDxrdggjytOYXAcgcdP5PxSZ5FsBbkrb7tGuCg0kFKAIgQwYVInZz8glEoRYU8Y7BHmaRY8Mq1bd/QvnvNKzOaY8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6905580},"engines":{"node":">=18.x"},"gitHead":"1b6e34471304017d09556d337e260d7cde1c037e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-1b6e344-202403131545.0_1710344784490_0.09911387735205812","host":"s3://npm-registry-packages"}},"2.1.2-c7251c2-202403131648.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-c7251c2-202403131648.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-c7251c2-202403131648.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"28a67515042990223d1281495432b644a4994dd0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-c7251c2-202403131648.0.tgz","fileCount":321,"integrity":"sha512-M77LYpeGr17YQAtrOVZCFRgkplapkrbp3ONagpWyX2aZoCZQ1iQjWsV0icocXTpIOjq+6sPrhSQesF6UKZi+HA==","signatures":[{"sig":"MEUCIQCbJ0MWy3jtNJmOe+U6CRtCRcTgXdyRYFJ1B0EfviQd/wIgQxteIChUsetltvKkNRVOUPBSsyL9PAieZE/h+Ipd8ZA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6905706},"engines":{"node":">=18.x"},"gitHead":"c7251c24f4179fba1f097d937537af07d98ba781","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-c7251c2-202403131648.0_1710348578486_0.9557304907407687","host":"s3://npm-registry-packages"}},"2.1.2-3603b03-202403141107.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-3603b03-202403141107.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-3603b03-202403141107.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"28f0317b38d82fce1fa9c73df51593eecd29359d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-3603b03-202403141107.0.tgz","fileCount":322,"integrity":"sha512-2rd2e4FouSOy4r4CjnE1g0DxyLvsMLLBD+5p1w6o2OwvbHnPLtXwzNRtri9vgu7HKYvXeX0ZzHCXTNk7bCv9DQ==","signatures":[{"sig":"MEYCIQC9hpPeCRtw7CqpUjaQnRJePsnStLz5L2UWYYKy/jgGTAIhAN8BjgYsi0toe4guhDVANWp5hr5FcS5esGgsP/5FjRo/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6933972},"engines":{"node":">=18.x"},"gitHead":"3603b034a305d1964a41b35e481875762361285e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-3603b03-202403141107.0_1710414524818_0.5755785355799701","host":"s3://npm-registry-packages"}},"2.1.2-3603b03-202403141112.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-3603b03-202403141112.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-3603b03-202403141112.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c47c75dc7e911ff4d94cfd62b0a27b4439f690ad","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-3603b03-202403141112.0.tgz","fileCount":322,"integrity":"sha512-HjXyqzStrJgaAvp8yHc8YKR3+seRJtQVxTJ4NuslHk2BQvJj/jAoeAQFU5SMmMDLFF4ad0wxEs6RXznGvyP/Ew==","signatures":[{"sig":"MEUCIFs6rezugAFHqo55jlmpCAdazLeWHoQdxhMvlJqhqiumAiEArcdyAIAj7Hpvo5slM9gGxPmPhQBw79sCSigpGivBN1g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6933972},"engines":{"node":">=18.x"},"gitHead":"3603b034a305d1964a41b35e481875762361285e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-3603b03-202403141112.0_1710414820133_0.11588747964598745","host":"s3://npm-registry-packages"}},"2.1.2-80231d6-202403141203.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-80231d6-202403141203.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-80231d6-202403141203.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3ac3554c312fc261c5be4d15a72fe03d73705ba2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-80231d6-202403141203.0.tgz","fileCount":322,"integrity":"sha512-DVekdLE8jRNXJsModjK/V7JHgnELZyN6fFjkD1A0sViQ3sBxhGC5mpcSJZ4SfwQtJ1H33u7gL9vmdDC+EWg+zQ==","signatures":[{"sig":"MEQCIA95DciwZ+tgwSv5It9TtmMAP5McFiIidFq+vbxCjjRbAiAvM+hV4TrPLISfbCjRATMo3s446/OYIKcrBTqu5H+spw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6933987},"engines":{"node":">=18.x"},"gitHead":"80231d6eb1e76005ee18630744335d71492778eb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-80231d6-202403141203.0_1710417921193_0.7303106874967362","host":"s3://npm-registry-packages"}},"2.1.2-80231d6-202403141327.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-80231d6-202403141327.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-80231d6-202403141327.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"34fdcfa439481a35cd14b506730fbce03196dbac","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-80231d6-202403141327.0.tgz","fileCount":322,"integrity":"sha512-/T0s4ESKHqGaXaQ7XE8aKy+oBIcCl80LPMok2VJ6OHN8yG4kCN6eFGUFT1meOaoahGiPn7oXIyT1490R5z7uWA==","signatures":[{"sig":"MEYCIQD9kZwUW3x2mtA08nH7w4lLkg5cjxg73LKnDePaXtw+bAIhALWwLlSIOKQduQp1AWjR0Pq9YKeFkH5z9q5gO99N5WMq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6933987},"engines":{"node":">=18.x"},"gitHead":"80231d6eb1e76005ee18630744335d71492778eb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-80231d6-202403141327.0_1710422912646_0.2260036684281086","host":"s3://npm-registry-packages"}},"2.1.2-80231d6-202403141329.0":{"name":"@flowfuse/flowfuse","version":"2.1.2-80231d6-202403141329.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.1.2-80231d6-202403141329.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b54dcab769d84a6b1715438ccb66f37d7a64d179","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.1.2-80231d6-202403141329.0.tgz","fileCount":322,"integrity":"sha512-AmHiNUCih4UXsuTSTVnBSJmYWkKCj4hd4/GM+4vOEDg3ogVlu7IEWC0kqfHm60chBf6vc17olpc7c4FpKoCdaQ==","signatures":[{"sig":"MEUCIQCjNcQeqFIP0Gbhp380/us4kJu7IzBjCUBcqBppNI9IHgIgVwWn3IJEYu5mYx5BBlqI1byNhHCOHlcyutSznQWvlwQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6933987},"engines":{"node":">=18.x"},"gitHead":"80231d6eb1e76005ee18630744335d71492778eb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.1.2-80231d6-202403141329.0_1710423052801_0.40369677184619457","host":"s3://npm-registry-packages"}},"2.2.0":{"name":"@flowfuse/flowfuse","version":"2.2.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"97e46dc1dc906d4fe0d2bdd4ba3de2bf236b757c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.0.tgz","fileCount":322,"integrity":"sha512-98zXLmwvlvpdAkCqLtf1jhsC39OBljzbu4/AzDfiNqclPCHpOv4YDgtVCwWb0j0M1tJaez7JfuKFxii1erI5Yw==","signatures":[{"sig":"MEQCIGu8NYTgu2aC+b6It+UCRUMzx9SKxjSl45UB7+fvyZW/AiBlVSS8gXjmuvAnA9CHxNAWHat+x5Hdcr0PBryAVu0cZg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6933960},"engines":{"node":">=18.x"},"gitHead":"c33913f7fdaa31518341340ad61738de65b36006","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.2.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.0_1710423462274_0.077751951090411","host":"s3://npm-registry-packages"}},"2.2.1-c33913f-202403141345.0":{"name":"@flowfuse/flowfuse","version":"2.2.1-c33913f-202403141345.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.1-c33913f-202403141345.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2b3d382d3e431e444095b2d9f16ce3bcf4b2888d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.1-c33913f-202403141345.0.tgz","fileCount":322,"integrity":"sha512-YIAM1iQ6b2s1tX5QD9iI+DrKcwwDEktsqhbn5HaP1bZYzKr5yBpkEN+TD/EfQhLoC/hCA5WvT3YbKtZRqeUOdA==","signatures":[{"sig":"MEQCIBuePHotjSx3M7UNQDvj1Ew3he/aEVr7yrBYJIX3BqbZAiAFLpcHdvpOz64rGAKqYpvj4943qjRuD2+isWlL+9kg/Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6935961},"engines":{"node":">=18.x"},"gitHead":"c33913f7fdaa31518341340ad61738de65b36006","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.1-c33913f-202403141345.0_1710423995790_0.5454584177510144","host":"s3://npm-registry-packages"}},"2.2.1-6204741-202403141618.0":{"name":"@flowfuse/flowfuse","version":"2.2.1-6204741-202403141618.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.1-6204741-202403141618.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"547863af0d84ff8407746c46e1e427614e0da5eb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.1-6204741-202403141618.0.tgz","fileCount":322,"integrity":"sha512-IOhqi0+CcIIeWP2bXdeBSvd7D7e1mEd03cXUqWjl/pzVnaPG9nzEXUJh8Q7JeChVcvvBps44CFm2TcxT9aTngA==","signatures":[{"sig":"MEYCIQCk6Xny8vkb0h6lNggHjL3lLfJckXRZqVD3n6r0C00FUAIhAJ9eMHHEAEyIfeYmjj7FQEXyTzLZVjwFJd8QbD1VS5C+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6935961},"engines":{"node":">=18.x"},"gitHead":"6204741da77a1924db0fbb602ad5d06dfaf53091","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.1-6204741-202403141618.0_1710433185550_0.10058326917794669","host":"s3://npm-registry-packages"}},"2.2.1-e5d8b6c-202403151113.0":{"name":"@flowfuse/flowfuse","version":"2.2.1-e5d8b6c-202403151113.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.1-e5d8b6c-202403151113.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"07c3f35f4b9d35c74dc1f9504c2e784ef0080016","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.1-e5d8b6c-202403151113.0.tgz","fileCount":322,"integrity":"sha512-TNIE0lNQP7nLVviD9zThD1Eksvqgz6/rqGDvlwvFM0P02O1Bb0qJySF2Mw24XfE1GboT+aOflKSi5uJbuCxFEw==","signatures":[{"sig":"MEUCIFFK30XA0x+DASvp4Zi6g1QM5IeNjNxoGMaJu2kcP1/qAiEAizVcuioDILrOfCsgZ8z8Lx8ZyZN8vuxStqbnSYlgjDI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6936207},"engines":{"node":">=18.x"},"gitHead":"e5d8b6c4630914c3fbf85b1f537ecc6a8f2223ea","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.1-e5d8b6c-202403151113.0_1710501260674_0.6582196384792909","host":"s3://npm-registry-packages"}},"2.2.1-e5d8b6c-202403151700.0":{"name":"@flowfuse/flowfuse","version":"2.2.1-e5d8b6c-202403151700.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.1-e5d8b6c-202403151700.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a961ac4c289e77567eeed5ef99323b9f6c2141e7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.1-e5d8b6c-202403151700.0.tgz","fileCount":322,"integrity":"sha512-F4fbvMLlh/LIvmXxuhW606I7wwFvcnJXyaE9zRlkk95weYcd77bXpxcWtIywJJFZAPXtSvs6O3qsfTeEumgHng==","signatures":[{"sig":"MEYCIQDx2Wceq5f/OwbyNGZ0pdtE8jceaz8xt385K723C8ZKzgIhAOso/Cc3Fhy6VeA/lY0sV/YTLIZqNUiC0lCo6Dus2ZV0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6936207},"engines":{"node":">=18.x"},"gitHead":"e5d8b6c4630914c3fbf85b1f537ecc6a8f2223ea","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.1-e5d8b6c-202403151700.0_1710522100529_0.11973075855709658","host":"s3://npm-registry-packages"}},"2.2.1-5eefc87-202403162253.0":{"name":"@flowfuse/flowfuse","version":"2.2.1-5eefc87-202403162253.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.1-5eefc87-202403162253.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"418cfbf7c1c4ba73f534f08a43b34c2472c0f3fd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.1-5eefc87-202403162253.0.tgz","fileCount":322,"integrity":"sha512-VodgbZjyuqL8y2TQR6462iP6ZBWdLC6SQxLlj7gkN5JUMHUrxfJs0PjKcufNR5AbpH/U1aK5LabgReGo+i4rCg==","signatures":[{"sig":"MEUCIQD3G7QH5+94Si0gs4oayOLJsLfU0drsI/qvJdACkIqIOQIgFKyeQ94zCGqw4edy3Q0vWaJlxNZJN5g66woWbZUvYpc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6936207},"engines":{"node":">=18.x"},"gitHead":"5eefc875678fbd26ab193561dbe2b058454896b8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.1-5eefc87-202403162253.0_1710629699015_0.039886560464167164","host":"s3://npm-registry-packages"}},"2.2.1-5eefc87-202403170754.0":{"name":"@flowfuse/flowfuse","version":"2.2.1-5eefc87-202403170754.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.1-5eefc87-202403170754.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a5b58cb39333d9158a53add5945d275d8e5aa6dc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.1-5eefc87-202403170754.0.tgz","fileCount":322,"integrity":"sha512-//SGQMNovmGuaoSl/Yv3cOqLVX05slS1KREyq2USIunkF8BdALew0sd/JcqgZqrmCEgIMmx9rNXcFhzFSpu0UA==","signatures":[{"sig":"MEUCIQDbcrR913NDS1sqd8gFzIobnhLqr0zQBW2MHvyGYRAGfAIgDDZ/YcPXGGqB2NtF0p5pMXC1XTp9aRCew205BN7JGgQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6936207},"engines":{"node":">=18.x"},"gitHead":"5eefc875678fbd26ab193561dbe2b058454896b8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.1-5eefc87-202403170754.0_1710662135183_0.6287543191396849","host":"s3://npm-registry-packages"}},"2.2.1-9cecb0c-202403181026.0":{"name":"@flowfuse/flowfuse","version":"2.2.1-9cecb0c-202403181026.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.1-9cecb0c-202403181026.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"04c6e02c0f7a6cdb4b85c1a9ae60e7be19820bd7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.1-9cecb0c-202403181026.0.tgz","fileCount":322,"integrity":"sha512-5AkITZG2aaRKMj+McBze7/PCrd2bfS03Db+lMvRrHIztFPWmwlxM1tF8mHVhpiGNAKFm3uYO55aFBJ35p3Oi6g==","signatures":[{"sig":"MEQCIBf5yvK/NTp5XwOunJlebsOaw1VCr2OYHpJbkM8E/W0OAiBI/yjm1JZ6cPiDCqXuzsr2zV01sQzWjaGDJUnZGl01Jg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6936575},"engines":{"node":">=18.x"},"gitHead":"9cecb0cf04eb0756edfde0517fd76c409711bc02","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.1-9cecb0c-202403181026.0_1710757660102_0.15867396914925913","host":"s3://npm-registry-packages"}},"2.2.1-bda9717-202403181107.0":{"name":"@flowfuse/flowfuse","version":"2.2.1-bda9717-202403181107.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.1-bda9717-202403181107.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ee4d69b70c1a1a3e6a569efd3ecbcdaf6ea09c08","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.1-bda9717-202403181107.0.tgz","fileCount":322,"integrity":"sha512-Xq6jAmDAInG5sOUcF6QV5u6gZF/3/3eCJ86VaYgoOyC5DsnOZ6EZJNQXWzme3rZKwGwTgSMY/GelFqcLeaWrEQ==","signatures":[{"sig":"MEYCIQCt+6Qqy1tur3VZdW4QA9ItCry8vkI7Qsv5pGpCLmYctwIhAM+0DmKLgTA3Z+94M1plIQ/G5fLra25RjaHBFD7qKRdk","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6937485},"engines":{"node":">=18.x"},"gitHead":"bda9717340ec48850e2628f2aa193e9315ecba0b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.1-bda9717-202403181107.0_1710760141378_0.3635017879275815","host":"s3://npm-registry-packages"}},"2.2.1-5eea098-202403181125.0":{"name":"@flowfuse/flowfuse","version":"2.2.1-5eea098-202403181125.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.1-5eea098-202403181125.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bb4ead27ab9d2863b8c6656665534dc081a9f259","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.1-5eea098-202403181125.0.tgz","fileCount":322,"integrity":"sha512-KA6Kk0ibSgpjTmMx2vtTSpv5Dw5yJd7kVzvYYitVNkEzsz7Q+YAW6C/5Otb+zvj0xHV1xDphYL7BQ4D1GcgDag==","signatures":[{"sig":"MEUCIQCYgO1F/E+AuuAZHE87glIXIDn+LuGdOubZuIDHiw3K1gIgPBqkSNupl4aaqolNieM9dJddLJK+Si8+yFhBb2pJuZQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6942913},"engines":{"node":">=18.x"},"gitHead":"5eea09836c17a899df1c7d946093ad3b348ed514","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.1-5eea098-202403181125.0_1710761194857_0.4763309003100047","host":"s3://npm-registry-packages"}},"2.2.1-835176f-202403191019.0":{"name":"@flowfuse/flowfuse","version":"2.2.1-835176f-202403191019.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.1-835176f-202403191019.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6661917acfda4f6d243013967680b5a2611f1ee8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.1-835176f-202403191019.0.tgz","fileCount":322,"integrity":"sha512-71jvlL0ggGXPgKj+TEAeexdP3ygussbru8O1vyvwT11jobeNuadxkKPQy0hMdSutNzdaGG8H+rCQPxqwoMTjiA==","signatures":[{"sig":"MEYCIQDEc+kt+e2K81TUMpu/IWZnLJ5kJbBM5zWxHL3XwidY3gIhAJddqg6PJxu3szxb9mkxyt5so7C9CRghcHdMETS+g0px","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6942921},"engines":{"node":">=18.x"},"gitHead":"835176f1a43b1318962714a4d0b5fdb53691ec9a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.1-835176f-202403191019.0_1710843632837_0.10665648701916908","host":"s3://npm-registry-packages"}},"2.2.1-b5f8d11-202403191334.0":{"name":"@flowfuse/flowfuse","version":"2.2.1-b5f8d11-202403191334.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.1-b5f8d11-202403191334.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bf3a5ba7c8c7a0c23619b826669a6524d7642bb6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.1-b5f8d11-202403191334.0.tgz","fileCount":322,"integrity":"sha512-TQ7AG90cr4kCLeEiN58bGvkAR5dDn6BrTBB9f/scnxLwTJa/x+S1Cif66kLUF2bNtEt8w27+bg1Fzewu8n09uA==","signatures":[{"sig":"MEUCIDZ2I7I6Kmgbrh9ymkyC9ZG8iwLuJ1xLUA1sR+zKeRM5AiEA1PhcX2bpwldemoqAgdU9xweeVoBbeikeKWcQSCXytQw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6943807},"engines":{"node":">=18.x"},"gitHead":"b5f8d114bb834789d0cad39263bcd0da522261c2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.16","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^11.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.1-b5f8d11-202403191334.0_1710855333545_0.5824575552837485","host":"s3://npm-registry-packages"}},"2.2.1-35ddb79-202403191420.0":{"name":"@flowfuse/flowfuse","version":"2.2.1-35ddb79-202403191420.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.1-35ddb79-202403191420.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e89af30bba8039085e47856a03e96bf4133ea2ef","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.1-35ddb79-202403191420.0.tgz","fileCount":322,"integrity":"sha512-luxrUEB7rioFLR20r9BXJ2qujhHV+Wffrs0qkw3srYDtB2tvVmxbBa+MwH7watKaQ5mvP1LAqG6UZPpWDSZaCw==","signatures":[{"sig":"MEYCIQCwaECk85eAvxgbbWmyJRKGjf1X62wJMKqehcTZ761ShQIhAKeXC3T5iogKe+fopU3V9hNvniUYK3/j68w8+BeEMeNY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6952848},"engines":{"node":">=18.x"},"gitHead":"35ddb790634c4b7ca0f9cfdc9288d0f85f39496b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.1-35ddb79-202403191420.0_1710858078945_0.6902913898836684","host":"s3://npm-registry-packages"}},"2.2.1-35ddb79-202403191424.0":{"name":"@flowfuse/flowfuse","version":"2.2.1-35ddb79-202403191424.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.1-35ddb79-202403191424.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"56eda9c5c8b339da2285f16b0cd95f641c456b45","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.1-35ddb79-202403191424.0.tgz","fileCount":322,"integrity":"sha512-p65SV7woflCsFLGWZ26F0cjuVIGAlcPrSJ2IRDKXOuV8IXoKuszedwGwse0tYaPH4+ChzNeEkmctUXGETw38vg==","signatures":[{"sig":"MEQCIGUeroT1v7wJdosgeU5fttHpyQkbHdVHu3lkNUXA2GOFAiBi3DeK1LZRJ6dDp7iBrPQdfCQCb3z6VwTfAjUKTBAb1Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6952848},"engines":{"node":">=18.x"},"gitHead":"35ddb790634c4b7ca0f9cfdc9288d0f85f39496b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.1-35ddb79-202403191424.0_1710858372276_0.4290361468632995","host":"s3://npm-registry-packages"}},"2.2.1-35ddb79-202403191730.0":{"name":"@flowfuse/flowfuse","version":"2.2.1-35ddb79-202403191730.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.1-35ddb79-202403191730.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c849fb417674823cc3182af0b874a8c98091a93b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.1-35ddb79-202403191730.0.tgz","fileCount":322,"integrity":"sha512-AIF43keN0srYpNbdPMgPAUsZVxfTETnK7E/Iw4w0mYExqMggrSZOhKxdahPqmjpTTu7XGUiIzpEw40YcGfRGwA==","signatures":[{"sig":"MEQCIB0P2POqDIj86RnEJxkFJSFFvbB0Z0K2hVudGIF7zBSJAiBs6hOvtmHscFcXxP2gZ2lzMhFK9pOlfn8xDPrBcFsRXg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6952848},"engines":{"node":">=18.x"},"gitHead":"35ddb790634c4b7ca0f9cfdc9288d0f85f39496b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.1-35ddb79-202403191730.0_1710869482127_0.8736888950703006","host":"s3://npm-registry-packages"}},"2.2.1-35ddb79-202403191732.0":{"name":"@flowfuse/flowfuse","version":"2.2.1-35ddb79-202403191732.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.1-35ddb79-202403191732.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3c4e4cf25325c7ba473f479240210dc4da7d10f5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.1-35ddb79-202403191732.0.tgz","fileCount":322,"integrity":"sha512-ZD8ptNaNRRBrk0LZOXbmMMBrnhemA8s2fxwItCUuRdluYTnCqwkvgJ5B1piRyI6PffUiK4vpyNvnryCMsT+e8w==","signatures":[{"sig":"MEUCIQCxd4U+7vlRKknPgx5LRO1/vzsgnlRAoaeyjv9UJBt1rQIgfJh58ulAMSwOWqajaqAD1tc9ZG1aRXwTtEyK0Y6Dfvs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6952848},"engines":{"node":">=18.x"},"gitHead":"35ddb790634c4b7ca0f9cfdc9288d0f85f39496b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.1-35ddb79-202403191732.0_1710869614438_0.8694351286398962","host":"s3://npm-registry-packages"}},"2.2.1-3150063-202403200900.0":{"name":"@flowfuse/flowfuse","version":"2.2.1-3150063-202403200900.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.1-3150063-202403200900.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"02761555792b992bb18ebf346a64de098f4b0822","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.1-3150063-202403200900.0.tgz","fileCount":322,"integrity":"sha512-pEMtlid7VBgcJ4DeT5HXLExI4IK6qAgONdJ2h5Agx9d4iEXrg2F+LqdOldPplGijBRkl19N7/w1lIbek772OkA==","signatures":[{"sig":"MEQCIGU4g+yQVCB1gASpbF7LtfSxVx0ZyUzFU5f0Y9nO0nPLAiAu4qqMa5PEbC26JHWCs8bbKYZ5nttKBW7dYMo4fhQkeA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6954568},"engines":{"node":">=18.x"},"gitHead":"3150063e5151265c59ca3900446c1368fc6d1e31","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.1-3150063-202403200900.0_1710925305470_0.9701768189240909","host":"s3://npm-registry-packages"}},"2.2.1-c045c60-202403200921.0":{"name":"@flowfuse/flowfuse","version":"2.2.1-c045c60-202403200921.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.1-c045c60-202403200921.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bbbd2703b5cf4e96174f89b416172a94c71e75d9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.1-c045c60-202403200921.0.tgz","fileCount":322,"integrity":"sha512-SIG4MHq6Fxo1ppGZSequWfS3XnAEZQUv18AyaMMRQwJXl9oBvS25MvnRMo0eN6Z8mVxslbGhs40qUHR94bmhBw==","signatures":[{"sig":"MEUCIQCLAaiS7T8ciYhXkwKfEORP7neuUAB027Q86YpYOeCwrwIgJucMoizeSXtn447xLFTPn1+LgW4NqklmpsvJcgIN0BI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6954576},"engines":{"node":">=18.x"},"gitHead":"c045c607609a52454a0934332456f85deb171384","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.1-c045c60-202403200921.0_1710926541801_0.6556377986231612","host":"s3://npm-registry-packages"}},"2.2.1-c045c60-202403201007.0":{"name":"@flowfuse/flowfuse","version":"2.2.1-c045c60-202403201007.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.1-c045c60-202403201007.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6323f673debca12338ca1a6be3c52a5ec903d926","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.1-c045c60-202403201007.0.tgz","fileCount":322,"integrity":"sha512-mE8cnJHWRILmIgoDo2OFfzedAd8latirjV/698gAEMoazYCsyiHt2jG3N4hXIZfnD7zPxV7Wpz+YVoBHG723Ew==","signatures":[{"sig":"MEUCIQDONeKeXv5+piFKM/bIIGs7kjxd4+r5/dsO53HsBueyfgIgHVh5kh2c2aUPgS24kzX6TVHb5XC9UykvA73k4T2hI3Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6954576},"engines":{"node":">=18.x"},"gitHead":"c045c607609a52454a0934332456f85deb171384","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.1-c045c60-202403201007.0_1710929327489_0.7336471903217008","host":"s3://npm-registry-packages"}},"2.2.1-c045c60-202403201048.0":{"name":"@flowfuse/flowfuse","version":"2.2.1-c045c60-202403201048.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.1-c045c60-202403201048.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fd8f11536cf8fc3aa8f4f602917c1c53267dc549","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.1-c045c60-202403201048.0.tgz","fileCount":322,"integrity":"sha512-zXFoeIJtvQloheWnPzbqldd6yv3DOwYDHrlbOlr6HOPDzuaQaFtXNU+qhXGNk0SwU58BUIEEWRPwmFpgLl40dg==","signatures":[{"sig":"MEUCIApQ6xl+eHN5+F+zN2QTCdgZI0I3O4vYj6eCLTPPESemAiEA6hBo0qcrrdjNjt6BbcBPL1NlqYJ+Efx6rMA8KbIk9NQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6954576},"engines":{"node":">=18.x"},"gitHead":"c045c607609a52454a0934332456f85deb171384","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.1-c045c60-202403201048.0_1710931771139_0.3672027515254217","host":"s3://npm-registry-packages"}},"2.2.1-c045c60-202403201103.0":{"name":"@flowfuse/flowfuse","version":"2.2.1-c045c60-202403201103.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.1-c045c60-202403201103.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"698ea47cb670b2dbd50fc800d4fa257344be93e6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.1-c045c60-202403201103.0.tgz","fileCount":322,"integrity":"sha512-tBl7nha6Wlbtmtu3354lINrUGRqmdx4bFiFiiEK75F8PwYGI9HhKSwWdQXtrK9F5SwDrvbQGTb1T0xzaU9EqLA==","signatures":[{"sig":"MEYCIQDJ5v3WD/FIPNtPu4hP7T5w0g2X8Vh2HEx1t/V9siEOSAIhAKZTLqCKWaNPDEaN0SwKegnpZyOcu9XmEWVBGXHYFd7k","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6954576},"engines":{"node":">=18.x"},"gitHead":"c045c607609a52454a0934332456f85deb171384","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.1-c045c60-202403201103.0_1710932654532_0.3774681513010363","host":"s3://npm-registry-packages"}},"2.2.1":{"name":"@flowfuse/flowfuse","version":"2.2.1","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.1","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e959084e7a64da5b21a45c6360042904940a552b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.1.tgz","fileCount":322,"integrity":"sha512-kfzK94WkxiK17uKLw7ZxrOJo/RH3S/bkleJjRKwdWH7ogarWXVVlwqDVwIahWEpytAZbK7XB4KS1nbc878sRQA==","signatures":[{"sig":"MEUCIFj0Da1edpzFDqNxb377DICubBKOUeoo75FAMZDIVIxYAiEAmsLxYwoyZh132dmrVj62L20Yrj5sn6W9dZvnmQkajDc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6953608},"engines":{"node":">=18.x"},"gitHead":"897e78e2ab99195d3dffe025a781623e07303487","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.2.1","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.1_1710943223549_0.08264949227244656","host":"s3://npm-registry-packages"}},"2.2.2-897e78e-202403201407.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-897e78e-202403201407.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-897e78e-202403201407.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2627f4c6a0f40c1930c520cc717566581a493321","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-897e78e-202403201407.0.tgz","fileCount":322,"integrity":"sha512-VTnBQLuNyqUNzgAzdGbAT/e8Qgs7B71WBh/4O9X2tUho65Az3NH7YdC0ETFySMZiW3DjlcfcsuD/lr9n28AU1A==","signatures":[{"sig":"MEYCIQCep/a7nvQ3Oo2mtawDlVVxVT5ztoGlkIvz4j9N56zJSAIhALWrGBI3XIOeeA5PQP2L/SYhDcFCblCAGQA4LfCJVmRW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6955609},"engines":{"node":">=18.x"},"gitHead":"897e78e2ab99195d3dffe025a781623e07303487","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-897e78e-202403201407.0_1710943729864_0.1741201271781574","host":"s3://npm-registry-packages"}},"2.2.2-6dc72f3-202403211114.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-6dc72f3-202403211114.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-6dc72f3-202403211114.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8065497b8c38c54ec80fc960ed21d8341304ce14","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-6dc72f3-202403211114.0.tgz","fileCount":322,"integrity":"sha512-G5oLtKVxLko6JZLSfRla6/5gvxH9NzD+QZZD/B+4p5/X7hBY0c9Qj5GvoFeVt5nBEoY7ImPAQ2RlEcGPsBvMdQ==","signatures":[{"sig":"MEUCIDJbhhMTrb3zmZjNW3isMRaa5cIBSLePcWzpn76DwSXbAiEA0hmwuZWh0pC/bLBdIJPIKGk0PtuRWy6MTJyFPIRjDmo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6955713},"engines":{"node":">=18.x"},"gitHead":"6dc72f39e93e8a00566a4259ea6ed918f8b88794","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-6dc72f3-202403211114.0_1711019722775_0.42834118123145215","host":"s3://npm-registry-packages"}},"2.2.2-3dcdec0-202403211933.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-3dcdec0-202403211933.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-3dcdec0-202403211933.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9ba905a82dc06b68b22f9e6146ae513155fdd7e8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-3dcdec0-202403211933.0.tgz","fileCount":322,"integrity":"sha512-ZSKPAtzc3zG+eHfqedHh0XC3FG6QQmKsqm7BURq5WRuVAcUzfwLu8qKoA5RwWE9xQGXp56kr2n6/GqgXgSiwVw==","signatures":[{"sig":"MEUCIGeOSSyFhqmenfRdNoO0Z1FKn+Nj6L2TLtbF7LeLPkJzAiEAkJNzFBIHzHbCxQUHpZugGgIUBbCt0eiPSJqM4fgJQU0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6955857},"engines":{"node":">=18.x"},"gitHead":"3dcdec0bd16d46344bb9c8b728bb7953f526e0be","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-3dcdec0-202403211933.0_1711049681999_0.7109462401843625","host":"s3://npm-registry-packages"}},"2.2.2-56ef087-202403221055.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-56ef087-202403221055.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-56ef087-202403221055.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a9921f842e77418331fd307b6787c17b8e69ba42","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-56ef087-202403221055.0.tgz","fileCount":322,"integrity":"sha512-1IwdBYVigQLBMmcjtFm3+W1nAqD306v0JKnri3PTrHITbjT5DywVtcrKDIqpnN6rBj+OIk3UosY80fQitCzcLA==","signatures":[{"sig":"MEUCIFJuJakfHiASv8sQTZ/vCLux22lBU3St1i2b5VtMVqyOAiEA8GveZL4yCkXdU2jqXOvfCv4xmkx1QNx7WyB4aAXDwhA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6955868},"engines":{"node":">=18.x"},"gitHead":"56ef087fdc93f1952b1dded55a7e62afbe60f009","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-56ef087-202403221055.0_1711104970693_0.6797056098555518","host":"s3://npm-registry-packages"}},"2.2.2-7464dab-202403221205.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-7464dab-202403221205.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-7464dab-202403221205.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ab46da71c5b58b180b51a1b1466eab98a945c1d5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-7464dab-202403221205.0.tgz","fileCount":322,"integrity":"sha512-HMq/4JDbFX6avuOxAhpSMn255nRe3BdyYy4yn5BTzEc2IfR3UpGmzPiqdOG1+x2J94nPXkgJigRbkeVl68aHqg==","signatures":[{"sig":"MEUCIQCoPjK9BHr+e7exUY8b7XNbez3dpWD1o1296OT/oA4MpwIgeDaFz0NjnucNkQa+/GoSwpLZn3PxSajrJhZ++b4UxhE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6956127},"engines":{"node":">=18.x"},"gitHead":"7464dab03148a2b32d45f941bb921096a142b62a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-7464dab-202403221205.0_1711109220945_0.8265225601693811","host":"s3://npm-registry-packages"}},"2.2.2-7464dab-202403221209.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-7464dab-202403221209.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-7464dab-202403221209.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9ab55ff82563ae016c9ff2377a762edb49977298","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-7464dab-202403221209.0.tgz","fileCount":322,"integrity":"sha512-eFzzfONcRt4BRoNWY0HpWLJ7Qk9hdwtK5wmc61AruoTjZHuo0Q9m/5kU2GOFM1u4+yp5q5MnFHrJTbNkJKH4gQ==","signatures":[{"sig":"MEUCIEaoEVvMwCbTm8DtpSR6+QQVUvytsNlS4nbI1nvtdRCSAiEA/gWPxGVsavhWNNnASCtPjri+rI5wJMyqmaQbgLeMoPs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6956127},"engines":{"node":">=18.x"},"gitHead":"7464dab03148a2b32d45f941bb921096a142b62a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-7464dab-202403221209.0_1711109456422_0.17996122271614423","host":"s3://npm-registry-packages"}},"2.2.2-a808d0f-202403221333.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-a808d0f-202403221333.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-a808d0f-202403221333.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a950b0e372b383f5169cee21825c77e0bb6ca4ea","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-a808d0f-202403221333.0.tgz","fileCount":322,"integrity":"sha512-0XW0qN8EsxK3QDMLyvKqwIjqski6Dcvuo4BjpDsXZZrGu9pXSF9//squOZ905KbX9vue+T7EfkkabqQKKjZsUg==","signatures":[{"sig":"MEQCIEAsZq5c8IC4WlBzMspo4w3O/d/KbzHKfYqqtH+fe3QyAiAnS0QmVPJndf3NGAmfeJvNOWZhZa68iPql05HMk/e3IA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6956127},"engines":{"node":">=18.x"},"gitHead":"a808d0f843f8e47b386b80231d0b4598c9062650","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-a808d0f-202403221333.0_1711114480794_0.04332743216584167","host":"s3://npm-registry-packages"}},"2.2.2-2c1c829-202403221353.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-2c1c829-202403221353.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-2c1c829-202403221353.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2aab46638c7c74d2c361eb4959aa49e29975dc75","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-2c1c829-202403221353.0.tgz","fileCount":322,"integrity":"sha512-vfaGX0VIWzNbxuklWf8m5pKRKXwkD6vEsnXMwnG82Ci4nfKEEQYKitKC49IbkXYnr58jx55/elhI000tiZUo+w==","signatures":[{"sig":"MEQCIFbm3S+QMHT1G2g/Faj+8/bMO//pMjYMWnI6Ci+N3osMAiBHoWNbEZLz7TiHRyA6qwkB3ukoRP0x5vZmVIZGZpMSQw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6956127},"engines":{"node":">=18.x"},"gitHead":"2c1c829109aa80942f7c19c3122532413b41f1a9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-2c1c829-202403221353.0_1711115686679_0.5871123479738405","host":"s3://npm-registry-packages"}},"2.2.2-b036130-202403251604.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-b036130-202403251604.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-b036130-202403251604.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9a190209284354902da14ea8a118393458524c69","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-b036130-202403251604.0.tgz","fileCount":322,"integrity":"sha512-iYbVM1nKrCxlnRhJMLciKPmLayjDs6Qy+Aaoua6MfbaSXaDdBeVgSOjI+s1QO59Cwfn9TaFJrTKEf0otT5m77g==","signatures":[{"sig":"MEYCIQCAsK0TEcxDtFzgEX63i0ajDkOFR40Ibuwuay1/RqCxUwIhAPcTnnkrB+yX+e3TZPMkQ6trDfJITAxKnBy+oIVdwK04","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6956127},"engines":{"node":">=18.x"},"gitHead":"b036130c992cb9fab8f5a476019b3163cf0dc010","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-b036130-202403251604.0_1711382756764_0.49379097312869424","host":"s3://npm-registry-packages"}},"2.2.2-7536e5b-202403251621.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-7536e5b-202403251621.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-7536e5b-202403251621.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"180d25926e549929b11ad2382f699db9e42277de","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-7536e5b-202403251621.0.tgz","fileCount":322,"integrity":"sha512-JFx3Wtc3yijnGrg86duUJhvDoU9wmEup+hylmh3fsEdg/En6QPIdP33cwCfJS8aTQsoNUNI14SBXN7as26s2uw==","signatures":[{"sig":"MEQCHxvg808EKUwbU4mowyOdIRi4KntqpvDyY4ckTP0ezs4CIQD8KoliSucZDp36r+ziShMMbBt3ZfhIe6ow1w8KECN5rw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6956678},"engines":{"node":">=18.x"},"gitHead":"7536e5bf78e9987ad0c8914ed14912bc6738a9b9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-7536e5b-202403251621.0_1711383735385_0.7455866722893287","host":"s3://npm-registry-packages"}},"2.2.2-7536e5b-202403251623.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-7536e5b-202403251623.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-7536e5b-202403251623.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dc8e2c4a5b196d0f8204b6a056ca7a90cb70e89c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-7536e5b-202403251623.0.tgz","fileCount":322,"integrity":"sha512-RS8N1/kPd0jh4m3UfS7F3XmjDSo+n+o2fweDPm3PYETgUCxRaZSF/o1wH+mHxvjZ6+JJLLMGFRdFUe1iBtb1ow==","signatures":[{"sig":"MEUCIQCHSJNTt2qO3V7US77Lbd8M5jbgY1DamvvXTvjrgMeCHwIgNdvb07gGMtDnlf1pVsgcjcDxgN7Zmr9LvydB5XQzXKQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6956678},"engines":{"node":">=18.x"},"gitHead":"7536e5bf78e9987ad0c8914ed14912bc6738a9b9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-7536e5b-202403251623.0_1711383866516_0.6190645591297665","host":"s3://npm-registry-packages"}},"2.2.2-1b52bd1-202403251654.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-1b52bd1-202403251654.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-1b52bd1-202403251654.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bf7763f85abc46546c9efca739f2c3b4613d9e17","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-1b52bd1-202403251654.0.tgz","fileCount":322,"integrity":"sha512-aDIrR1ikm02WA1GAwyQlhJ/z+hSDCQ/NqL7dQo6+kXVJzal+GIjEceh1QdzHtqf4vJT+ubgF9J3Zg/XXBN1StA==","signatures":[{"sig":"MEUCIQC46vGzFva8sTHTCY+lcLJluixpkpKSsycWZ3AKibJ81gIgJszTqTQGlwz8uMp8DIW16Z4OMqJDoKg7Ktvb8CxaQ2M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6956678},"engines":{"node":">=18.x"},"gitHead":"1b52bd1aa91a56594ff2c385962eef631175d3b7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^13.3.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-1b52bd1-202403251654.0_1711385716383_0.5746435648872206","host":"s3://npm-registry-packages"}},"2.2.2-9b1d344-202403261011.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-9b1d344-202403261011.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-9b1d344-202403261011.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6beb9ea61ab173769e179c8acd84466252cbdf13","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-9b1d344-202403261011.0.tgz","fileCount":322,"integrity":"sha512-2nHF3k5WZdH0PAzqoCr67Bn4gPebgZTn6b2RTm5gPUkBfjwIQgtMCfWasDjAKEvBPt09qugIFWbS8DiS0ovi1w==","signatures":[{"sig":"MEUCIE99TScIQP8uSfo/UMN/tg9spmq9tJ1nH407mhLp9ux4AiEAiFCMBwoCON6Np11mP7vUBPLYmqtQEv5ycgmgwkI0Mns=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6956678},"engines":{"node":">=18.x"},"gitHead":"9b1d344a538f88f1006a2b28dd7246e6037d0da6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-9b1d344-202403261011.0_1711447921800_0.22089874072102544","host":"s3://npm-registry-packages"}},"2.2.2-58681bb-202403261100.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-58681bb-202403261100.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-58681bb-202403261100.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"629356b9fdd44031f4bf8954f8f2dc9564ee48b2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-58681bb-202403261100.0.tgz","fileCount":322,"integrity":"sha512-GoNcEyCGiMJ9qq60dLeLjnbc8TomUbGUmwKTq36A6a8f74e9LtL5q7rWQ1fuo9duQ3M94zGheoYRPZiE1oxy3w==","signatures":[{"sig":"MEYCIQDW6TRx4d2TssuZn1hqgkHulQA1SeaL6eP5ekQSMvAWzwIhAJN2DMh21Q5kynhiAK0N4Nx8fJpCduRiVI6hSPxmDIfL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6956736},"engines":{"node":">=18.x"},"gitHead":"58681bb939c9f62eca2b129b0d44a311b563cccd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-58681bb-202403261100.0_1711450930673_0.6662368146029272","host":"s3://npm-registry-packages"}},"2.2.2-c72a851-202403270931.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-c72a851-202403270931.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-c72a851-202403270931.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"48624c3e8b55b060797a04b1ee40defa97699404","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-c72a851-202403270931.0.tgz","fileCount":322,"integrity":"sha512-9NSSRbAVo5MEIM6qn3ZCySbcKVvZTZvounjx/UPIAVqiRmrfsEqT/XS2ucJRW8aSAi9HchfLxbLjMh91m1VT0w==","signatures":[{"sig":"MEUCIQDtwbXgrbzEigRTTZSzMtK9VKEKqXHqOzGWhb+OuB73qAIgdAiT5ii+xzCnMfvxGQFN4Nv1m0ZUN5GHhY0YoeOIGFk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6956736},"engines":{"node":">=18.x"},"gitHead":"c72a8515647391e267d01ec6eaac064855b6ca04","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-c72a851-202403270931.0_1711531982058_0.009582440597922792","host":"s3://npm-registry-packages"}},"2.2.2-76c47c6-202403281128.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-76c47c6-202403281128.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-76c47c6-202403281128.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c2010b6f3a675738db763bf4d08ad3ecc85a77be","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-76c47c6-202403281128.0.tgz","fileCount":322,"integrity":"sha512-eRtZ3hX6MNuNifkBn/K7jbFVrlVQ6gXtki/O5YWdAnn+0v3c9AwSWRc9D4i8Wqi1qZkZUIf8etoYNzlwoJWtDQ==","signatures":[{"sig":"MEUCIQCVvUCxJY8jxNocjdoR+5zyGyCtR9BXK314jXFl2QokxwIgXW98+CsMApaHQ5s0LGvu0KlFm6iD5xWJWfCIEq6M9KU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6956736},"engines":{"node":">=18.x"},"gitHead":"76c47c69a64497960c209a123697cb6bbe198574","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-76c47c6-202403281128.0_1711625364581_0.18430152566735436","host":"s3://npm-registry-packages"}},"2.2.2-2075eed-202403281219.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-2075eed-202403281219.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-2075eed-202403281219.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7322e68aa6506b543a0cb73182cc20e15986a0df","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-2075eed-202403281219.0.tgz","fileCount":322,"integrity":"sha512-iSkWyJ59+ICgRJ35+a4YrFy9n9odh9mkWD/NArs0aoEPuGbcIO6yD83XI4u3X+U4bKXwYOJvyj93aBosFpPOSA==","signatures":[{"sig":"MEQCIEqix6WOpJXo1hJ0gRplCzlQWY/CRboAAb0FDy43vJbkAiB4D/J0mqHCr7HatjO69Hj5lm3Wm2O5UAlnD6arr2qv6Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6962730},"engines":{"node":">=18.x"},"gitHead":"2075eed48d8ab66a983850f37771e2414163f33c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-2075eed-202403281219.0_1711628492967_0.37653310630811276","host":"s3://npm-registry-packages"}},"2.2.2-b9d70ad-202403281310.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-b9d70ad-202403281310.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-b9d70ad-202403281310.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a3f6fa169da3ae19c49c1abb5700b2e59f6c6296","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-b9d70ad-202403281310.0.tgz","fileCount":322,"integrity":"sha512-vsDIaKtUA10ZnbVVmgaf1XzLM+QE8zdrnBpglRzNwv9CuoFGi5ctaZo9ncFt7QHtBPOAVtGAotsFzv04GA3JaQ==","signatures":[{"sig":"MEYCIQCphDI2WZ1BazDrsgo8w0SFYDD+U8OOGNzwR8tG/Opv5AIhAK4UPdCVS+P4YZiKtpvPirBRECBLdfiMudLswrD6YLPT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6965318},"engines":{"node":">=18.x"},"gitHead":"b9d70ad893752177825134a6a3331231b6b6b256","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-b9d70ad-202403281310.0_1711631510974_0.9918966128010207","host":"s3://npm-registry-packages"}},"2.2.2-b9d70ad-202403301031.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-b9d70ad-202403301031.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-b9d70ad-202403301031.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"39c2f27b2d54289bb514b2f538b4e61718dd1005","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-b9d70ad-202403301031.0.tgz","fileCount":322,"integrity":"sha512-yPcmZaRpqSlUugsZZ+5rbh3ljOnM8X86EIZuc1GbUahkLvwFYW6q0AjrbYlluyJ2xat6ZxCkGxCXAByCnbV9Jg==","signatures":[{"sig":"MEUCIQD9YAC4uICmEJGaip34cOUICcKNoXhksONfg0ualO4lQAIgdf08BXY1iaj08FYc6l3Ej1YkYJOQbuMXtgC+Gm4pTSw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6965318},"engines":{"node":">=18.x"},"gitHead":"b9d70ad893752177825134a6a3331231b6b6b256","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-b9d70ad-202403301031.0_1711794771425_0.8265207148824691","host":"s3://npm-registry-packages"}},"2.2.2-830cef9-202404020917.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-830cef9-202404020917.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-830cef9-202404020917.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"453634b64873c06ad7655a748a3676efe15a2b1b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-830cef9-202404020917.0.tgz","fileCount":323,"integrity":"sha512-6K3spCUtLU1XPq7xcOP2jfhd7ITKhde1P0YbR+WzPixNhcLrqwM+N3OYnEtirQjqdaJe/IX+ImT7otWzETUa/Q==","signatures":[{"sig":"MEUCIQDgUGPE+oSkYwiM4TS3SZnWXeoYkX+WnqPJvdUghzW8SgIgMa0XvoAohf8dFCQoQU7M2NG1SMpzCifots3zcFWV4WE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6973449},"engines":{"node":">=18.x"},"gitHead":"830cef956b9c85562ca1fd8ffad8449da0462421","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-830cef9-202404020917.0_1712049508363_0.5809489567533439","host":"s3://npm-registry-packages"}},"2.2.2-8e5d441-202404020959.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-8e5d441-202404020959.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-8e5d441-202404020959.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3a57150172ece19567fdff767878be88c72d5df5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-8e5d441-202404020959.0.tgz","fileCount":324,"integrity":"sha512-KJlFbku20ttplc4GjnopjVxPLLSrk70Y4kLJiokETHWtCzyAxzcpGz21RoWu3B2cdIfONsJpW7xKAPmh2AifUQ==","signatures":[{"sig":"MEUCIQDvbkkTKK2SZOP+L4aynNHATfycxp8gyPbSjnJq4HO71wIgGpVldLBVnPeXRxb2OFKeCngrAPEvfHubaRE3Nz46QN0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6973471},"engines":{"node":">=18.x"},"gitHead":"8e5d441c653712ce5b5d7dd7d92a28b2087dc12a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-8e5d441-202404020959.0_1712052043846_0.23296974762741773","host":"s3://npm-registry-packages"}},"2.2.2-842cf83-202404021322.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-842cf83-202404021322.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-842cf83-202404021322.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4ab2dd9cf3c2e265518b2d6848de5824ee5d1d3d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-842cf83-202404021322.0.tgz","fileCount":324,"integrity":"sha512-iB8fzwS8FWBcwTCClOWmOImmf78OV3KapfYcgXjXd3+vVkgCUMrqK+sAHOKDwWMzHtePLUVb8n74EJaVkKYsEw==","signatures":[{"sig":"MEQCIHA0YTnjuCOqkxxEXmDhqYkWQ0BO/qiRM/IX9W21uSl/AiAnD24aw6RNAyH6iA2CNE5kFubFXGKjGXY0VQBDP9UDMQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6974136},"engines":{"node":">=18.x"},"gitHead":"842cf833439f25a4fc5900fb0671d17536593c51","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-842cf83-202404021322.0_1712064228636_0.9061762627912291","host":"s3://npm-registry-packages"}},"2.2.2-6c7adc4-202404031053.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-6c7adc4-202404031053.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-6c7adc4-202404031053.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9436343a9c29140bb5572416d80ea6cf7e6b4012","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-6c7adc4-202404031053.0.tgz","fileCount":324,"integrity":"sha512-OW0lI3dkQ4mwKnvP2s7G3TMnD78iuW9BnzDuSeiMQ2+ibcHSqX6vTfGRX3mER/SIJG/9VbDbwo8Bt/OBQHkfag==","signatures":[{"sig":"MEYCIQCecg+kYqyBObycDCw6q7c+pKDXir8rjYV3Pr0NrvczQQIhANT3HsMsGexY/ETHLXAUurSjxA+ZkMxw7p4lpQry5nQD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6974136},"engines":{"node":">=18.x"},"gitHead":"6c7adc47e7ed320fbad4696d9f76ba68d5064b33","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-6c7adc4-202404031053.0_1712141655976_0.8527615939013709","host":"s3://npm-registry-packages"}},"2.2.2-6c7adc4-202404031057.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-6c7adc4-202404031057.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-6c7adc4-202404031057.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"850601e7d418cd1a21a872438fe51d0bc947dbfe","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-6c7adc4-202404031057.0.tgz","fileCount":324,"integrity":"sha512-LTb+n97BvSFu7ILbT8O9y6iQGWSrcmBo1dUc+tpp6P7XM8j6DGnJ3Cr+BHpc9tK9wKvN9Vw7Lv7Q0GiHtmLn9Q==","signatures":[{"sig":"MEYCIQDgE8zIsnoXNBOmeJSmU14i30UJmyhNwfNkYhr1jzRdeAIhAKE6J4Y7MXi5M+Lm7rlxb7G2PMozlSByRfOq96UdMYjC","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6974136},"engines":{"node":">=18.x"},"gitHead":"6c7adc47e7ed320fbad4696d9f76ba68d5064b33","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-6c7adc4-202404031057.0_1712141885510_0.9005811990506989","host":"s3://npm-registry-packages"}},"2.2.2-9ed7eca-202404031206.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-9ed7eca-202404031206.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-9ed7eca-202404031206.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7ab704430a5cf7826c8dc9a24e1c5511c79b7899","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-9ed7eca-202404031206.0.tgz","fileCount":324,"integrity":"sha512-Ck5euFfmYdXQXKKqGXo3zSFhKBOS+PvJtC4mv+ZgZ5xan1z43vYNj5jPEMdcCAA3CDGwXVYudo+/Y1XTB9qTMQ==","signatures":[{"sig":"MEUCIAaOpShvYdDTuUCNrmbt0YBLMvW/W8u/Bo8AaMXFW5voAiEA1/0l5N/c5igIQzzUAF18bkvYOUynX1b+rXiSy0vN/qg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6974136},"engines":{"node":">=18.x"},"gitHead":"9ed7eca1917f810c6c8cd49b9b9cc00c6f79b64a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-9ed7eca-202404031206.0_1712146058632_0.6207207937216981","host":"s3://npm-registry-packages"}},"2.2.2-b721986-202404031300.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-b721986-202404031300.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-b721986-202404031300.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"eea9e650b6f5696f8c7290e1205c61755fba1e44","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-b721986-202404031300.0.tgz","fileCount":324,"integrity":"sha512-7fU529u7bxQubWvZuLfnv9z8SR6P31IYSMFKznKlmZbTDrvgORNAQzCpnKYcQPb2cB3hTuUhwa1Hbgb1J4aBng==","signatures":[{"sig":"MEUCIBjaMD1XvWAeQy2wmta+TeE4PA1osb96bO7WRSBEBU0iAiEAxf4s/XErj65fYAATxY3di6SdOesdEwoI+thJVWD0v8M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6974202},"engines":{"node":">=18.x"},"gitHead":"b7219868507766dfd39ace01c5a95a84b23053cb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-b721986-202404031300.0_1712149315512_0.12155551525733288","host":"s3://npm-registry-packages"}},"2.2.2-ae8e0b5-202404031617.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-ae8e0b5-202404031617.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-ae8e0b5-202404031617.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7d04eef1a0642d26519c8b4b8860602391d68256","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-ae8e0b5-202404031617.0.tgz","fileCount":324,"integrity":"sha512-h+7jx9NTOPyj84w6LpHDOoHTeGft32a5QvrpLswudieFiY4eQt9sH2BTYZprjyTsqaF49hldTw37PLp7enHpow==","signatures":[{"sig":"MEQCIGbkIJAf8TcLiVoC7S0RY9c7Ug4UP88xudwmhy2AUawrAiBwL9mvo7+o9y+r+UGd9V+GJhlVzSrbGcmguNERYgxSHg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6974791},"engines":{"node":">=18.x"},"gitHead":"ae8e0b506059d0309ce9cf11cd268cb4a148044e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-ae8e0b5-202404031617.0_1712161137164_0.012812225186325188","host":"s3://npm-registry-packages"}},"2.2.2-780db72-202404041056.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-780db72-202404041056.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-780db72-202404041056.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"da693c1eb14100f3c66b5c1543a5fd6707bcd8f9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-780db72-202404041056.0.tgz","fileCount":324,"integrity":"sha512-hVtN0SpA7c2mhxge2RZPNmXRZjuARwqPyMZfz/iqvT64+NuHHS2WiYA/VaBv3PShUTXLwfJ5YWmRqv8KXNYwqQ==","signatures":[{"sig":"MEUCIE3hL6PAcgnjR6Vvbqb8n+TJ2vi9vBjGQiZ/+WQPcx8bAiEAvaN1G8qcOM9HHSpFokbFgs97a40oIwEIonuNWZ8N/a0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6974932},"engines":{"node":">=18.x"},"gitHead":"780db72dad3ffc999575610bea60b310799ccb2f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-780db72-202404041056.0_1712228272764_0.7543788898314037","host":"s3://npm-registry-packages"}},"2.2.2-780db72-202404041109.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-780db72-202404041109.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-780db72-202404041109.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6a2012adeb1ca333154385e072528186b25edc71","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-780db72-202404041109.0.tgz","fileCount":324,"integrity":"sha512-98qp2zZqvsFgqN7hOyYe4K5MPyxoEyIowWibK1yJd2advgQJpr7f8963u1XPXOl2EG8kII419LL/o+rLco3x4w==","signatures":[{"sig":"MEUCIQC2rn6XS8+VIXezTtfVt1rAwyGT0aswtwGimEClcGlfVwIgfqg8mkopkUobKwKS8aR0PWHGdl5Y5kAzQqIEuxDssh8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6974932},"engines":{"node":">=18.x"},"gitHead":"780db72dad3ffc999575610bea60b310799ccb2f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-780db72-202404041109.0_1712229005619_0.2605085686924786","host":"s3://npm-registry-packages"}},"2.2.2-d4e668b-202404041649.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-d4e668b-202404041649.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-d4e668b-202404041649.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4bc29ae245b353898dcb7cefed8d23d2f87282f4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-d4e668b-202404041649.0.tgz","fileCount":324,"integrity":"sha512-oheenaEe2f5a9S7nxMIphU2ge8ejNbepn9e+n6We33pTSQ4ddjlSHK4UCPTafgYzFnIvqmaCekUsXy4Nz4Sx/g==","signatures":[{"sig":"MEQCIDK2VSk+ShDA1/jJkgcHR0uFhedjFxf9FF+6fNFlQqvwAiAEkZQSpZcPMqYNXP8SXBJ8kl18J3j/T6Md0sU2/KZHTQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6983254},"engines":{"node":">=18.x"},"gitHead":"d4e668bb88fe049a55771967e98e929c52e70e46","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-d4e668b-202404041649.0_1712249432316_0.2081521743918855","host":"s3://npm-registry-packages"}},"2.2.2-932ef94-202404042211.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-932ef94-202404042211.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-932ef94-202404042211.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4083c535fb248d0ffb8c55335fae1772efe5b5d5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-932ef94-202404042211.0.tgz","fileCount":324,"integrity":"sha512-orSCdVdlaDkSd/rFZ2/PngzFXnLWbn7BFGZfp3Ee23FcL4RwP8QuYmr79UNSG8GGStYx5vWeyEI8819vKc8b0g==","signatures":[{"sig":"MEUCIQCT+bN5W7Y0cvBAmRLUvYTxvNn+m+vTmMKBMLX5fmgR5gIgM3YlQl0eVajyva5xaVrNHbotw28jHl0oiiv3LMh3On8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6983254},"engines":{"node":">=18.x"},"gitHead":"932ef941afa305b2362601e9cdb9a861b8bb5b50","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-932ef94-202404042211.0_1712268751201_0.6769868338281972","host":"s3://npm-registry-packages"}},"2.2.2-f0c1d99-202404051027.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-f0c1d99-202404051027.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-f0c1d99-202404051027.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2707a8c7e84e1f265988a5860ea85884cb616f3a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-f0c1d99-202404051027.0.tgz","fileCount":324,"integrity":"sha512-l6aELQjmkuK1o8u7ypJwcrcS8EZIi6fML+klj1ymbM8EhZmDVkXCAWIBtCCYOVawitazahfMiZEaISoNT0pF+A==","signatures":[{"sig":"MEUCIAJyORm5qOtzSucChKzyPPdjjRY2xoofYEPlbpFVoHFMAiEAkIY4rJ1pT+0Gj6OP1ShUrYAMiFxQ/UD0uf7dDlg7ZD4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6983254},"engines":{"node":">=18.x"},"gitHead":"f0c1d99ea500a0bb32e41775176706e54f84369f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-f0c1d99-202404051027.0_1712312944686_0.495804265808127","host":"s3://npm-registry-packages"}},"2.2.2-ae6b1a2-202404051242.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-ae6b1a2-202404051242.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-ae6b1a2-202404051242.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"aa01065b0a3a74438a0400d23baca0def1585538","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-ae6b1a2-202404051242.0.tgz","fileCount":324,"integrity":"sha512-DrWN0tOSGDTGqv0tszvFy4qXPM9M3rjXStEqH4DV+yKTlnjLX597TdbBn44167w8i49IVEBPEj7AqgHosGLt/w==","signatures":[{"sig":"MEUCIFcBIkk/9SNg6afxZc5Fc1RiGkmHbS0kt5nm2jgs0TqXAiEA43DLfs3Prp6DBURU/3o6amaPN0v8dWB/18ju1Hfewvc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6983255},"engines":{"node":">=18.x"},"gitHead":"ae6b1a248438cfb08912be5096cd508e48f79bce","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-ae6b1a2-202404051242.0_1712320995619_0.4900677574048993","host":"s3://npm-registry-packages"}},"2.2.2-ae6b1a2-202404051252.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-ae6b1a2-202404051252.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-ae6b1a2-202404051252.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bdb93240bf32708540984a986ec751ace9dbccca","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-ae6b1a2-202404051252.0.tgz","fileCount":324,"integrity":"sha512-uPapPhqWGRoHZlFzADIPXM7Lnl7dpRpLanU6V0hjeRBSmhXEKxqtC1unVGwEPzdPRTbeaCYHJkGwyMMFLvIK9w==","signatures":[{"sig":"MEQCIHCPwGJQmB8XZV9CePIlawwW1v/BCPl3AauRtAsz8O7VAiBEqYcQFSNWN16nUhwa6HV06t4PbADYULEXhjVAqocpag==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6983255},"engines":{"node":">=18.x"},"gitHead":"ae6b1a248438cfb08912be5096cd508e48f79bce","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-ae6b1a2-202404051252.0_1712321636862_0.47902512700218725","host":"s3://npm-registry-packages"}},"2.2.2-ae6b1a2-202404051258.0":{"name":"@flowfuse/flowfuse","version":"2.2.2-ae6b1a2-202404051258.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2-ae6b1a2-202404051258.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d350a457d835094dfc7112042cda91979ef4e1d7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2-ae6b1a2-202404051258.0.tgz","fileCount":324,"integrity":"sha512-jahUHd0xHpV4uDtfQeP11IsfvXqcWe+zudlaidDNlzvHWeoV0rgUGyoIQ+CJfIsMXSOl/Q6BRKCGNdBf3EmQfg==","signatures":[{"sig":"MEUCIEsG35/WScmaS8Drvq/vcqaAxd0TpvCyzDCgYeMub2GkAiEA4j76rdEHL0d7gKFp8qN+20N4tmrcByeTA82k8OybQL8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6983255},"engines":{"node":">=18.x"},"gitHead":"ae6b1a248438cfb08912be5096cd508e48f79bce","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2-ae6b1a2-202404051258.0_1712321956624_0.8648648572689777","host":"s3://npm-registry-packages"}},"2.2.2":{"name":"@flowfuse/flowfuse","version":"2.2.2","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.2","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7c59041ede353e56d0b154918a78ca6ace3956ff","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.2.tgz","fileCount":324,"integrity":"sha512-gzxO1yPgYtV3XokJJ1dnx39St43DK8IyksdUZ7+68REKwmKKXrm61/e20o2TGwDv+wlE5jvxGOuHnY3JrXm1gA==","signatures":[{"sig":"MEUCIHKBeJNOK43y3kI/wkN4gKYPodDs9DLYdll5qCdPEpDgAiEAvhJxlZO8q3o4dUksIjwKaSgwtAX9DDaf9CyCFdkMf5o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6983577},"engines":{"node":">=18.x"},"gitHead":"ba6d261444f134bacda0d56b48beea2cb25cc5b7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.2.1","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.2_1712323440655_0.39506529034249005","host":"s3://npm-registry-packages"}},"2.2.3-ba6d261-202404051330.0":{"name":"@flowfuse/flowfuse","version":"2.2.3-ba6d261-202404051330.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.3-ba6d261-202404051330.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"832d121fdf359a9b621e67d30c2823b532c0d366","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.3-ba6d261-202404051330.0.tgz","fileCount":324,"integrity":"sha512-4CVpahuUORWPvPNvlGJg4gaEOWum8BvJdVWDNlQqEuknhzbShvCb8jz3aww6YNCoSEeMoFXssHbaYLcun6HmEQ==","signatures":[{"sig":"MEQCICEIVxIgmoeaM337UQVWsDOK7Z4gz6UsNcjffGoPjQ2hAiAGo/LH8BktZxPspMMM9YM+QW6P+5vC9obQnrNTQXCKiw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6985578},"engines":{"node":">=18.x"},"gitHead":"ba6d261444f134bacda0d56b48beea2cb25cc5b7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.3-ba6d261-202404051330.0_1712323890378_0.5320795929142668","host":"s3://npm-registry-packages"}},"2.2.3-216d58a-202404081147.0":{"name":"@flowfuse/flowfuse","version":"2.2.3-216d58a-202404081147.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.3-216d58a-202404081147.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ea824eb10569d13ad7326fa1222d811d54348508","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.3-216d58a-202404081147.0.tgz","fileCount":324,"integrity":"sha512-0fAAk6ZNQnqjubyTBahW9ns+j5m2lRTVToVLd0ZRC/HEfn0YPwqWSBe+JByEPESgOmVUjrS3Z0R0Jq5C39cPOw==","signatures":[{"sig":"MEUCIBXWhqIaZ8x59sUu2bj8XDD+y/g36T0XLTEmXAzPHtntAiEAh6CESjZR9AVeypzNegRR2CS+4pEydmHce81he4o+Kiw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6985578},"engines":{"node":">=18.x"},"gitHead":"216d58a9e700a0c2673899e1f102d6d9b61ca93c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.3-216d58a-202404081147.0_1712576922247_0.6694105522400706","host":"s3://npm-registry-packages"}},"2.2.3-edaf959-202404081209.0":{"name":"@flowfuse/flowfuse","version":"2.2.3-edaf959-202404081209.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.3-edaf959-202404081209.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e0e4ea5983cea84c14daad7164ece24b3a8dfcb2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.3-edaf959-202404081209.0.tgz","fileCount":324,"integrity":"sha512-CmfN+ww+fU3rPPVp8rTSycsvPEHnZoDZPvYWUo+6GmPLRqIm42pljNdd28d6B2sWkZ/KcNLVkwwKBRe2KJRicA==","signatures":[{"sig":"MEUCIQCtj93PEwBPlGvMmGJ+tRzsbqNVp+yCgVkNIxRskdQ6DwIgaSf3Fu+mKjick0Ki0tSAsgQrIDxW+Xes2/KRyved7Xo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6985578},"engines":{"node":">=18.x"},"gitHead":"edaf959f8721a9fc73c65d404e288f2b07e4ff75","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.3-edaf959-202404081209.0_1712578253311_0.5776935828073202","host":"s3://npm-registry-packages"}},"2.2.3-98693a5-202404081432.0":{"name":"@flowfuse/flowfuse","version":"2.2.3-98693a5-202404081432.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.3-98693a5-202404081432.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"083e14623f7772a780c2a6896c2778a8ff700f26","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.3-98693a5-202404081432.0.tgz","fileCount":324,"integrity":"sha512-ch69L9m5Dw+WCl59oRIsHE0DqMhU4mQoen4Ozy8H5UkICMAjOoYOhrCHuFflnbya41+FYAJ8Rj1L53DY9Wtxig==","signatures":[{"sig":"MEYCIQCfgyf5tw9KHyTpK+bGgk/2sY8fSKHr/pcFfoNIEmUjkAIhANJVwY9Pex2wUn6HNMs4X10KBhbF1JTiQkZxKWs0OocN","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6985578},"engines":{"node":">=18.x"},"gitHead":"98693a5908d8ef8fdf4bacffb6de5547fdb6bf88","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.3-98693a5-202404081432.0_1712586792810_0.26304984200846127","host":"s3://npm-registry-packages"}},"2.2.3-72e7ee2-202404081519.0":{"name":"@flowfuse/flowfuse","version":"2.2.3-72e7ee2-202404081519.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.3-72e7ee2-202404081519.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d5439018a4696269d182351ff25729781647a0aa","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.3-72e7ee2-202404081519.0.tgz","fileCount":324,"integrity":"sha512-s6jvpgaPXGPwV0E8tYQL0d3Umdvu2C1r/Cm4bfYsbJCY+IgciAJ8A4rOr8IRzp75VKMMJjK1oQKqs06ND7TIfA==","signatures":[{"sig":"MEUCIFGQ9uFjGfPhrTmrwYFeKgHavgiMabjkBAH83INmOYoQAiEAt7cDn2dj0OBOonTzJLlByHa2OCbO9+DEX2a6kvnU/RM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6985578},"engines":{"node":">=18.x"},"gitHead":"72e7ee2bb205baccf849ec0b8a38d308a8230796","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.3-72e7ee2-202404081519.0_1712589656987_0.1147931753896918","host":"s3://npm-registry-packages"}},"2.2.3-b53bbcf-202404090858.0":{"name":"@flowfuse/flowfuse","version":"2.2.3-b53bbcf-202404090858.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.3-b53bbcf-202404090858.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"da3b71f62a7927a09e9a5167860ef9af3339b41c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.3-b53bbcf-202404090858.0.tgz","fileCount":324,"integrity":"sha512-yY5HVsTGgW9ER7iYYZK8MaNeSdg1d829qpHENZxJIxR8RoPabBa5gG/o6LSa0v8iS6E2ekwgiPDoy6K09EESEQ==","signatures":[{"sig":"MEYCIQDauh/44MYYD6+SLf9bshRiouaQBcfzfapzlV452p1kxwIhAMjKu5DsrcUnH9lZwRMbEmdZITUUXzYLEH7f05RbYysU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6985578},"engines":{"node":">=18.x"},"gitHead":"b53bbcf560f8821a84c18c68cbf77d4a39ff4495","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.3-b53bbcf-202404090858.0_1712653162178_0.058026219572948845","host":"s3://npm-registry-packages"}},"2.2.3-87e37b1-202404091253.0":{"name":"@flowfuse/flowfuse","version":"2.2.3-87e37b1-202404091253.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.3-87e37b1-202404091253.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a91c27d2e03861f3e0eaf14f25adcd1be42f4af9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.3-87e37b1-202404091253.0.tgz","fileCount":324,"integrity":"sha512-Ms1ABE6lxd2WYQH5Otqi0YYJl1+KOH46GLhGmWOZyjhcBlt+YqQxO25Hdkjpsmvkd0wWRrINaF36LUQGFZxInQ==","signatures":[{"sig":"MEYCIQC5LgKDotvpD9EPqL12WelMgZALqOMehiXZvy40H3j9jgIhANX2WcmQ5Hn9kqyoUX3uLECVbE4XTBrczsH8SvvCdl7w","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6985578},"engines":{"node":">=18.x"},"gitHead":"87e37b1c86fd95fff188ba701149bc1d4b9073e1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.3-87e37b1-202404091253.0_1712667279710_0.3366628019019793","host":"s3://npm-registry-packages"}},"2.2.3-87e37b1-202404091300.0":{"name":"@flowfuse/flowfuse","version":"2.2.3-87e37b1-202404091300.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.3-87e37b1-202404091300.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8fd1a8b7dca5d7c556b23c10a3b6576c3fddeb8b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.3-87e37b1-202404091300.0.tgz","fileCount":324,"integrity":"sha512-++xRGwhglhbxkw6wULS3i+K3MGzX2gbr6npmIbqouFuZ5zAPJcJEN2aKQ0FdRKteUzt+lCqTLNYEISftm+PcDQ==","signatures":[{"sig":"MEUCIAjppbOEWfRnf6rk5+MKp7A97NOoGk1qneYwKJQwE1LmAiEAtdrkeMhQnRyxnJl2Cbi0g07raMzuEgs1eGfzMAip+d0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6985578},"engines":{"node":">=18.x"},"gitHead":"87e37b1c86fd95fff188ba701149bc1d4b9073e1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.3-87e37b1-202404091300.0_1712667669853_0.5793906456635203","host":"s3://npm-registry-packages"}},"2.2.3-c904142-202404091430.0":{"name":"@flowfuse/flowfuse","version":"2.2.3-c904142-202404091430.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.3-c904142-202404091430.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"db30c28d180edfd40459fe587bf97c1d81dd1a60","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.3-c904142-202404091430.0.tgz","fileCount":324,"integrity":"sha512-xUtLWy9CbaL4JSTEZagjlGbYmO1uW7KNb3Y3v4LRedswKhZ+F+FkWeUv9Ap6WavsR1J1HIIBNWnYD0i2AFTeaQ==","signatures":[{"sig":"MEUCIQCv6FV857jm+bKrl8T59VxvTAA483yCN47n+rGxEholPAIgVI+KVRzzN779I7H5ad1J+tEzTuduQT8FAMyDlNpXKJ4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6985578},"engines":{"node":">=18.x"},"gitHead":"c90414280b4ba3599d80a272675c924f005ea90a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.3-c904142-202404091430.0_1712673074981_0.23631670803305438","host":"s3://npm-registry-packages"}},"2.2.3-332146d-202404091445.0":{"name":"@flowfuse/flowfuse","version":"2.2.3-332146d-202404091445.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.3-332146d-202404091445.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3368c316772ba5add697d1241af2efaa25753330","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.3-332146d-202404091445.0.tgz","fileCount":324,"integrity":"sha512-HJPtViRHB5oSidsm5cJlc3mTzFvCcYbmzGz8ONeHmHvlTjDHldAjELbPSRcy2yLPgLYOBU5nEUtZgN5O49/UTQ==","signatures":[{"sig":"MEQCIByM1LeTOxVOhQ25u+adGDgy4fm0l/qsjL9u9ZKbc+LNAiATujDxPEotKX1yQogrozgbEG3ao9DQYtNH9hMA1g3Sqw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6986416},"engines":{"node":">=18.x"},"gitHead":"332146df41bc53fcb81a58ed901eb4d6b2491bf9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.3-332146d-202404091445.0_1712673995649_0.16082824400541873","host":"s3://npm-registry-packages"}},"2.2.3-21e7ce4-202404091500.0":{"name":"@flowfuse/flowfuse","version":"2.2.3-21e7ce4-202404091500.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.3-21e7ce4-202404091500.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"da3cba827cc4a8df53c63f23b9be3fe2051d14f2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.3-21e7ce4-202404091500.0.tgz","fileCount":324,"integrity":"sha512-q97vnjniFyGsyrzYHPc4Z5W33/LCmp8J0WhQ/PkTLuN0SUj5yEhC6PdYJKRgtz/Br7CNAo9Q2ryZ2Clt4CWBkA==","signatures":[{"sig":"MEUCIG6YmS4BnNKK5xh+f1NRjqByfUvlicX6dOLDHFz7nAVqAiEA5Ge3TTr3tcYIx800l5qr6tkKw69LcvGwLfiU8Xfft+0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6986416},"engines":{"node":">=18.x"},"gitHead":"21e7ce4f7b9a80c3faa345e7f27da1d10c0abfe2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^2.1.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.3-21e7ce4-202404091500.0_1712674895671_0.35206784778285916","host":"s3://npm-registry-packages"}},"2.2.3-8a904ba-202404100840.0":{"name":"@flowfuse/flowfuse","version":"2.2.3-8a904ba-202404100840.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.3-8a904ba-202404100840.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f7c0f124872bd047a0937a558fee5df60da2d1d8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.3-8a904ba-202404100840.0.tgz","fileCount":324,"integrity":"sha512-Vd/msw7ZO5KDME/HSjxl8E6IDQlA6ouLUHWdjeSrfvL5F4rR2cDrvIBEEeieMcwO0WIselTQ/fxXIVACobTNEg==","signatures":[{"sig":"MEYCIQDlc8pyDjEH/OdCKskSbdvNEOrmsZP1OoWeHudagmxCKAIhAN2h2xmVRZaxBF0sGylcGdDiihvNoSxHVRFdhSq4rDgo","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6986416},"engines":{"node":">=18.x"},"gitHead":"8a904ba15737ea8044c1bc52d5bd4994aac3487a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.3-8a904ba-202404100840.0_1712738489810_0.6970348836773044","host":"s3://npm-registry-packages"}},"2.2.3-72da25e-202404100901.0":{"name":"@flowfuse/flowfuse","version":"2.2.3-72da25e-202404100901.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.3-72da25e-202404100901.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f36f14ae2ea15000eceddab171b24da998118bc5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.3-72da25e-202404100901.0.tgz","fileCount":324,"integrity":"sha512-Umty0LjrgiWerYscYY0JFLczFTdmxR368cV/Hn0VodwtfQLJO/aUjnPLFe2eflnAm52peBzYSiFwYZ30elm/wg==","signatures":[{"sig":"MEQCIGwn/MXTpRDP3eUOMM6KWdCN0/GGifd+gkl1UhphhGvpAiBnTklLw75d+qLo9rUL3byD2qkRB/vBCjykqnnlOzQU6w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6986416},"engines":{"node":">=18.x"},"gitHead":"72da25e1bbc8c808f0115721f996fd86bb8db48c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.3-72da25e-202404100901.0_1712739771996_0.7771736793889894","host":"s3://npm-registry-packages"}},"2.2.3-9fe20a9-202404100953.0":{"name":"@flowfuse/flowfuse","version":"2.2.3-9fe20a9-202404100953.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.3-9fe20a9-202404100953.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8b645584a2cfa0b7e031778bbca58755ddfb2c65","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.3-9fe20a9-202404100953.0.tgz","fileCount":324,"integrity":"sha512-UIwEiwixsim853H5vxptPz2WdLXHusLR8E2EHU7TpvzQFLQ3cdhxmq4eMzDnLFUer/oeRP6W58apd9R1R8as3w==","signatures":[{"sig":"MEYCIQDc8yr5pU4kM0a8Z3CShUsEDltoi4UezJuexGo8+MpCOwIhAPx6apiIIqDmAAj7C/jSdS3ArmyTOgvYB2ue2B9uP5Gy","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6986416},"engines":{"node":">=18.x"},"gitHead":"9fe20a97e91ac96d575fcff4399ec5297e628d6c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.3-9fe20a9-202404100953.0_1712742860172_0.3147065972906953","host":"s3://npm-registry-packages"}},"2.2.3-b4554e6-202404101027.0":{"name":"@flowfuse/flowfuse","version":"2.2.3-b4554e6-202404101027.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.3-b4554e6-202404101027.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3ae7be3daca638444cf07c0367aa0ea5859f62f8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.3-b4554e6-202404101027.0.tgz","fileCount":324,"integrity":"sha512-vVDrgISPVkmE52nXIamGr+fuqtp1bNY74a3st7EsdExAo3vDrvsSFdUf874/sft0Dk0yMP4+0S8/iIPeokRKrA==","signatures":[{"sig":"MEQCICSCgZu5hoIHY6IhrjgDZDKTJlUYvwTc7WAzTy42zawFAiAcpPrmi2LeuGdOB9r8eDtqJ7vEIYMOLYx7a6PKeD2IFw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6986416},"engines":{"node":">=18.x"},"gitHead":"b4554e64cff1c0c48b5a8f5b2ef498876202d7fe","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.3-b4554e6-202404101027.0_1712744890123_0.7799945930753409","host":"s3://npm-registry-packages"}},"2.2.3-d89ac63-202404101526.0":{"name":"@flowfuse/flowfuse","version":"2.2.3-d89ac63-202404101526.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.3-d89ac63-202404101526.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8417c5a1611cd5fb5549e5b741dc0cfcaa57f8aa","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.3-d89ac63-202404101526.0.tgz","fileCount":324,"integrity":"sha512-C+wyq569MHmijypSlFIs7RlhAMplDz5tXN6vp9RS3S5bCJiE7+mlsVlV83f48oPldbEjl1yyYegrTSXtNggZ1w==","signatures":[{"sig":"MEUCIQCSuExZZd5MmuT7kF60pZ9FJEWT2sfT3rAKibDBQ4MLWAIgCG7UjA10vLgEMO4m90klM5fQEMw4kqyNe7WVHu2rzKk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6986416},"engines":{"node":">=18.x"},"gitHead":"d89ac63bf68743c3216451354fd5cabd08f1baf6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.3-d89ac63-202404101526.0_1712762832331_0.4199696894992184","host":"s3://npm-registry-packages"}},"2.2.3-b5326bd-202404101549.0":{"name":"@flowfuse/flowfuse","version":"2.2.3-b5326bd-202404101549.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.3-b5326bd-202404101549.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c915e385b46dc6d08a943633d4dbb1dc66870217","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.3-b5326bd-202404101549.0.tgz","fileCount":324,"integrity":"sha512-4uTnHsca9OmnrQ0NsR3zEEjV0fezpWuZu659UJ2k1cxdaKJWqjBVnMk0g8zFTDMRaUosFf8EuzaUi+S/DYlsdA==","signatures":[{"sig":"MEQCIHTjk7JEbhzfl7EU6ySNZAs3TPwZ/dv0sbokldboTirkAiA/BjEYJN6RGfRI4W8opMN3vnPfsblKq6AivSOrvcBHAw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6997771},"engines":{"node":">=18.x"},"gitHead":"b5326bd03793108ab228f3d154e83c8f1cfbebd3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.3-b5326bd-202404101549.0_1712764251208_0.5201402807687758","host":"s3://npm-registry-packages"}},"2.2.3-b5326bd-202404110846.0":{"name":"@flowfuse/flowfuse","version":"2.2.3-b5326bd-202404110846.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.3-b5326bd-202404110846.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"81ba7591af8350bc97843a9c8972e682e8443259","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.3-b5326bd-202404110846.0.tgz","fileCount":324,"integrity":"sha512-CAkubeFSMc1b1gruTldmjMVTgRIHbjY0NQ6Xz92AFCqZCaajVq4FagL8d3qyPcMgBqHIeRD7w52uIZKpGf3HZQ==","signatures":[{"sig":"MEUCICAil7M2ys1f1Dbtc1ybWasZB7fgtI9LRVO2f8IkD+VeAiEAlmtEFsk1ZtuGj+D59cmglIG4IqhwlOENjNncsJ0mKc4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6997771},"engines":{"node":">=18.x"},"gitHead":"b5326bd03793108ab228f3d154e83c8f1cfbebd3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.3-b5326bd-202404110846.0_1712825291134_0.01632737802266848","host":"s3://npm-registry-packages"}},"2.2.3-b5326bd-202404110850.0":{"name":"@flowfuse/flowfuse","version":"2.2.3-b5326bd-202404110850.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.2.3-b5326bd-202404110850.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0c7f29b83d172e3e48d230e9ee762126c7ec2c7c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.2.3-b5326bd-202404110850.0.tgz","fileCount":324,"integrity":"sha512-M7vVx03ezKZWPqIOtxTWpPwQtXsIXT1n4Z16nnilAKyhwuSNfm2aH+YHwsvyVgeUJPXQJ4rTbMjPyjs+7BS75Q==","signatures":[{"sig":"MEUCIQDkzldymckh+rs4lMxDcBeWW+0aue+rRFgNsBpTlTgbOgIgIWZyR0wOAHyoW2C/IKOqhO1EogR6f7IoHIlsujWFgS0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6997771},"engines":{"node":">=18.x"},"gitHead":"b5326bd03793108ab228f3d154e83c8f1cfbebd3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.2.3-b5326bd-202404110850.0_1712825499828_0.9076589158907609","host":"s3://npm-registry-packages"}},"2.3.0":{"name":"@flowfuse/flowfuse","version":"2.3.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cf3d8691a6064a9156e37c06885934a32c860221","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.0.tgz","fileCount":324,"integrity":"sha512-md4dTYP4NhhlXgAWB0R3OgKLRE5USwqmZqKcKWN9/VRwGJeOnHGxXQpnVd6KIIxSUHV6Ke8wfuqAJ6zwQh6XuQ==","signatures":[{"sig":"MEUCIQCjhxPwzqiPzfGPTPP38i+m98vOSLZBVtAlzGaknJnrjwIgf9lfxpPllEP8zu4OFhk2ZfRhi9K2n6p1qPwKjBtMx6o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6996780},"engines":{"node":">=18.x"},"gitHead":"70f518f4330ac276c58a043de5055a43003e8ff8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.3.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.0_1712826374227_0.8752300354166862","host":"s3://npm-registry-packages"}},"2.3.1-70f518f-202404110913.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-70f518f-202404110913.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-70f518f-202404110913.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5dfed91e6e5d11630876b6b4ea1021c8caf08bb2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-70f518f-202404110913.0.tgz","fileCount":324,"integrity":"sha512-GlB9R51D8WC4h8cZdVsYYBfy3A9BcIuDsdxE7alq4Dq97627xkgr2I4epJI2oGS7n6nCBfV5bF5cy3UadQ44cw==","signatures":[{"sig":"MEUCIQDHJBLvtRyeajjiKdCf5lidzxbJjBiiLU9Uptf1MPrKcQIgeACJZLgbihlMOdgSd7Ind95snqeISDnlhWVROIXYwZE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6998781},"engines":{"node":">=18.x"},"gitHead":"70f518f4330ac276c58a043de5055a43003e8ff8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-70f518f-202404110913.0_1712826848699_0.5038243671058575","host":"s3://npm-registry-packages"}},"2.3.1-70f518f-202404120927.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-70f518f-202404120927.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-70f518f-202404120927.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c3262389a09fb8a9ea7dd77bf3bda73fe64d26ea","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-70f518f-202404120927.0.tgz","fileCount":324,"integrity":"sha512-9z6low2wABC4W3npdosSJCcey5YQ32DwPaqv1DiDGJY6pPgZP3AHxzbrMGp6fo90BwAP5jw80WTZp6d2MIJAaQ==","signatures":[{"sig":"MEUCIQCLN6l6bWR0/upt/2Gz9DKpw1C8WET5Zv8B3B+tP2L5EQIgRSuuKhIG57pZBun13vQscsW56PEE56u4TCXmZc6mbAU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6998781},"engines":{"node":">=18.x"},"gitHead":"70f518f4330ac276c58a043de5055a43003e8ff8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-70f518f-202404120927.0_1712914094875_0.15607694325393484","host":"s3://npm-registry-packages"}},"2.3.1-fe17ea7-202404151501.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-fe17ea7-202404151501.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-fe17ea7-202404151501.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7dc453c772fb4d31876006dca008c6016cdf76c4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-fe17ea7-202404151501.0.tgz","fileCount":324,"integrity":"sha512-hfrbGeJgh20o9jCpb2ICtR9KSDEoHtm7JhA7aUFIZPUAQ6okJZBeAgbhQSZgYExdK38DnqlgFsQ7XPJHUK6USg==","signatures":[{"sig":"MEUCIQDtIndnjyEUs4kFK1F1lBF+XFKlBvyGOJZ1lpyWue+Q6gIgUg82QPRtMqPZpSJyjRxAtbXrRvnofWFCI2It5lcIodM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7001118},"engines":{"node":">=18.x"},"gitHead":"fe17ea7670a55786f92cf9a58e7d6cbb3fadaf81","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-fe17ea7-202404151501.0_1713193354346_0.13590620499077","host":"s3://npm-registry-packages"}},"2.3.1-d9c3847-202404151530.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-d9c3847-202404151530.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-d9c3847-202404151530.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"182440216c98ba4b81b8f7775bda814808493c6c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-d9c3847-202404151530.0.tgz","fileCount":324,"integrity":"sha512-1FqFF53sS/dozIP1138ZjFoVU/YR5Edg7JPYwY9ab87gwHKQ/H9hWhVxBMNJW3nCcaBkm7CGU69WZDLQKtYRSw==","signatures":[{"sig":"MEUCIQCtrsqns6EDT8Kl9VcChN78DcfLYjYmmlYuXC/Z3EYS+wIgfGi79GZ3WXYgaUM+IZ5JoRay1q3kjCt5mmhGa5rqr3Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7001118},"engines":{"node":">=18.x"},"gitHead":"d9c3847cc172e92724b05be77d3a64aeddda0a28","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-d9c3847-202404151530.0_1713195084515_0.8725438777918599","host":"s3://npm-registry-packages"}},"2.3.1-04afcca-202404151556.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-04afcca-202404151556.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-04afcca-202404151556.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f76965edea2d6ff7bb8c143a8067117fff67d97f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-04afcca-202404151556.0.tgz","fileCount":324,"integrity":"sha512-H54m7vmuEdR1tttNfXgUgtpxTi+Hr1BZAddcr6wSxbHoh6Ir76XjnUk/La/OfgMi4LWgquD8Ejp2Xmnmox0O/Q==","signatures":[{"sig":"MEQCIEplf2BOXbktD6p8j1aYvJFXCdJP9SYI5wmALWAYcwI1AiBWntyPI9NEhGpW7IZSn//mYWvNby1Sr6mxUUVvpqcc5A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7001118},"engines":{"node":">=18.x"},"gitHead":"04afcca3168443f468e912547d9a35c23008c561","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-04afcca-202404151556.0_1713196652806_0.12330256204861545","host":"s3://npm-registry-packages"}},"2.3.1-31d8e59-202404151601.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-31d8e59-202404151601.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-31d8e59-202404151601.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d4ef411fd98596d348ea7a137baa2b1d9000791a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-31d8e59-202404151601.0.tgz","fileCount":324,"integrity":"sha512-tYgRXk7iDTntTv2caW1Mtr47W/Gx6NDJKmN4aU0fgqS+cmqK2gEtpo8/WHOWRSjj0r8Vr/F7mlvf3fteGMyx7w==","signatures":[{"sig":"MEQCIEnHeXMP3Cu3kyOkgJZQanudPGakcOifv43YvECW5er5AiBewKZkttWoTymXVj1rQp/UiPCApC+2SMHlKTjy1QRDmw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7001118},"engines":{"node":">=18.x"},"gitHead":"31d8e59d7fdca39f86dfde630accc7f6a62aa744","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-31d8e59-202404151601.0_1713196943080_0.009172839536398358","host":"s3://npm-registry-packages"}},"2.3.1-31d8e59-202404151608.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-31d8e59-202404151608.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-31d8e59-202404151608.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4cf2aee60b423b0859ee9f1193e36af6d1d5bfbe","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-31d8e59-202404151608.0.tgz","fileCount":324,"integrity":"sha512-NcMUvNPcOR+i5nnbIMWqScxZDGTcdm9Dy1dvlrbgVWstQXA/y4EbYUKMAipqiucndBh5Q7WLL+aGXAR+2n9D4w==","signatures":[{"sig":"MEYCIQD82K3zBsyPdQCom3dhYQpMXSzzX8EZLUo2AvA+pZ5FJwIhAO9Y7UtbAgLf/Fw/ZimSKSxHXn75ruYLSOHjz6NKuNzy","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7001118},"engines":{"node":">=18.x"},"gitHead":"31d8e59d7fdca39f86dfde630accc7f6a62aa744","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-31d8e59-202404151608.0_1713197347674_0.8935495482369327","host":"s3://npm-registry-packages"}},"2.3.1-d4a423a-202404151633.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-d4a423a-202404151633.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-d4a423a-202404151633.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"985d984518a50702a588c4df375cb8668a39e42a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-d4a423a-202404151633.0.tgz","fileCount":324,"integrity":"sha512-pfai7MJTrA9SQJ1JPeQqniDNAAst0vqotdvb81L2CWdGaXXrYPA/6LFwJG73R43M/lclGZWzyHJsKwhMGmhYFQ==","signatures":[{"sig":"MEUCIQDvaOygYHEb6a/YtFCxVmPnofwGv4aESDOw4mXrqyn36AIgXYdRoXICVEj76LjIYOg3cSFxxz1HesDPVCRkaOBa47g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7001118},"engines":{"node":">=18.x"},"gitHead":"d4a423a29097c297cad6b8d5213acbed4ae0227b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-d4a423a-202404151633.0_1713198883388_0.7970773295058757","host":"s3://npm-registry-packages"}},"2.3.1-9464489-202404151703.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-9464489-202404151703.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-9464489-202404151703.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"afe320c22508cc2023ff91bd36b9f29fdbea13eb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-9464489-202404151703.0.tgz","fileCount":324,"integrity":"sha512-LsMgcfIcRqOnl4eOs8CQhFhnVCeIk2gjT/kwGyU2hHyF5BiLS7C1opVOtQotX1ZZSjkShccNcfIiI43PTusbdg==","signatures":[{"sig":"MEUCIQD9SqoB9MEf6uz8WQEIuyYXK0PhesGG7Id1pqDf8royswIgXupnMxFCT3ghU3Apyte7+GSoNv2WCnni2YdnHV3psdA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7001505},"engines":{"node":">=18.x"},"gitHead":"94644897df1c66d90f26f1fe7d82db99608c0db6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-9464489-202404151703.0_1713200685929_0.7641391955854275","host":"s3://npm-registry-packages"}},"2.3.1-b4fe7d1-202404160931.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-b4fe7d1-202404160931.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-b4fe7d1-202404160931.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4354e146a9b295c2d536ca6f55821b0fa18c3c5d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-b4fe7d1-202404160931.0.tgz","fileCount":324,"integrity":"sha512-HwlZWdtD684glzSgzCE5+XkW80dy751u9NAhkdekKCLrGAPpBh2+fvbXB90shTc5M26NaDKvg71dPLJpXXZNqg==","signatures":[{"sig":"MEUCIF7eg9SB6s+XW2F77aUiW+MItP/VnKuGF8J7QHZ47DxpAiEA9pjEqkPwPmvOfginyfywCSOnL9dElu7i3MexGKCRC/s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7002103},"engines":{"node":">=18.x"},"gitHead":"b4fe7d14ba8c276ff39d0fa6cf2e17acaff74227","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-b4fe7d1-202404160931.0_1713259961541_0.38895121840800995","host":"s3://npm-registry-packages"}},"2.3.1-441bc23-202404161113.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-441bc23-202404161113.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-441bc23-202404161113.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"463439449b2eff0d8b71642ba3a384d445632212","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-441bc23-202404161113.0.tgz","fileCount":324,"integrity":"sha512-UHEldQthZFEsmyG3C8y4nHeoSEYZQ57DThoRikU4GbZbzwvOoXorv02qWQRI6qOjOgHfZaogW5Mxp0YGtTYtwQ==","signatures":[{"sig":"MEUCIG4byRUDsBQPhpTyo0DSFy8553sDs2pIzH6cMvrru6kAAiEAj5udQb24Woh1UWzcSc8SVGbfTIlKZqv5YV3L5mtAffU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7002103},"engines":{"node":">=18.x"},"gitHead":"441bc23e97eedcdf7cf68fffcbb93bcbd2090a3a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-441bc23-202404161113.0_1713266051688_0.31162680175187907","host":"s3://npm-registry-packages"}},"2.3.1-215cce9-202404161230.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-215cce9-202404161230.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-215cce9-202404161230.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bc15016c85a35937320b909deb0575aea92d3149","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-215cce9-202404161230.0.tgz","fileCount":324,"integrity":"sha512-ShVS1fBhIPsL9mxQixly82wdec61beZQMPkvIPCvHdVnHVIpsvMyJVgQ6W18ozG2pExeZ8vVzPoO+vQBH9H71g==","signatures":[{"sig":"MEUCID+ntjNsHhFvW2RfrvdJ4CQGmV08VNOicShv8jieriSiAiEAvcoTWX0Ytvm4lOyxoctt7Cw4d46mrGJ9zRvYiCoijaA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7002151},"engines":{"node":">=18.x"},"gitHead":"215cce9d6df356762a99a172d9de9059c21b8011","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-215cce9-202404161230.0_1713270705306_0.40001469161623104","host":"s3://npm-registry-packages"}},"2.3.1-c0b279d-202404161300.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-c0b279d-202404161300.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-c0b279d-202404161300.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bf14fee9b5540d51f1e55695f944f4a42001329d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-c0b279d-202404161300.0.tgz","fileCount":324,"integrity":"sha512-a4UNXTi/Gg13lC+5BLeCrsTs0XsXT0XJQxgVe/uP98YO12CwL7iZj4CeEiuUdE8v9SN5NYZK9Susg0yD4lCkOA==","signatures":[{"sig":"MEUCIGnSeX6Gdinbn2DoN0X0Hin3mvttUwyFoIltLjMSFlYwAiEAixvufIgCPkMLRlpe2aCYWmfGeEqIswPSUjK/jPvOYV8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7002296},"engines":{"node":">=18.x"},"gitHead":"c0b279dcc758c987e8ad0c9da008f40691fe2351","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-c0b279d-202404161300.0_1713272518118_0.625500369603732","host":"s3://npm-registry-packages"}},"2.3.1-e0916fa-202404171128.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-e0916fa-202404171128.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-e0916fa-202404171128.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a8e42a4117384f25036891a1d7961d5e2d1b4156","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-e0916fa-202404171128.0.tgz","fileCount":324,"integrity":"sha512-OFe756/q2ASuEJuMNGAV6qMgBDxao/veGOJmrI+/juaZPlMwZainh5fHReCaKHrnWJUDZv2pTC2bi/ZxLP+aYQ==","signatures":[{"sig":"MEUCIQC34dnC3nc+/VPjCkPCozbPFx2y+VI6gQxwzPx42HiFwQIgJWcbuQ4vGEtKCjwRp9PzE//Pfsrbfo4/DhPP4j2Gwoc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7008172},"engines":{"node":">=18.x"},"gitHead":"e0916fa4d63e3ccc1c7f1c5935d47678b2a8bfb5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-e0916fa-202404171128.0_1713353389234_0.3135551903848919","host":"s3://npm-registry-packages"}},"2.3.1-6b92d2d-202404171327.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-6b92d2d-202404171327.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-6b92d2d-202404171327.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"73d8d1c79258e27c1b6170d2c211111bbc805ead","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-6b92d2d-202404171327.0.tgz","fileCount":324,"integrity":"sha512-vH+2fNTbHCReveTbhodtWZ342rLqG9rgZNHMPKnXfxDXvwW01xb82ROJ3HGo4MV+ZbLrYspdFUl6KVwLHPvX5Q==","signatures":[{"sig":"MEYCIQD+gkADcSESt2DwMCxmICb3FI8JCTGgpibrkGWwdqLy9gIhAP/MInTwhsTi8mDUyMfbYeKTF7GjRRI3DCNSOj50/enD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7008171},"engines":{"node":">=18.x"},"gitHead":"6b92d2df1f0a2c944f4a8827ed8470c1ee1ba584","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-6b92d2d-202404171327.0_1713360521863_0.4862842177734905","host":"s3://npm-registry-packages"}},"2.3.1-8264757-202404171539.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-8264757-202404171539.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-8264757-202404171539.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5255a66a2f50d374e954bb7969fb3db5fac18eac","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-8264757-202404171539.0.tgz","fileCount":324,"integrity":"sha512-ci9THuLlEfbba1hfKziIysJ/vIQSw/iiae+hc/V4boSwRxgG15t/K8Kz1/PLTTMbrIvmlFxLNaYdrHD4i3lUBw==","signatures":[{"sig":"MEUCIQDSm34z1SENKw/uhVgAzdQyOCSXZ5RRFhsSqiDEALhQ9AIgbdcLlXBUn2gBt3QpmZ5GrGsJfIRWmLizMX2e4g0ZTAU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7008171},"engines":{"node":">=18.x"},"gitHead":"8264757e101ee0722608eec4e48a9855d5938bea","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-8264757-202404171539.0_1713368472927_0.09713988016511044","host":"s3://npm-registry-packages"}},"2.3.1-accf764-202404180716.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-accf764-202404180716.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-accf764-202404180716.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"47d22e341cdc6dab4061ff936c12c28880000818","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-accf764-202404180716.0.tgz","fileCount":324,"integrity":"sha512-lbXmGRqgOJ3n7Ln3e+G2L9k+6CzK85Z4ofGzpklTJA8anv4dnWA1mwmaZSWF6qy7EYD231/OnXWAYlMzbDhoTw==","signatures":[{"sig":"MEUCIBYfHd6nNFkZjqtFVlKnBsFggK13/Iyuq2WgeDTwExZVAiEAnhXldBH1/DoK6nkLMHmrS1UH8I+fXfCAFJa4cQ0/lJY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7010399},"engines":{"node":">=18.x"},"gitHead":"accf764e829774c47bc6330ab2f63aa2cc2e0322","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-accf764-202404180716.0_1713424628973_0.0521558078173856","host":"s3://npm-registry-packages"}},"2.3.1-985a3c6-202404181027.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-985a3c6-202404181027.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-985a3c6-202404181027.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5283ed53977bc93c70c324ada605fea0c3bd1a45","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-985a3c6-202404181027.0.tgz","fileCount":324,"integrity":"sha512-CxwL0J6ttU9TjSZR24GcYEfT9DF36qH8GKkbhRxiq/qA0T2Lyh8JmAdTorfAOESvxTiGxKW/1JM18JLHH1ZuaQ==","signatures":[{"sig":"MEUCIQDLkPuBoYaX5daWSDoDeK68A4a3+8QyuKp+zsVvXVpXqAIgJRvT49N6waUlYFG+BdTY54xOmKJG70xAfmZCaG6GQAY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7010399},"engines":{"node":">=18.x"},"gitHead":"985a3c63ff826023ab07b1ed91f3960f5807818e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-985a3c6-202404181027.0_1713436114859_0.5320484749648553","host":"s3://npm-registry-packages"}},"2.3.1-985a3c6-202404181142.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-985a3c6-202404181142.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-985a3c6-202404181142.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"68f23a4df29450bda976d606eb4cc80764b499d5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-985a3c6-202404181142.0.tgz","fileCount":324,"integrity":"sha512-RaY2R9cuUPDXCnyqQI8WKCMynVkQKERxaWZrBGE/G2nxVlntx9cSEYk/sw2HkRy2sRh83MLNCjooZk2hFqw3ig==","signatures":[{"sig":"MEUCIQCN1M2L3iV7VgCZYI3E4ZtAybAqGJHBrd3eslPkZkp8PgIgAeUkFZtFgOGrv1+sArdztwe4RaHqvwZEl1DHeuz7OX0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7010399},"engines":{"node":">=18.x"},"gitHead":"985a3c63ff826023ab07b1ed91f3960f5807818e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-985a3c6-202404181142.0_1713440594583_0.5816020400351856","host":"s3://npm-registry-packages"}},"2.3.1-985a3c6-202404181432.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-985a3c6-202404181432.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-985a3c6-202404181432.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4f44fb63b271f97e657e52d4ab1cf06829d8d996","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-985a3c6-202404181432.0.tgz","fileCount":324,"integrity":"sha512-qTut6SrmBJaSowQmo1YlT+sPJ0a3nHseHtyo0nT4RmPdFn+rT6QZLRi3jq9KV6cckwp02AwynSqyJhf6KteChQ==","signatures":[{"sig":"MEQCIEYNPo/N0oz7RK9V8pUSgub8etcwFFsLrCHU614lVZEzAiBRXOz2foeS1JzMlEn+X/Q5hcqqN9xR7EfRPPEimT0h9w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7010399},"engines":{"node":">=18.x"},"gitHead":"985a3c63ff826023ab07b1ed91f3960f5807818e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-985a3c6-202404181432.0_1713450812994_0.9308701015295722","host":"s3://npm-registry-packages"}},"2.3.1-acc930a-202404191315.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-acc930a-202404191315.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-acc930a-202404191315.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ac097c775fc00d7a42a2ae3ae4edf2bbd34b11d3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-acc930a-202404191315.0.tgz","fileCount":325,"integrity":"sha512-zc10Wq2bls21YM4UGDP3T9rRc/vArP6wlwCDWXAfz4XrdHsOohXIKRRLzt/LADt+6yyFqkXgQQF6oCYkzGy1vw==","signatures":[{"sig":"MEUCIQDti6HpmSJe+s7l+RaLzSQYQn6EGURR5qtRBHn/zv99FQIgTVIWlkTd1KRtiuZ5rVQ8nOFmQg4ehAH6J0x58vKmLow=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7045758},"engines":{"node":">=18.x"},"gitHead":"acc930af1979a38b582db8bc5a7666b526ff1ab6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.5.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-acc930a-202404191315.0_1713532581797_0.22418165830752446","host":"s3://npm-registry-packages"}},"2.3.1-0f95391-202404221618.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-0f95391-202404221618.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-0f95391-202404221618.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e9e1e3a5fe603cd7903b60d4489484f0b895a2b5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-0f95391-202404221618.0.tgz","fileCount":325,"integrity":"sha512-Qvxe2yf5ZWJgH9tQy7HHQIVuQe9Dz3P5oIVFyLonmjG/GAhJCdOyu5ORk3qD0S8BNi/ghXK3URt5w6uhixOgqQ==","signatures":[{"sig":"MEQCIFeqgNkvaTmneapA8UYfnKIxqkuuFWTf86MPv6S7gfVXAiAXGZM7bvsMefQoemb1JlO+HJxOwO5UdEIYqpi2MF9I5A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7046106},"engines":{"node":">=18.x"},"gitHead":"0f95391b95ac938b839b6990dfa6971bbe242a95","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-0f95391-202404221618.0_1713802786939_0.3942679761091743","host":"s3://npm-registry-packages"}},"2.3.1-e1696cf-202404221640.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-e1696cf-202404221640.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-e1696cf-202404221640.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7490ff564727ee512b9c5a509264dc39dd7d71dd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-e1696cf-202404221640.0.tgz","fileCount":325,"integrity":"sha512-4f50G8haI8NoQb40vXh4FSwkauBZ3A5TA0ZwxmnM1gU//nw1YuPVjCDyhXH5P7qwmNloDsV6iAbkGICjGGRUMg==","signatures":[{"sig":"MEYCIQDmfu9QUlRV20axfV67ghawggs39LZmGo3jOMEa+zhbaAIhAMjjd2WhqmBWewwY0LrTxO73qWnNcwz3YBkE9q9qvlQD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7046106},"engines":{"node":">=18.x"},"gitHead":"e1696cf142d9afc927e2d177b1a1d17c4504b8c2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-e1696cf-202404221640.0_1713804066714_0.7197308848994541","host":"s3://npm-registry-packages"}},"2.3.1-32ea137-202404230901.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-32ea137-202404230901.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-32ea137-202404230901.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"141647d1173585556d6e010f0a07399e42898d86","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-32ea137-202404230901.0.tgz","fileCount":325,"integrity":"sha512-O9of21TIgdHemwbkyRgIAP8uocW3OXZQ1md9i7V8cTpVkMkiA1bXryMne+Ma6WjL4bU4LeHFxWFTZ30EIRCz1g==","signatures":[{"sig":"MEYCIQCEx4qX2bJ5suRvFV/TPcCmTiQwTS5xroIZUs4BfDB3nwIhAOQR043Ug2U74h6tihcZRo9Wy2k6wwWUm3xCzv/YIwNw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7046443},"engines":{"node":">=18.x"},"gitHead":"32ea137e85b59482094170f43db3f55022ad8e21","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-32ea137-202404230901.0_1713862946411_0.8267161830067733","host":"s3://npm-registry-packages"}},"2.3.1-49f1aca-202404230921.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-49f1aca-202404230921.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-49f1aca-202404230921.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"97d64e7230d31236b73ff3d3a407ab131915d3ec","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-49f1aca-202404230921.0.tgz","fileCount":325,"integrity":"sha512-Y5TOzjqcSe26yYzwxHx/0LgDto/mv5OrVtJ0yi1dUR6HSLcMRL4+bReSumt+keBjQdi2vmf/c6RYyQw97CvSvA==","signatures":[{"sig":"MEQCIGWlXi6A5oULvXDGdcf7NVLl8WGLv1mLi/aJFB4LBeB5AiAgsFs6Fv8bk7XqihNp6YeDR3U2Ww6V+G4/Cd/aWzgQJw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7046443},"engines":{"node":">=18.x"},"gitHead":"49f1aca8c23368fe079329e29f452ad8401d5f23","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-49f1aca-202404230921.0_1713864178574_0.9964709712561117","host":"s3://npm-registry-packages"}},"2.3.1-da40d72-202404231021.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-da40d72-202404231021.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-da40d72-202404231021.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"41b2a212e2db468e794baf80be0155729aa0f1d5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-da40d72-202404231021.0.tgz","fileCount":325,"integrity":"sha512-lZLp1EWoZ5tEgJhcZTKMblQH0mh2oNfBNBfZK4Cv1FywP+zXf3l1q1GbCoEOLhWu6DKwmw+81Ff65iH87IwHPA==","signatures":[{"sig":"MEYCIQC9/eUmxXrHiLz0xH6dlmIPaYWt/tAkwVo+EJexl9E0GwIhALt4KhbTHGXfwDN7QW890PnhD4+K9zYMe8CdM56Z5SVr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7046267},"engines":{"node":">=18.x"},"gitHead":"da40d72406dcd1c119ae23ab65c8fa00b3d13229","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-da40d72-202404231021.0_1713867775010_0.9732716050990242","host":"s3://npm-registry-packages"}},"2.3.1-2ca4eee-202404231056.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-2ca4eee-202404231056.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-2ca4eee-202404231056.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5626cfe28039c92bc6f97c46b55b650c19c0a4bf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-2ca4eee-202404231056.0.tgz","fileCount":325,"integrity":"sha512-coTJwWpROjBCRcs+XSEtBYgaUfEMw/uc6z8ez03cRoMzMCPT1NP8Ay3vOT9O3i426NM1seJfZnGhw8vvKbXiJQ==","signatures":[{"sig":"MEUCIGiQj79/Aedvn1g3xIc4WpCsU8u/QzQOY9pRcVqHkEr9AiEAg1TaBSwCRW9xT/lHeq9VxZtpzP9E1aCnPKiQtNJEUEI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7046267},"engines":{"node":">=18.x"},"gitHead":"2ca4eee1168355cded1477255b30a17d56518171","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-2ca4eee-202404231056.0_1713869874281_0.4419291075619536","host":"s3://npm-registry-packages"}},"2.3.1-f0d543d-202404231116.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-f0d543d-202404231116.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-f0d543d-202404231116.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9be1551687a2b6a7ca1e4b7f4314a792318a73e1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-f0d543d-202404231116.0.tgz","fileCount":325,"integrity":"sha512-qSR8jF6F4CQdMDm+sMpP1u6mnruWXYdFzZu/oKMjylSrcW1FV6dWrlHZnAyoDkaYKtS40P9QgjHoef9R57uFUQ==","signatures":[{"sig":"MEUCIDCM6JGL6NRaNU6ObHmat2wtHVpews0i1seWy4WyqWDgAiEAuOqeWdXTESYHnot06wKeeCe8JT3hy+zetCRQtcL69pk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7046267},"engines":{"node":">=18.x"},"gitHead":"f0d543d17d9895f2ce20c6f9addc248197ab7e5f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-f0d543d-202404231116.0_1713871063537_0.2408775978708675","host":"s3://npm-registry-packages"}},"2.3.1-40ed80b-202404241044.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-40ed80b-202404241044.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-40ed80b-202404241044.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"69fbfd7ff79b3f1cb2819a27216d876ff41c0a0f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-40ed80b-202404241044.0.tgz","fileCount":325,"integrity":"sha512-ot5OdNsgv/fEWWCTG9n5j0dIYo/tYPvq9IZya9X3aHDKa6IcQivWAA3i4I38iNMN+QgJ7khDwfJgvu2Vrt2H8w==","signatures":[{"sig":"MEUCIQCMxwYfnUP0csAtrXYzDjYFGGLe5oBz5Ob/9G0FguPpGAIgSZqm5luhqEYtg3ghe8aTiptwYAH/6OA/otMxLYGoYgU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7059747},"engines":{"node":">=18.x"},"gitHead":"40ed80bf1af69b82418d66e4f449e38ffd7ba0d6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-40ed80b-202404241044.0_1713955538774_0.6424563436292452","host":"s3://npm-registry-packages"}},"2.3.1-b4c8ae1-202404241444.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-b4c8ae1-202404241444.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-b4c8ae1-202404241444.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"85929089d3b2f596a23f5d866c07f93a63df894a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-b4c8ae1-202404241444.0.tgz","fileCount":325,"integrity":"sha512-U0O34luoDQuWMXsxK6qtcOvAP72ek/g01oYylv3bj+S187vjjuPUonNJbK1CUXNFbF3hMKg8HeV3U4IEDzMrOw==","signatures":[{"sig":"MEQCIBOg44Xw4x6OWo3zeoM48qq0uYaAAfgbXY0DTjLajMGTAiB4wSE4TQUcjBWroef9+l6RJztWJDDlCFlXvGhNmL2iXA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7059747},"engines":{"node":">=18.x"},"gitHead":"b4c8ae153a4e6addbd2bb5957beae11f270e700c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-b4c8ae1-202404241444.0_1713969923194_0.8830528984091064","host":"s3://npm-registry-packages"}},"2.3.1-8e2b814-202404241603.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-8e2b814-202404241603.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-8e2b814-202404241603.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bae5e379c60b0ccb227d390b3d9a047dcdbb39a3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-8e2b814-202404241603.0.tgz","fileCount":325,"integrity":"sha512-pNybmcM+nlArAH0OhQdj7jSRdCTWmmjqO46ttypkJss+i8ZAh/rHN00VbObukwup5UcJho4fEOQGLZdf6IYHYQ==","signatures":[{"sig":"MEYCIQC4KYFDXU1hq7WJAfT2l2mDUInoNWj35Bp2kDTAZgU2xgIhAOCWw61OBg9m1FP+I40gdHLWMyhe3MawT4DQzFQeL5lJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7059747},"engines":{"node":">=18.x"},"gitHead":"8e2b814d0298e32f36a038b5b7c43b8063a2d5ad","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-8e2b814-202404241603.0_1713974695499_0.6759861642503895","host":"s3://npm-registry-packages"}},"2.3.1-2976bed-202404251031.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-2976bed-202404251031.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-2976bed-202404251031.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"84e9af46ae2794d0f740505e73b44fe1c8be39e4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-2976bed-202404251031.0.tgz","fileCount":325,"integrity":"sha512-dtL1+zWbZha1ZoZ/cLlb7+HK03BHk0dZ8+ipRq3qo+x4O783AN8ziFQBbq8ZA5p+wx1LzMGWrqfmdCigg1l0og==","signatures":[{"sig":"MEUCIDFSww7emgzShqE5Qe3W4LZ8Un0H+r5pGy2ItBo1O1FoAiEA+q/N/2HOhcIbNNrgHzMd0i2BT//EQJDjgtepfytA/0g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7059747},"engines":{"node":">=18.x"},"gitHead":"2976bed40c125ba031efb568808176334b0b63a4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-2976bed-202404251031.0_1714041156229_0.13463073903712042","host":"s3://npm-registry-packages"}},"2.3.1-25a5e52-202404251825.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-25a5e52-202404251825.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-25a5e52-202404251825.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3f1b57780af834b32005b93d837b7bb484515eb2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-25a5e52-202404251825.0.tgz","fileCount":325,"integrity":"sha512-xkCT3ofc43rz+RrNSlGmEap5Y35oSpUoH9d4PrNMYEK+EHZP1Gvo/67Rie9mRqvTD4+psh2geTY/QS7fxClbgQ==","signatures":[{"sig":"MEUCIQCOq/9/iqGkTs+kpm+yvS8eUw2coDkrXwd6MzLF0q4JrAIgOOFNVBFbOu3LkoWbvw1JN2nTC+WDOLCvxtUQUw2ppDg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7059747},"engines":{"node":">=18.x"},"gitHead":"25a5e527f0c3e4b618edbbeea38ad9a2bc4e16ea","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-25a5e52-202404251825.0_1714069583169_0.020261938851372507","host":"s3://npm-registry-packages"}},"2.3.1-6ad9cca-202404252118.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-6ad9cca-202404252118.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-6ad9cca-202404252118.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"aa51cd8a6823dbbc6913f47336368bdf917f26f6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-6ad9cca-202404252118.0.tgz","fileCount":325,"integrity":"sha512-JLFnc6fDjVe7TfpUeRD/GXUl18ObyND4i+SWlhb3/ATJVWKVJjbGDD3pB9Te30o6/+iCKHo85hwuyqQFgIkutQ==","signatures":[{"sig":"MEUCIDtN4hLRWdwJHb7lKK7wRgZRflGm1HzWni3tkxZOwGwPAiEAvbhuGXN0n8v/1u9ZX398HqbRZFsZYBdad4ib9amUqZI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7060050},"engines":{"node":">=18.x"},"gitHead":"6ad9cca6f644bd9f72f308cb3e0d3327f5c0e318","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-6ad9cca-202404252118.0_1714079963916_0.26153717661666787","host":"s3://npm-registry-packages"}},"2.3.1-738d467-202404261419.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-738d467-202404261419.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-738d467-202404261419.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"21a26eb116538404bcf4df4dffb97f726da3f065","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-738d467-202404261419.0.tgz","fileCount":325,"integrity":"sha512-HFjLJw+Y34i4Qj4RByulqXpEAO8TnFOLE2JlCgZcUYiGgYNEafJjo4w+j5RaIzqi2mgKioHEBk8zNvKqIXTWWw==","signatures":[{"sig":"MEUCICyAaK3rZ8cLHzrlrgRP9EpHQly8xNpn6j/nGyg9/aACAiEA2lkz4R/L9osl6uNg846fl9MlXOpo+Qly8lVzrkqFbi8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7060050},"engines":{"node":">=18.x"},"gitHead":"738d467cbcbc57197a36d1c87d6b2ca875fa3781","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-738d467-202404261419.0_1714141255852_0.01622002421977009","host":"s3://npm-registry-packages"}},"2.3.1-5022efd-202404261429.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-5022efd-202404261429.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-5022efd-202404261429.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"88551d3e3103e39d0603d759678d1d0ecbce28f1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-5022efd-202404261429.0.tgz","fileCount":325,"integrity":"sha512-Jc63+q614WaGB5eltvrRZ3VF3KAYFKKjdJxUXbQ0sHpHsxkgXaW66lekhbs4MKuzK7JG+y3VPrFYO7aoc5au0w==","signatures":[{"sig":"MEUCIQCMTHwX1y84aCtKq/h3EkzZXQPlPCSyw2nw1KVvC4SgLwIgHRj+kpwvISb5cvjsK1NYQxiTYZLjVh3kzwf8TcsPbgE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7060329},"engines":{"node":">=18.x"},"gitHead":"5022efde447145c810a927b62558a866e3dde980","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-5022efd-202404261429.0_1714141857534_0.5849577207731684","host":"s3://npm-registry-packages"}},"2.3.1-5022efd-202404261433.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-5022efd-202404261433.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-5022efd-202404261433.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"070b42b6cb6169026eff7c917c56b45ccef81784","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-5022efd-202404261433.0.tgz","fileCount":325,"integrity":"sha512-qEyBkMpLip3CwhDXFlkZMtMD+YedD7mkuBViDPbyydvj05tPDvgX7kkFSemnkuVjzEIQnl29GibSi3V5+l8XGQ==","signatures":[{"sig":"MEUCIAo2i06UTmoscswfqKcn04MsspFCNL0u6b2oxp6FspJoAiEAhlH0PayLrA3L7rXWcK7G9piU7+J1/DKZIktUbIDCwR4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7060329},"engines":{"node":">=18.x"},"gitHead":"5022efde447145c810a927b62558a866e3dde980","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-5022efd-202404261433.0_1714142087575_0.22967489078878311","host":"s3://npm-registry-packages"}},"2.3.1-87e8fa9-202404261601.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-87e8fa9-202404261601.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-87e8fa9-202404261601.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d83c16b9fc3cf94a69b77290c7f8376674b9dc11","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-87e8fa9-202404261601.0.tgz","fileCount":325,"integrity":"sha512-1Waxjy06ZsSI+nQ415QpR4CJZ/CkUhHb0hLl7F7kg2fO4vqZuMLaPDfzZLBVleTgs/rGIuOEQ662Vh2IYZLbeQ==","signatures":[{"sig":"MEYCIQC9vBnLKihOT1LmySvESVoS3HBcpaZim0AYyET3hQcAOgIhAKBbcdomeln7P8Hw1bnEdLMzAIQMQdBKDxneMWKF0zGr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7069153},"engines":{"node":">=18.x"},"gitHead":"87e8fa9266f3fefe278b8ad56a68f80b879be006","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-87e8fa9-202404261601.0_1714147380114_0.6060935501247919","host":"s3://npm-registry-packages"}},"2.3.1-87e8fa9-202404261625.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-87e8fa9-202404261625.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-87e8fa9-202404261625.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b6d3c3e623299b5eababe3c962dce638b011e1f4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-87e8fa9-202404261625.0.tgz","fileCount":325,"integrity":"sha512-Nje+0tW443EXr3WQ6KnayAyA2oxKnD9bmXzKaTHv6l0wBGbht7NEPHM3GOBWAmYR4hIH1rBEEBWdv36OW6kiMg==","signatures":[{"sig":"MEUCIGEjhroNlyD4DJWZn1RtHHPMBywdxO/DSrmlLgRvr5C7AiEAnW+BoU/0KdcgO0C+XU24tsZTcibClD7wVFxLHvV8Mn8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7069153},"engines":{"node":">=18.x"},"gitHead":"87e8fa9266f3fefe278b8ad56a68f80b879be006","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-87e8fa9-202404261625.0_1714148822521_0.1304119027157291","host":"s3://npm-registry-packages"}},"2.3.1-64cd01e-202404291040.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-64cd01e-202404291040.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-64cd01e-202404291040.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b11c17d1743538a858a3c8705ad5df588174f6b5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-64cd01e-202404291040.0.tgz","fileCount":325,"integrity":"sha512-xLDOzIPsOah3KhCokFkD+DntyHHGOLbhrjEdX1tbhPB3Zg+L4XPvYdH5lVzOjAKXwvmB3Iv2z+Aia1lajxahJA==","signatures":[{"sig":"MEUCIQDinh3LUqBHl2fuPsJEz0XpgSZvoT20DJyyA6dtVLE7pAIgdJWstRPyYoHces0DmPU+BHP9DivLeVtEarxyQw1mLfI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7069735},"engines":{"node":">=18.x"},"gitHead":"64cd01e894979c55877d4a2f267667f4b90a39cd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-64cd01e-202404291040.0_1714387271164_0.3919238317938307","host":"s3://npm-registry-packages"}},"2.3.1-8c36a97-202404291537.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-8c36a97-202404291537.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-8c36a97-202404291537.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"443358c26c6df22ddae68e4754c9609355b0e50d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-8c36a97-202404291537.0.tgz","fileCount":325,"integrity":"sha512-SA7gKu405fjpzPBGC2kiaTs/PrivJuznmiJJtu4wuDvdUyfLrcnjlpDC0O7/alc7tZdw+LiXivnDCtGmdsVijg==","signatures":[{"sig":"MEQCIAyFvYH6oh7o7gj90BP7elqDT/xWB9wESNfXoVWhLGtdAiAbaRsscUrq8LI5pVrywzerjCnm+aG8rQYBHM8NnrPiKQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7069873},"engines":{"node":">=18.x"},"gitHead":"8c36a97be5cdcc8e0a7ee5f6a93e24ee88d0d259","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-8c36a97-202404291537.0_1714405143454_0.2722249565537167","host":"s3://npm-registry-packages"}},"2.3.1-ae612aa-202405011141.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-ae612aa-202405011141.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-ae612aa-202405011141.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"26b6e2d5f973d0cc0ca0d6c9fe0c5ea5d94e2d28","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-ae612aa-202405011141.0.tgz","fileCount":325,"integrity":"sha512-6rIJVCKi3q6PhRO2l1ZB1iCtqeMsORFzDrB/npXyfETgyPx+c6TTbGTTk3jMLO7K7Slpj+Z0cvsUemmhQH0QTA==","signatures":[{"sig":"MEQCIA2usqAYVKtF8ve5CjA5p/YC6fV/3zmI5I0Isah6KzrcAiAssp+A3lkvL7NeDhJLwkltgwyR2j+o0HNVEhLuCfMnxQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7069873},"engines":{"node":">=18.x"},"gitHead":"ae612aad5d3df680c10517c8bdc36c55bada2158","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-ae612aa-202405011141.0_1714563763292_0.7674497368181199","host":"s3://npm-registry-packages"}},"2.3.1-b7e13e5-202405011259.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-b7e13e5-202405011259.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-b7e13e5-202405011259.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8e685f3c6934f371a095bb5e8812b1990ae161b2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-b7e13e5-202405011259.0.tgz","fileCount":325,"integrity":"sha512-JgwxZMgMepkK2V3q/5mkHjjKCsWPXnA3BVHyLbokWXdzJLeROCiEvzbLMij1XBJre6UV9pr1v8f3GYIZd4cpUg==","signatures":[{"sig":"MEUCIFc6GqmWJrYv09SBvAnk9bNQXpbCPNHyKagwSkyJ/YSWAiEAmokw/NfBFatcz5OFU7lwDrEkAAmji5kFRCUHqpMvgZc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7081935},"engines":{"node":">=18.x"},"gitHead":"b7e13e523786819ad20fe303fe856ae1034a11d8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-b7e13e5-202405011259.0_1714568443606_0.7538683436718323","host":"s3://npm-registry-packages"}},"2.3.1-426379c-202405011415.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-426379c-202405011415.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-426379c-202405011415.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f8340a5bd5fb3a18ed03e651d494dbfe72b2dd90","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-426379c-202405011415.0.tgz","fileCount":325,"integrity":"sha512-haFVz+ugvq2pJau4sFClo5539kDfhBAU3Ft7Va2Q6jeE13gmOl8ME90F7TfV0Yimvv4QN0eRrr7qjQhEqWadzQ==","signatures":[{"sig":"MEYCIQDiOR8hhjMslDoGJauPjAAzcMvFDDCd05fLfrpV/oVv4AIhAIgWLBcquX7xbXqrXI14mqARuZ0MSYECwPvSUVkH1RaU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7082757},"engines":{"node":">=18.x"},"gitHead":"426379c7993acf0ec249a652ad1657eb21f0e870","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-426379c-202405011415.0_1714572988608_0.45744341188687176","host":"s3://npm-registry-packages"}},"2.3.1-0a0506c-202405011456.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-0a0506c-202405011456.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-0a0506c-202405011456.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e4be56487efb904add63a37ccbcfda65bb5620f0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-0a0506c-202405011456.0.tgz","fileCount":325,"integrity":"sha512-n0yyLPpwHG3LXGlUZXB1g2GAg8ajLjoUMsqp6VIPcEmYfvCadoGfYZ1WaP6OVqF308P4dH+wHiLTyB6z9TMKLA==","signatures":[{"sig":"MEYCIQCCcCAUZKVXZcXsZ4bSz1plH3sw6uMw0GNpX/fWOpDkjQIhANyaOwmO7vPzx1B5U80DxW2GmyRHbNbGe/GlZeBFGP3j","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7082757},"engines":{"node":">=18.x"},"gitHead":"0a0506cbc39c7ec76ff9fe13a6cc9aeda6f89757","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-0a0506c-202405011456.0_1714575434655_0.3475999924505071","host":"s3://npm-registry-packages"}},"2.3.1-2182004-202405011513.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-2182004-202405011513.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-2182004-202405011513.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ff58a91e7ba0641b554a8550c5f226b6273b2846","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-2182004-202405011513.0.tgz","fileCount":325,"integrity":"sha512-HEOAmhSGwP2fLbZ0OoG95C6dSwiqNAHjwHgyEuNwDBTdKtL28FQ7QXXyv4ThBMBrKZH74iSDQQ+UTLCX5BvS5w==","signatures":[{"sig":"MEUCIQDcl3nQGkuyx6I2QNSdzMZQPqpMJpXI5MrozRPxpfXE4wIgbxdGQdgRwSYk3KsuiqCsrjD+AMQfUPjgMXTDtbHyAxQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7082921},"engines":{"node":">=18.x"},"gitHead":"21820041aea2f3807cfdac224c0105371aa347eb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-2182004-202405011513.0_1714576524016_0.06413122643785951","host":"s3://npm-registry-packages"}},"2.3.1-2c2a7aa-202405011532.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-2c2a7aa-202405011532.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-2c2a7aa-202405011532.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"624a1bd7d351b2128c2d17ee3b0230add3644b0d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-2c2a7aa-202405011532.0.tgz","fileCount":325,"integrity":"sha512-FtvFHwj95kVhLqsOgazd0IqhaK2xe2QLtKnJGcKfSWIjLfQqRdUVBMJ+uxWVVZGL9/jfsuWMfw7GewvR3ZO4xg==","signatures":[{"sig":"MEUCIAowQ9UqEkOZ4/T57U5Lu4EmvTJ+A88SiTXV3rHXLj06AiEAqRg3SCOjwNbkZ/pC7DbgPNUo+sfv4bZIWOKIutnm8y8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7176930},"engines":{"node":">=18.x"},"gitHead":"2c2a7aa06164d393513a9c8d2b57a14b53b4c83a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-2c2a7aa-202405011532.0_1714577644547_0.6649995601097165","host":"s3://npm-registry-packages"}},"2.3.1-2c2a7aa-202405011538.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-2c2a7aa-202405011538.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-2c2a7aa-202405011538.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cbf98cf148d425dc7e2cd5dcf33d03411539187e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-2c2a7aa-202405011538.0.tgz","fileCount":325,"integrity":"sha512-6KLqYlch5q+Cd9f9KO+pMRQYWogCqxvp/bw+QVejp/SMfv/qj1KePKeSXUpL/GlawwxN43e2tYKg0Y0snOjDcQ==","signatures":[{"sig":"MEQCIH7u5d3NUETq3V6AwDg4QtNySNF7n+um3IFTVnZLZLxRAiA9W9LH2qKKyrg/cXgdsHaRpsZ2bxLAAe+G4GORm9pQoA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7176930},"engines":{"node":">=18.x"},"gitHead":"2c2a7aa06164d393513a9c8d2b57a14b53b4c83a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-2c2a7aa-202405011538.0_1714577980634_0.21094025044102982","host":"s3://npm-registry-packages"}},"2.3.1-561e3e0-202405021036.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-561e3e0-202405021036.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-561e3e0-202405021036.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ed6eda2ed62e93cf37fcfff7eadb12a0974bd8fb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-561e3e0-202405021036.0.tgz","fileCount":325,"integrity":"sha512-nhPwKM5JeoL9gbFgj9zGeznG8KTqNqc5zGoiMKEqMscuerTtmh7e7EmSBn6m/4hvldkpJy0RCUVAPvJcc/7xLg==","signatures":[{"sig":"MEQCIDiOe5wh3MLYb5RhRDwTySaohmAc4H5HbSofT4SSHpxYAiANYSpiVzno0lsnBSKchAe9TfOnvwx/PR8FG9lVzFOjag==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7177072},"engines":{"node":">=18.x"},"gitHead":"561e3e0c4838f97b26d30f3e0b23bc4c59caaddf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-561e3e0-202405021036.0_1714646251513_0.3813973694215691","host":"s3://npm-registry-packages"}},"2.3.1-9844d59-202405021531.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-9844d59-202405021531.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-9844d59-202405021531.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a1eb796134f9c4e150d48ba03582e24341c567e1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-9844d59-202405021531.0.tgz","fileCount":325,"integrity":"sha512-Z4r1GTg0J59nOIYXq5nL1BzTeOZ3COv8AFjSJ1+2X9yNfcycYDXSF0OpB8hfoABdp9agHUNVM02PvYTtoD4ong==","signatures":[{"sig":"MEYCIQCfGA1JKKFKJ0vK7o9Q+yK+q0/H6eXyC6lH6WI3tQUpvwIhAPGo9HioM/NcHNHa+2tTFpX0uRMbp/KkF18eVHHmZGIw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7188043},"engines":{"node":">=18.x"},"gitHead":"9844d59704221c581d96373967455a64e00b79de","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-9844d59-202405021531.0_1714663955447_0.8655076422517205","host":"s3://npm-registry-packages"}},"2.3.1-9844d59-202405021655.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-9844d59-202405021655.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-9844d59-202405021655.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f1dd64227e43a1b3f181c551fc5111982874a25c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-9844d59-202405021655.0.tgz","fileCount":325,"integrity":"sha512-KRAvrptllRx4Fm+HmAxHWpcRaCgAK7C3Q/1Y6g0v+eXpFpuwchjhHb4FmNs32UwFq19TuJoX54DEE4yIPTQc0Q==","signatures":[{"sig":"MEUCIGbeoaGUy+giCpNRjijJ5EVKR0+2tQP7ZDd+sDpGu/D3AiEAk8yx27HIuypCEd8D1mxfgXvhmcu6qHAbh+ymNFe7a9I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7188043},"engines":{"node":">=18.x"},"gitHead":"9844d59704221c581d96373967455a64e00b79de","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-9844d59-202405021655.0_1714668973628_0.06465172525949647","host":"s3://npm-registry-packages"}},"2.3.1-9844d59-202405030942.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-9844d59-202405030942.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-9844d59-202405030942.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3395185bd6c61f013a5d5e9e8a803c32961115c7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-9844d59-202405030942.0.tgz","fileCount":325,"integrity":"sha512-muOYQ2Sv9MK9jVc6LNcYB29o8h3xMouSvzN1o9IywGgM6/WA+GZp85De7oXCVaJtDUuUqu5NF5W7+bf7Nfhclg==","signatures":[{"sig":"MEQCIHJH293IkBy5N0gSbn1zUvYfo79SVsGfxfuglYbSlN7aAiAS4qs0pct38iSw+IrriIntODzdu3EdAyvoBoN5O6SoVw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7188043},"engines":{"node":">=18.x"},"gitHead":"9844d59704221c581d96373967455a64e00b79de","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-9844d59-202405030942.0_1714729413360_0.08679768920963893","host":"s3://npm-registry-packages"}},"2.3.1-b34cf65-202405030956.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-b34cf65-202405030956.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-b34cf65-202405030956.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d8f1169d6a763c43fc32ee20cc85ab5a0d8af470","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-b34cf65-202405030956.0.tgz","fileCount":325,"integrity":"sha512-1O1tDM9SpGeai7R6K0HeH/urQGnduYkC7MhATyVQ77Thh5IvtbQ2Mu3adP1yCIW0ZHz6bBfRnE6VuWeH4rcUkQ==","signatures":[{"sig":"MEUCIFFR4AZWCXN40iS0CsX/DMMkU1f0RkBr/AtYQGPXKS6yAiEAl0Ufdea8tPMzBKC/TXEHDrng4WspmiRwqPJiWMXD8/w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7188271},"engines":{"node":">=18.x"},"gitHead":"b34cf65292b0b2e7911bb7eeeb8f6f05ead6d096","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-b34cf65-202405030956.0_1714730235787_0.23067002801579495","host":"s3://npm-registry-packages"}},"2.3.1-b34cf65-202405031016.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-b34cf65-202405031016.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-b34cf65-202405031016.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"534e10979573bd3b8b0cd5cfbb1bdfbaf5d5f099","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-b34cf65-202405031016.0.tgz","fileCount":325,"integrity":"sha512-M+2Uxp/m005achfXRBP0sK/oeY2EYh0z9qAMPE0WSjn+qwvlhmCpVeTHAJRaFBvTjzazBWWeLMG+HCBaBmSY0g==","signatures":[{"sig":"MEYCIQCaFif9VxQI1K854KK7NiDpwdxMgUQjRGrstN5p4yxLigIhAKsIdG/UMW7A4VC4MzJLWUN51dktEjQt/hCJz2lAHBkT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7188271},"engines":{"node":">=18.x"},"gitHead":"b34cf65292b0b2e7911bb7eeeb8f6f05ead6d096","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-b34cf65-202405031016.0_1714731440527_0.9554357726923579","host":"s3://npm-registry-packages"}},"2.3.1-b34cf65-202405031024.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-b34cf65-202405031024.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-b34cf65-202405031024.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dc619a1f6e2508c98662eff8c9e3050c1cdae698","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-b34cf65-202405031024.0.tgz","fileCount":325,"integrity":"sha512-aTF9rRccbXye05WmaM+pzWrfj0EA4rMThUmYsPb/yQxG+iXiqNetHU0lxf1YFrdgE7+LHM+SlS/IGmogASpkIw==","signatures":[{"sig":"MEQCIHEP4Q6ORcrkY1uq1bwbS/YdXhRmPX1k5oviFV1gznOqAiBkKbbkVHQyhvRLH41bJnUPQrG8NjzLQp3O1Oz438/iGA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7188271},"engines":{"node":">=18.x"},"gitHead":"b34cf65292b0b2e7911bb7eeeb8f6f05ead6d096","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-b34cf65-202405031024.0_1714731909644_0.33374049204016054","host":"s3://npm-registry-packages"}},"2.3.1-8cd145d-202405031256.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-8cd145d-202405031256.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-8cd145d-202405031256.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cc08051c346285fc658b12d9df7b8daf7a1dd431","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-8cd145d-202405031256.0.tgz","fileCount":325,"integrity":"sha512-FV0AySB36Sz1GaOXtAONAH5sFFPvHxlOTfdxnND1E5fuqqSiJ55PId55kpGH0fHzTVTo3wunaFMxgI9tYufgsA==","signatures":[{"sig":"MEUCIBeEyIul4He+j2Ua0bIpMqBSh5XENW87AHlsfCPoAS7AAiEAjGr0AfYJCyOVlYVcDKeM9JLd2hvbJ5jTT6dYba4Y9ns=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7196253},"engines":{"node":">=18.x"},"gitHead":"8cd145d5e8225fc8af0465674c8673d1cb5f5f80","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-8cd145d-202405031256.0_1714741038871_0.8558398276354011","host":"s3://npm-registry-packages"}},"2.3.1-294c6d0-202405070845.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-294c6d0-202405070845.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-294c6d0-202405070845.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f1bdcd77053dc78a00ac52ea55199b64b41e78f4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-294c6d0-202405070845.0.tgz","fileCount":325,"integrity":"sha512-2JdhmL10VJVpR9FlHWSIHKyqS01qq0LeVQ5chlWKMcw2SuK+rinDl2m7BNyljx16+KUynD+/i+5dLHX5gGcnpQ==","signatures":[{"sig":"MEUCID6PJs364PhkoMAYNvL4Lzg+YfMpSD3b4pXeTMvNxlaYAiEAh2ztP5Qbsorh/QKLe4W3zGp3HVjh69N6u+wwvMOVUr8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7196253},"engines":{"node":">=18.x"},"gitHead":"294c6d0b951651ea5fd1cf978e935f052229f479","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-294c6d0-202405070845.0_1715071590335_0.6745755880119055","host":"s3://npm-registry-packages"}},"2.3.1-519b77d-202405070927.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-519b77d-202405070927.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-519b77d-202405070927.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"17c9490eb269798d19f9b2dc0e13d76931a61381","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-519b77d-202405070927.0.tgz","fileCount":325,"integrity":"sha512-zv065HSMDJBU1V2zn2MJC/r0GUpfMeoVXDx/nvMEAhzP0xk1Xw+KdJdw2c5aHhifWu6VebXnrEvh8Mfmq/r0uQ==","signatures":[{"sig":"MEUCICiAd3yJZZAKcatMUDgCrOqSt+OUCQx+cjg+TC/E1tkrAiEAkU9yBryqCOWzUMgUwBSpX8s63IXGxFpZl+DtlkWwyFw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7196253},"engines":{"node":">=18.x"},"gitHead":"519b77db89942fe61a4322765a286d6e9284950b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-519b77d-202405070927.0_1715074147513_0.06717314849161715","host":"s3://npm-registry-packages"}},"2.3.1-69af6d8-202405070953.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-69af6d8-202405070953.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-69af6d8-202405070953.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a361e072dc3b9b9cdd95a6de58d3a84789f590a3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-69af6d8-202405070953.0.tgz","fileCount":325,"integrity":"sha512-WIXZWSYdRUbiqONu5EuncuD9xBdm4YXOqBmVksSTUA+gsn41pZdmttj+mKfXmS5fLnsgI0hSv+Ax6kczdb+6EA==","signatures":[{"sig":"MEUCICHC8bBvyrA7Q/9QuNLPSQwnPrn0vGXv/2xZSJD2rzOeAiEAmRhZnS+1m2obKi/UEpQfQ19gJx48ixHbKXuiAVTeagg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7196249},"engines":{"node":">=18.x"},"gitHead":"69af6d83c17f8431f02fcab8dfc5561d88d81f1b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-69af6d8-202405070953.0_1715075655192_0.43943585532721374","host":"s3://npm-registry-packages"}},"2.3.1-3cc710c-202405071114.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-3cc710c-202405071114.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-3cc710c-202405071114.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"72488612f683ee37a37a53690b49966204249d2d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-3cc710c-202405071114.0.tgz","fileCount":325,"integrity":"sha512-+WHeEF36GRS6k2wB2cwrcLBQKkEE+NIzTyCF+nF6f/vWTDrARfhUkOByQXmfuNGxqNobX6b1bTF/6/aLLtTx0w==","signatures":[{"sig":"MEQCIGPlFGyBMuKLK48J3A7gWc7jdFui0/HCXOoBYyjRubZQAiAMoz8mRVGtOhJSQpmXzoQ33F2TAXjkYuT/NOE7zarZ5Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7196483},"engines":{"node":">=18.x"},"gitHead":"3cc710ccb17a1f3e9e5ac359dec914c4b53ec268","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-3cc710c-202405071114.0_1715080527730_0.21055084452520556","host":"s3://npm-registry-packages"}},"2.3.1-2173621-202405071300.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-2173621-202405071300.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-2173621-202405071300.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2de0c688dc6defba788d0ada9ec7a1e8d37905a4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-2173621-202405071300.0.tgz","fileCount":326,"integrity":"sha512-Wwvon3unaf9lNvlYvpf45a3wQPStEUxT1w9syLmxOk18tqMN3GWfp804F/QelWjnW2my+c3oSROc4U0H1cAj8w==","signatures":[{"sig":"MEUCIHte7CeET3fOEND3MNffR42t74qxhnWy9C9J8KFdo+afAiEA8stcUJwzxBLN2W4fluDM57whZ5ovHMuWXNCxSIMV6ME=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7202410},"engines":{"node":">=18.x"},"gitHead":"2173621d85cf4c8ad7c0bd4b1724cdf705280952","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-2173621-202405071300.0_1715086872231_0.6034692563287509","host":"s3://npm-registry-packages"}},"2.3.1-6887f75-202405071548.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-6887f75-202405071548.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-6887f75-202405071548.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5689d9eee0f61dba33fc10fcda7f3d0c84fc0e34","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-6887f75-202405071548.0.tgz","fileCount":326,"integrity":"sha512-xYAUCrtJTF3zEJ47HtGMo/jIgw3wAJWHFMHKxdVeWERP1AAQ1lRfSKqKSdiB6KdVycg4cgi/xI0O9TOeG1oLtw==","signatures":[{"sig":"MEUCIQC+Nufal7JS/ZZ08Hntvc1hQFJ4WCxWl8nPes3hqS/9/AIgT2pxCF87gDqiOHidsDr4ICQ2FBlV2dTo7KZwq8DimCg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7202273},"engines":{"node":">=18.x"},"gitHead":"6887f75058c02ceb4c89b9c72c19e00f692bc0a0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-6887f75-202405071548.0_1715096987279_0.5253820672830676","host":"s3://npm-registry-packages"}},"2.3.1-d260512-202405071630.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-d260512-202405071630.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-d260512-202405071630.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5fa071c544b66a54982f8e75c8c6f42aa6398d2b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-d260512-202405071630.0.tgz","fileCount":326,"integrity":"sha512-roTzZ5ZLQ1dklhBcTTiXmTclTnbeHIZ8fYXnsGTRyXk2Nw/eHH09cZ3FFcSOIEN+J+MX8ml+qauY+2l/q4m6ZQ==","signatures":[{"sig":"MEUCIES2Tcwfh37V+AMk3s30aUtqL2MZHg6wjf6ESL9DS9Y6AiEAw3mvHiluyaoBB/5Ys7hn9z5rnRUpJGIsezmNBzjWpEc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7202273},"engines":{"node":">=18.x"},"gitHead":"d260512096445bb3f56ab761694b0e9492a668d7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-d260512-202405071630.0_1715099469699_0.9830076105143588","host":"s3://npm-registry-packages"}},"2.3.1-71bb4dd-202405080902.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-71bb4dd-202405080902.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-71bb4dd-202405080902.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"138cf5a80bc9cc521e509855cac0539c8bfaa890","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-71bb4dd-202405080902.0.tgz","fileCount":326,"integrity":"sha512-N2JcaBaaxpekeUtPIM/1zHmn+Qc29El1kX2aH3cj99O24VyjPxRPah+IeNK8j9WrH498duXLmUCt9NqXGawPhA==","signatures":[{"sig":"MEUCIBSM7Xnpon2QjpnB2fjMT3RJQvAAACTukSpr4AlGVZb5AiEAuH1tCxj82qK+K6UMhVJyT39Rr3a86Noa4Y6gR+ME1SI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7202467},"engines":{"node":">=18.x"},"gitHead":"71bb4dddba8313cb02ca1e19ccc44a2653711938","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-71bb4dd-202405080902.0_1715158999731_0.3543821692266005","host":"s3://npm-registry-packages"}},"2.3.1-1aa0b27-202405080931.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-1aa0b27-202405080931.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-1aa0b27-202405080931.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"379df31df40db5f6d1d2066a3bc06b5c8f497239","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-1aa0b27-202405080931.0.tgz","fileCount":326,"integrity":"sha512-3UUnLwfP/H52ofkWpVq0VRXTYEptJQdxDW3DQbzWkwDMPr4We+fSwXXHwYmOCK7ky0+8H2eroexbm72aIVrRng==","signatures":[{"sig":"MEUCIQD7n8OUb1h3CLJkz+PFX0QzLm+ZGxSWJYfilQaZIxfmbwIgDVNZzEU1qOgUlzhp82NWpcbyqryFFIHVzAR529L0MDA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7204422},"engines":{"node":">=18.x"},"gitHead":"1aa0b27c266359d5040b33b22514501b233599b5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-1aa0b27-202405080931.0_1715160782233_0.04199382453510325","host":"s3://npm-registry-packages"}},"2.3.1-fe2e18f-202405080949.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-fe2e18f-202405080949.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-fe2e18f-202405080949.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e65f50a3b5c0b0cd639d3537da6657c333b27903","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-fe2e18f-202405080949.0.tgz","fileCount":326,"integrity":"sha512-qMZZyHiAN1msoqF4yAf+nkkBwjUebutdSq4dkYuoTlEyeu6iyzoNGv/SMNbhK1sbzi5FHWZDTdm+bfNIb41pBA==","signatures":[{"sig":"MEYCIQDIFv7MbOaCC5B0enztQYV29TaoKT2Lpju3icvcSQQVUQIhAJtwEKjbkbNXMwCmZouTlMaHambBfQB9wPgCo+pN52Lt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7212641},"engines":{"node":">=18.x"},"gitHead":"fe2e18f8875f396ad4fe5109a8763a5c21db573a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-fe2e18f-202405080949.0_1715161819412_0.19947308380901063","host":"s3://npm-registry-packages"}},"2.3.1-9395ad5-202405081026.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-9395ad5-202405081026.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-9395ad5-202405081026.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e8ce28b19a3485258f62a52e31a90df3527643e4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-9395ad5-202405081026.0.tgz","fileCount":328,"integrity":"sha512-o6zQvV1WJMK7aVgqfrxWL4mlDKl79wc4Xl8yF+DUavJqspxa2m238k/BQET/wc2ZPSnKFkgPhiSNnpyoYuM1CA==","signatures":[{"sig":"MEUCIQDpwmPbVFCD+BrtV96ZXlTTQkbYCb6nt28YY8+0MeCXTgIgRQ5lB+sMLQmAGg0jav2AYkU7/X6tMzRubz3RXMvcXdQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7225178},"engines":{"node":">=18.x"},"gitHead":"9395ad522e20849abe28e7a81db272d89ceb840d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-9395ad5-202405081026.0_1715164089819_0.06804987466716339","host":"s3://npm-registry-packages"}},"2.3.1-6c8efd2-202405081245.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-6c8efd2-202405081245.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-6c8efd2-202405081245.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"28b9a3b2d383d6946dd2bf5478c0796c39bcc0c2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-6c8efd2-202405081245.0.tgz","fileCount":328,"integrity":"sha512-vAvguKj5jKU2WCuNK86BvBuVC06Z2CYylHH3pfJo9Wz43m0I/aW1RosZdXmcqwxNRyUfz8nEWRDlDpgPHfn2HQ==","signatures":[{"sig":"MEUCIQCfFoGHlhY4UX+Cdq411MnV4Y3PCeF34SeCAokrJwL1eAIgFVPzMgZ+9u5VzgRTiHJVId7m59FALB9XntRez8BMweY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7232492},"engines":{"node":">=18.x"},"gitHead":"6c8efd22bc6113c1308b56d50a8a82a5a6bc6484","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-6c8efd2-202405081245.0_1715172399032_0.9236632600942896","host":"s3://npm-registry-packages"}},"2.3.1-6c8efd2-202405090843.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-6c8efd2-202405090843.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-6c8efd2-202405090843.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f3bb07e4ec759e46ac43c451805802b4b5f3bf10","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-6c8efd2-202405090843.0.tgz","fileCount":328,"integrity":"sha512-do2SSfm9qJmGQmkfS4hS+810kojOp0wFpvl7wQMi80n0KQXz/VWza89/k+Ddgh3gwaIe1GDZLBuC8ADOep3HeA==","signatures":[{"sig":"MEYCIQDA+Wab8JSTAKb0SlBWJW5lEyUIkaN6TaZ9lg2lDvJOdAIhAJZGvmpeGpb4s8odX09910UJk7mWSdLSOTSh74Eh8JEP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7232492},"engines":{"node":">=18.x"},"gitHead":"6c8efd22bc6113c1308b56d50a8a82a5a6bc6484","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-6c8efd2-202405090843.0_1715244261352_0.6072560598338441","host":"s3://npm-registry-packages"}},"2.3.1-6c8efd2-202405090845.0":{"name":"@flowfuse/flowfuse","version":"2.3.1-6c8efd2-202405090845.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.3.1-6c8efd2-202405090845.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2ceac486dcd268ad590ae2eba19170a33eb1da54","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.3.1-6c8efd2-202405090845.0.tgz","fileCount":328,"integrity":"sha512-buQKjXFWyepBJTdkNdK92KLQ526qNrOC90WKjd3uQXrIL7cf1zHPuJq9aDKpAfbxfCeh7DS7FgnMeqmo9nrmLw==","signatures":[{"sig":"MEUCIQD1M3rCyhriZFTAbgT/HwKz5P5Fy1BgjvaaFzy7seppRwIgNDd2Aagpd1noI42PaamBo2nccBAaYVz4t4TANU3idiI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7232492},"engines":{"node":">=18.x"},"gitHead":"6c8efd22bc6113c1308b56d50a8a82a5a6bc6484","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.3.1-6c8efd2-202405090845.0_1715244404806_0.2850636778661204","host":"s3://npm-registry-packages"}},"2.4.0":{"name":"@flowfuse/flowfuse","version":"2.4.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"01ff6c02b29b5e6e903b572e918d11577494c06b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.0.tgz","fileCount":328,"integrity":"sha512-y8ruInWeWDZ91IwYx94B89l/iY2/6sV/4391cMr7pJcjx5PLZEsqH1kkKYX+2X58tWYhDYuTtCai80aR9gCKVQ==","signatures":[{"sig":"MEUCIQDwXdE1Iof0gruOmcgOa8WJIC4bP7yWNfjNnQk/dYC1VAIgQ4dpirBKVZKWqnlvZiv0FC5VN7hAWERwFXGcNkFdIRc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7234687},"engines":{"node":">=18.x"},"gitHead":"0057a95d4d10234d3a93fa88b54355272add7501","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.4.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.0_1715244892305_0.2544207346362455","host":"s3://npm-registry-packages"}},"2.4.1-0057a95-202405090902.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-0057a95-202405090902.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-0057a95-202405090902.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a2b47b5506ae0581d3bf6bf4a2d87546b3d3a552","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-0057a95-202405090902.0.tgz","fileCount":328,"integrity":"sha512-m88a7DmTcgms/C3TwUsGqUxSAJ/hgOqc+v2FoJNWNo7tFfT+H2DzVoQKDRdwMXNIv0XUPv6aOTggF/yocAhpRA==","signatures":[{"sig":"MEQCIG66tl2cDis7dO5R1GmJ0vCqbkdVufxhXFfbRX4ssWchAiBUTI4kJluwiZ4TFMNG/s6hU+efI+hIaJoFhQq96BGHVQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7236684},"engines":{"node":">=18.x"},"gitHead":"0057a95d4d10234d3a93fa88b54355272add7501","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-0057a95-202405090902.0_1715245428324_0.3438448067259139","host":"s3://npm-registry-packages"}},"2.4.1-951664c-202405100858.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-951664c-202405100858.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-951664c-202405100858.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d324669ea5a263df3ed025d2b5428ddf1a764389","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-951664c-202405100858.0.tgz","fileCount":328,"integrity":"sha512-oef3r6WzLVWpk39UVgCYTxMaiTChZKoWEYlX4LnJdqv9kUB9LwUwFmCsCuzmlWErPXYcFv7Y3PgZr3P++uNQBQ==","signatures":[{"sig":"MEUCIQCXdY/URgIRRlelo/j99Rg3L26ySB7UPRZNsOpRTS27IQIgHyzHz/B8zx5qE2+ZYeMDW4YaiqTSWeQ2I/j6MzN8Vvo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7236684},"engines":{"node":">=18.x"},"gitHead":"951664c939a04ef0ab8a656da6caf0660cfe3dbe","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-951664c-202405100858.0_1715331587641_0.6291446250687514","host":"s3://npm-registry-packages"}},"2.4.1-fd7ad70-202405141111.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-fd7ad70-202405141111.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-fd7ad70-202405141111.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"376b49350a4a7d34312221b3e1c0398d168ea728","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-fd7ad70-202405141111.0.tgz","fileCount":328,"integrity":"sha512-PZ7vv85Om8WUD6b4v0uweKR1x2kt6jTMZhFutb3kYryNcUYsCzNn8lbNlpbR5Q5Tg65YLC+NSg2NHWTOQz3TAg==","signatures":[{"sig":"MEUCIBcZOqwbW6n5c8pbn+54TL59TzMW39USX8qIBnL4KJDTAiEA6WU5gSBOPr3s05SJTx8/5SWA4FYdITz9PdH2ADBjr8g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7236684},"engines":{"node":">=18.x"},"gitHead":"fd7ad702983e06b7e68d2aeb90994ef3de424e33","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-fd7ad70-202405141111.0_1715685160631_0.9741410834913944","host":"s3://npm-registry-packages"}},"2.4.1-c1c6c18-202405141254.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-c1c6c18-202405141254.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-c1c6c18-202405141254.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"77e384abb1ce4f7bff5ca3aa1611528193ec271d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-c1c6c18-202405141254.0.tgz","fileCount":328,"integrity":"sha512-tDb7wkca34BD8POaDmd6tLEbbz+Lq4PRHaV4h6bVM/7ZEd6lqRBbWpTnZ1Bxvktgymw5E4DcrFImPCqq7qhPyQ==","signatures":[{"sig":"MEUCIQCnZMGpUHYRU0rxbSMZGrncPdar640i/+VeGoxk4nXDagIgc8qh/suimais6dQ1K8GJCPXsA8axEbDmCTfHqENXa5o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7237324},"engines":{"node":">=18.x"},"gitHead":"c1c6c18ee0f40d6152ea12df1979b36e209e504c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-c1c6c18-202405141254.0_1715691360648_0.27892249652277945","host":"s3://npm-registry-packages"}},"2.4.1-470c42e-202405141332.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-470c42e-202405141332.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-470c42e-202405141332.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ed5471d7958ff476925ee13a3ad6ef75703411fb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-470c42e-202405141332.0.tgz","fileCount":328,"integrity":"sha512-uppYuJlJSH4RGsD2mktQq9+SxRoJPpRPdM+YDn0UwxejizcIGQBZIrVw6oJnuRdScGWZyKCEVz4SiGsTioqh8g==","signatures":[{"sig":"MEQCIHFZtb9Ch1ozEvOypucfyaNFFoWG/Sz8//dg11tRNPb/AiBh3Tp9drxcPAOYyCvgaQXn9T5rDVfGhsKMMRfxCS/3mQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7241747},"engines":{"node":">=18.x"},"gitHead":"470c42e5634fce9c988947af4fe304ec867e8311","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-470c42e-202405141332.0_1715693595156_0.9478078097662874","host":"s3://npm-registry-packages"}},"2.4.1-d99d46c-202405141453.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-d99d46c-202405141453.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-d99d46c-202405141453.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"54754c088b069c38fb87a69061935f60d7f0ab06","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-d99d46c-202405141453.0.tgz","fileCount":328,"integrity":"sha512-wn2U82aNeBWupwu+zzfaV6JpVw3BWuNr6cK8POVbsf+kHLLrBsa6xoF4slWo6VdJeBtfqAGv460FactBWLrfoA==","signatures":[{"sig":"MEUCICPbynUchJx1ZiA556JlKI8UDNLpj2hDuY8VHkwb8+phAiEA9Bl8XKFA94NKr2UgXfbtmjgaZu3f9FjymzV02e9F9qQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7241687},"engines":{"node":">=18.x"},"gitHead":"d99d46cf2d5e38e2eaa1b62aa8db72f5a76c2ea3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-d99d46c-202405141453.0_1715698472346_0.9428393993748301","host":"s3://npm-registry-packages"}},"2.4.1-97b8114-202405150948.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-97b8114-202405150948.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-97b8114-202405150948.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3df0f985ce8b1b896ca970558e454956f599750b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-97b8114-202405150948.0.tgz","fileCount":328,"integrity":"sha512-ykFVqkNxM3gsklcARwcX2Lnyy8aNoeN2Gnd8V1WDCj2IwAST6ukQNiPfYyZrCa2kwpmiBKVf/w4cCsZR54fLRQ==","signatures":[{"sig":"MEUCIQC2CgNIv0RBesglSJrgP4f70Y9H0Tv7ai4rElphSE+S2AIgV5s5hwP43sGKdxNmFRkn55f8Wxn4kz85c9iQkf60iqA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7241687},"engines":{"node":">=18.x"},"gitHead":"97b81142780d9429f74ff4250bea4cae4105d62e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-97b8114-202405150948.0_1715766599863_0.499371071690238","host":"s3://npm-registry-packages"}},"2.4.1-f4ac3cc-202405161353.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-f4ac3cc-202405161353.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-f4ac3cc-202405161353.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"accef94c040403cf6c9f61f8c61340aee41a7f55","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-f4ac3cc-202405161353.0.tgz","fileCount":328,"integrity":"sha512-pL++bPEPnaU8W6Mx2ONRapU4stBfNNC+vT82kRAu6FEhwtznWEp6NaedOLV2dX8tJn7sEM/Lz9AnVxt3cpInDA==","signatures":[{"sig":"MEUCIQC8xLyDgL5bRTq10EYLXOagH5mPmHlErT7WOJljhG3bdgIgKanbXTMyfdDHYUmvsw6Lf4uSh5AicxSbDoscu1RBVcI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7241693},"engines":{"node":">=18.x"},"gitHead":"f4ac3cc57516eaceada9e112604943638c05870e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-f4ac3cc-202405161353.0_1715867688487_0.9791165488130362","host":"s3://npm-registry-packages"}},"2.4.1-357668f-202405161531.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-357668f-202405161531.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-357668f-202405161531.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a9f7b73efd2274f173fed75652d3a9467bfc4aae","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-357668f-202405161531.0.tgz","fileCount":328,"integrity":"sha512-CgfQXDhabjwVxz/FOklRLvBTrjDKSQQW8L//7MjR0toUF9qLRD0wFf6hStqtfTkwkPIJ6LXJt+vIBHd9g6FcNA==","signatures":[{"sig":"MEUCIGo2rBrfVRkefdb/MXBdAdBl7W4SrMvYKVuSBbbHxxrWAiEAj8NShB3Q19yT0ciI8ajnZxYnIXtLz2Rx3kCBiKzwRac=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7249446},"engines":{"node":">=18.x"},"gitHead":"357668f85f7e1b2b30b0fea8aef9fc35a8c842f2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-357668f-202405161531.0_1715873544074_0.039519709536415926","host":"s3://npm-registry-packages"}},"2.4.1-c63326a-202405161540.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-c63326a-202405161540.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-c63326a-202405161540.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b3cac05861f3655234f9edb54d490a89bfc2e3ba","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-c63326a-202405161540.0.tgz","fileCount":328,"integrity":"sha512-KmoVi2fmFwdYSL8V2XmUsg0WL5HmtwKgeHThKVr2/smBH3z4uxfn6Nm8OAL5jcRecfQtdgnMO1HfdxKMIMbIbw==","signatures":[{"sig":"MEQCIFvuJZQKJAFxmqLe2tRmQmIGDoduod1NyWFFrr2SXchoAiAa2AXX0DIdZgl0+CaCblF4a61z4dhaI68HRFe3ibsAeg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7272640},"engines":{"node":">=18.x"},"gitHead":"c63326a0aed83bab1674cf6d2ebf8e2672ac42d8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-c63326a-202405161540.0_1715874115446_0.9401796160240503","host":"s3://npm-registry-packages"}},"2.4.1-0aa6d7a-202405170739.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-0aa6d7a-202405170739.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-0aa6d7a-202405170739.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"515633422c04b4091fea638df5dcfbd46baaabda","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-0aa6d7a-202405170739.0.tgz","fileCount":328,"integrity":"sha512-f4HQkcK7rtJkHPBZLurTwhwgJsU6Cd7BnaYEg9peW+nhUoBUXe7QSg2kI+D28hbQs/GfN+wLwmdxWpt6GuAwUg==","signatures":[{"sig":"MEQCIBDhbCF2wt2ZdbI9iAC8DDa6VFevODBn0Qxs3Yb/BGphAiBNOJB4OQ+ubQ3Zo1u2y4jBdAb3HIMHiTjk52tdv0z5Jg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7272902},"engines":{"node":">=18.x"},"gitHead":"0aa6d7aef549cd1bbfef046ea920f91e4505b415","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-0aa6d7a-202405170739.0_1715931640435_0.5609210856991891","host":"s3://npm-registry-packages"}},"2.4.1-ca5df48-202405170751.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-ca5df48-202405170751.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-ca5df48-202405170751.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d59a1bc116ca969a4e9fc13ae59a8d65899655be","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-ca5df48-202405170751.0.tgz","fileCount":328,"integrity":"sha512-THX++F/ZVLOBgaq1akyuQL4/mD2Z0PrmikI671xs9kEH7Xr0dByQ9oE5rrwUK6h5mwEbWcPkua877xhNsULbTQ==","signatures":[{"sig":"MEUCIGsj7FRsfRHRLDkKFtd+7310LqpKknRsAG4p3ZFt6IQnAiEA5LykHanoSXoZ8JGWtm6si2y9DESe7AC5yVQPw1fGH5s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7272902},"engines":{"node":">=18.x"},"gitHead":"ca5df48f39de3954e64aba6a30341a61b41c3ffa","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-ca5df48-202405170751.0_1715932345183_0.2645344046110145","host":"s3://npm-registry-packages"}},"2.4.1-201392a-202405170811.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-201392a-202405170811.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-201392a-202405170811.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5402bf24ad3e9401493fd81509c1b245e7f7fd6b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-201392a-202405170811.0.tgz","fileCount":328,"integrity":"sha512-nKfqAclG+L3tIu609CW+7v75wqSUZljhxjzspyM9sahxCNupZKXbE1FSWc7azm6pHRtCliMi/eZ2Og9cSh9KKw==","signatures":[{"sig":"MEQCIEzLNv4eU+3UD825KVCiptcB2+mtJr9pQNdChwoLx+UWAiAvAdQPtBnu7Dvuw1G4KWcoGlDrsMgziUS+OnmmZiGtCQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7273714},"engines":{"node":">=18.x"},"gitHead":"201392a50c13aa077fe720aa3eec1cf01a653983","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-201392a-202405170811.0_1715933536485_0.5363448181624539","host":"s3://npm-registry-packages"}},"2.4.1-6ffa0a7-202405170839.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-6ffa0a7-202405170839.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-6ffa0a7-202405170839.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9b4fd1e224ef92eb756584c69a3e7d8ffa4647cc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-6ffa0a7-202405170839.0.tgz","fileCount":328,"integrity":"sha512-iuIGhgHkBJt9vSWos1kBbwCgY2X4sod8XV3Zm350WcUGHdLTyykAuGG1seGJPW0wXVFocm4+5Nlc5x9VD/9fxQ==","signatures":[{"sig":"MEYCIQCHyKDL37Kgrii7RYZUd4KPcB8rBknP+glLigR2putjrQIhALuDIDodpViOP0l+FpeDepT2wxdGdJ/NyUM4ZabTOFUg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7273748},"engines":{"node":">=18.x"},"gitHead":"6ffa0a70099fa871a7c81cce7183374c86df46a8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-6ffa0a7-202405170839.0_1715935246122_0.36315432937426384","host":"s3://npm-registry-packages"}},"2.4.1-4108f95-202405170948.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-4108f95-202405170948.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-4108f95-202405170948.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"acbd38de354c60bab720072940532418ab5dce20","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-4108f95-202405170948.0.tgz","fileCount":328,"integrity":"sha512-f+Vx09mhfLRZinGkSW5BQ6u0+kDKBumTJyCpKSszuXkIXBO4O8xpWG+sngLP7W417WGdk+iWTW2FvGhifrWCdA==","signatures":[{"sig":"MEQCIDgWqxBRk1o3yPm73iuAyZy1fvLcd3a6/JKkRtWUeJSpAiAIkPTRJVgipiREo5RMnFM/6kqLPiqk/YKuGtHTgMlcbA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7273748},"engines":{"node":">=18.x"},"gitHead":"4108f954ff5e2a16ae7b8fcbed11b55862fcfdda","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-4108f95-202405170948.0_1715939386339_0.20254692208943648","host":"s3://npm-registry-packages"}},"2.4.1-830d453-202405171049.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-830d453-202405171049.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-830d453-202405171049.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cd1f1533ae6b56eed621e756aef02a25533452aa","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-830d453-202405171049.0.tgz","fileCount":328,"integrity":"sha512-PvypAq+uhxGDZSH2ewOKpi475pZuS0+91pQ6m5d6DHgviu9jYqDobyoAf6e6X/xlI4JBHKnXFAqxQZezSkPOOw==","signatures":[{"sig":"MEUCIGKAmU6a9/llbut67nc6ajc2pP8qA9GO2MJItFTAphOIAiEAtNdNhtK+j5yZR15AcqY0M/u6HNCkQrheiOYJV0Mw2cE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7273818},"engines":{"node":">=18.x"},"gitHead":"830d45313226b7276788dcda11d3b068646c9a1d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-830d453-202405171049.0_1715943059331_0.45631281642291466","host":"s3://npm-registry-packages"}},"2.4.1-bdebeb0-202405171105.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-bdebeb0-202405171105.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-bdebeb0-202405171105.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2e0955901a6c8d866262e09be6948ffa0de1e325","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-bdebeb0-202405171105.0.tgz","fileCount":328,"integrity":"sha512-HyACQHBrTEGGt7RmDWE4bwXBYu/QLTTx3OV1i8n8jV5lxaUZdVIw8ydScQuyGm+AqIbFRgpjRB/EZV5gElpnHA==","signatures":[{"sig":"MEQCIHfQc/s0S6a8WeFAc605CUpYtTzQd4anH/jBs1P+DDZTAiAiBXBJ0XdhE0kkxx/ylbz8hnWoEdFdL8iHTu8kBZMVVg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7273818},"engines":{"node":">=18.x"},"gitHead":"bdebeb08909ad5b09763a55b13b6400db2b8ceff","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-bdebeb0-202405171105.0_1715944011702_0.3637741119183797","host":"s3://npm-registry-packages"}},"2.4.1-6e4e0df-202405171219.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-6e4e0df-202405171219.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-6e4e0df-202405171219.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e24fd3d16139a6fb0eee5171bae64ddfeb169b06","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-6e4e0df-202405171219.0.tgz","fileCount":328,"integrity":"sha512-HMAMVsw/hcobUvKUgpeF+i/SuuKiQD7ot+9ycHqnabBO/MP1jL0bCz07kD/3S8dvCwPIQ/m8TVugEkCtCp9shg==","signatures":[{"sig":"MEUCIQCrtUP7I+3mHvAN4U54PP1x/vQLNNV0fw2EhVE3Vv017wIgIgwy6Vjgm8sGqTBcPuUnmzPq4DITpP7ieYlLeV+uca8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7276034},"engines":{"node":">=18.x"},"gitHead":"6e4e0df058869dfc7fb68399d0d69c8c6de22400","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-6e4e0df-202405171219.0_1715948422119_0.503328443117143","host":"s3://npm-registry-packages"}},"2.4.1-50946bb-202405171319.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-50946bb-202405171319.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-50946bb-202405171319.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ebc2cbb1d6fcf376fa7954f49a7b3583857071e8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-50946bb-202405171319.0.tgz","fileCount":328,"integrity":"sha512-Leou4OOM1rVn6DfddluSr2liwalCHjvdG9UG8grLhHJ/DtnwMuTlXMmlgsoNxoU3+scwOhZHGd8BcasPzYLlWA==","signatures":[{"sig":"MEUCIANjRZ7bbeT48e7fvP3wBbjFqaTvw8GVGUhGhty6MXJ2AiEA8wC9G5DuMJPkIgI2Wz9TMDDGy6y+4WT7Pp/kvReokuc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7276511},"engines":{"node":">=18.x"},"gitHead":"50946bb7614f45663b734594fa1e5d3bcd8162b9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-50946bb-202405171319.0_1715952039662_0.41172683245846264","host":"s3://npm-registry-packages"}},"2.4.1-3a94595-202405171653.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-3a94595-202405171653.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-3a94595-202405171653.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d351657c1fcf2b6bdf91bb9fbc98eff3a7fbc06c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-3a94595-202405171653.0.tgz","fileCount":328,"integrity":"sha512-W2JzKu/NsrV0BwdHAEHAcH4GF8gq5y8uDmf5cFRTzugA9NVKcOdayjLhx4uvkJVYgogPRDpDSaEWnW2ljXvN3Q==","signatures":[{"sig":"MEYCIQDjmou3yr/wKR/WHvnpqYJ5aL6Chk+rtD5crCtqtEpS7wIhANcxQJjBZlNerqBnU+leBZGnm0JSXMSpQBInLaSwUPUI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7276511},"engines":{"node":">=18.x"},"gitHead":"3a94595ac85e6db7bb3a1294c7356b30c75af467","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-3a94595-202405171653.0_1715964897132_0.9071524711451888","host":"s3://npm-registry-packages"}},"2.4.1-2483051-202405210838.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-2483051-202405210838.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-2483051-202405210838.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"aaec6e6eeb4562df2590e348dd22450f8e04b913","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-2483051-202405210838.0.tgz","fileCount":328,"integrity":"sha512-OkHn1cUDcBvSN2fMPPU7IEdtB+dDHKGe8YtTxrSpDrvz7Eh7Mktm+lkwINLNShzW0I7P1isLw4jfWpvGvSnNcA==","signatures":[{"sig":"MEUCIQCMue8CI83oX795XNolSzg5PSoAb596ZSOnB50lEvrimQIgCDCXz/A/kEbuVrmAjcYNMPT6sptN+XrS4TBWB+6XkRQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7276640},"engines":{"node":">=18.x"},"gitHead":"2483051d99359132367a6b318f0520c170e889af","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-2483051-202405210838.0_1716280782853_0.7755378044123542","host":"s3://npm-registry-packages"}},"2.4.1-2884598-202405210932.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-2884598-202405210932.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-2884598-202405210932.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"017ae6ce654a4a9d3b068856e98e20131ea9ac6f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-2884598-202405210932.0.tgz","fileCount":328,"integrity":"sha512-w/tZpfQ7I13iCooHw27Ou8OJqy/MXxVx8fEZruDOMRtV8C9oRqU13IhX9+cI1ha5fOQj/7EiZHYrdyv/72gIxg==","signatures":[{"sig":"MEUCIQD0m2IG3Cd/u6A/f6KdI/cVOxzZ9HWspHcRd1oR1z1f2AIgWjMVL46tlWGfaCdNIUpxuvxa6UjNCoDlLT7w1UDOn4w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7279543},"engines":{"node":">=18.x"},"gitHead":"2884598fa4eec4b6f413f59ff884809c50a141ee","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-2884598-202405210932.0_1716284045775_0.8458146788951837","host":"s3://npm-registry-packages"}},"2.4.1-28bf42f-202405211306.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-28bf42f-202405211306.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-28bf42f-202405211306.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"91879c6e0680f35ef0ac49d417aea4d1a29e938e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-28bf42f-202405211306.0.tgz","fileCount":328,"integrity":"sha512-/J8f5iBPE/Wh1b25RLIpNe2r9fOPmOW52tuP57gbak1pauFYKj45kE5Y2ERRZC5rCU6Kjg1BF6lQrYRsoK8RQw==","signatures":[{"sig":"MEUCIQDjrhUSRPO6d+PTRcS5PIMyg+HbHm1f4bJ7iT5tlN4UgwIgZlTkk4kTVYo0G1RPxrtCXOFZLqZIl7InWJJ/c/Kfj8I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7279543},"engines":{"node":">=18.x"},"gitHead":"28bf42f13086539cdaa121d075df0a280d6d2208","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-28bf42f-202405211306.0_1716296886945_0.9628218684924148","host":"s3://npm-registry-packages"}},"2.4.1-db49a3b-202405211452.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-db49a3b-202405211452.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-db49a3b-202405211452.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c3fa83de15fd3c50f08ffef0b476eb27c1b97ec7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-db49a3b-202405211452.0.tgz","fileCount":328,"integrity":"sha512-tLI8Nv2aTz95sDLsek8tAdRIF+YwEiSBi+bl3drt5SqxG9VTRwM3XDZC0dR+TcVayWqYy8OxLNCFGB4jFww+dg==","signatures":[{"sig":"MEUCIHNz569SRIEpWYmqYX1CX5tnjTWTGFj3kl6av5nmrhA6AiEAk3HQi10dyEjW4KMPCJezklAVPYQiGCLGo+s9wzzCAnI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7279449},"engines":{"node":">=18.x"},"gitHead":"db49a3b7b0505fd0d1a487e8f94c95c51a6540e5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-db49a3b-202405211452.0_1716303240914_0.9811377096402796","host":"s3://npm-registry-packages"}},"2.4.1-db49a3b-202405211458.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-db49a3b-202405211458.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-db49a3b-202405211458.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ee1109979b51f6cc74fde47b0aa8e56df949faf0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-db49a3b-202405211458.0.tgz","fileCount":328,"integrity":"sha512-f5jfUf0GisZIkKiqeSWDuE5eApylohxIvTljBMfA42739xvgcrIGxmyVaaZiD//0gyAHz8kCq5ncjSkwCZH7Kw==","signatures":[{"sig":"MEUCIQCDu60a31xMZ9LzJAMiLp2hwyMpp8Gw18tvR4g05/IeXgIgEX2xu+FcKi/vlWE5EeHA8tkiAuRFwsDT9lnVeqs2zeo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7279449},"engines":{"node":">=18.x"},"gitHead":"db49a3b7b0505fd0d1a487e8f94c95c51a6540e5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-db49a3b-202405211458.0_1716303581188_0.6115035254883858","host":"s3://npm-registry-packages"}},"2.4.1-1728ec7-202405211642.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-1728ec7-202405211642.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-1728ec7-202405211642.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dfd6ccf6825001c7d0d7e16669704f2b1919ca13","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-1728ec7-202405211642.0.tgz","fileCount":328,"integrity":"sha512-+txO2AuO/AU5ig/lWBv6OwlafnpEjdyToKlrtS1W80cqhozcYlxWaU4AFE1OJOVvgJH75/X4LA9YRRo2s5SI3A==","signatures":[{"sig":"MEQCIFTMbNGnxTQSrTdvXSBK72f28nyWZTZ8s7Z69MykRPFKAiALMt7R4fLAZnGmgNoHVAYbpMNc7fvT7SnmaJeAk2ysig==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7279449},"engines":{"node":">=18.x"},"gitHead":"1728ec7532b898c2e47656ff47167fe7421ab932","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-1728ec7-202405211642.0_1716309813553_0.25452284623777666","host":"s3://npm-registry-packages"}},"2.4.1-f852927-202405211703.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-f852927-202405211703.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-f852927-202405211703.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1be70ee50102685e7836d75abe0bbeb70cc2c12c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-f852927-202405211703.0.tgz","fileCount":328,"integrity":"sha512-GT2b0HgMv0+V+DQqA3pCkO6u5xj4TnVuiZCb4yrj/fO60tl7AilWmRutzleS9+rTkafQce0HlbmpJUTHxw2zNA==","signatures":[{"sig":"MEUCIQC4zAyWjuIK0UHMQeWd3/UcuRQCtCB1rHhmAbTTO9J2mgIgG0wLDOVtApmLFYFxBBJnoOt+jzvZwEKK7a8LVc1h7DI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7279449},"engines":{"node":">=18.x"},"gitHead":"f852927d417a7c49da619b5e24d33e997f840a4a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-f852927-202405211703.0_1716311085902_0.04591594397109233","host":"s3://npm-registry-packages"}},"2.4.1-67b459b-202405220934.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-67b459b-202405220934.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-67b459b-202405220934.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"107d6056c61ca33f6b299911b795e37e1ae3abf4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-67b459b-202405220934.0.tgz","fileCount":328,"integrity":"sha512-TQvblKUrfYa9ulqdT/WMahfVKL2uWDwUHJ+mXY3RRak4e8NJ+ruLbSVwPbncN6WuwTe5qdawQlYxfaIzWIXCtw==","signatures":[{"sig":"MEUCIQD9PE76a6EH17IIqksquWC9XoQFhImvQ+8rkyAjxhPUoAIgUlIRy+qnXPU9Ozq7W0w/T2lS/a0n6Uh/gf1igkInDow=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7281167},"engines":{"node":">=18.x"},"gitHead":"67b459b8fdc78cd8fb62bba4017dbc826fbf5a1d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-67b459b-202405220934.0_1716370532446_0.6243056893095817","host":"s3://npm-registry-packages"}},"2.4.1-091181b-202405221024.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-091181b-202405221024.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-091181b-202405221024.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e7a3cb5e87aa9e79a8d9c9e14bb67fc1caa0538e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-091181b-202405221024.0.tgz","fileCount":328,"integrity":"sha512-DNDLWwqrs2y2XVC/k4eRSbuoRuLHAwwsN/TxqdrZD2m2frG28F4ruP9YnomgzP41O2BrlqkeGTXoKg7sMsav9A==","signatures":[{"sig":"MEUCIHLOihGAIqdJ04rD4y4pbaOO5/QlwbW0vtsmnZVgekuuAiEAhQIjFZ+IXp3xJToDPujB4fvINBRGvbxIBaOsroeDc8o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7282630},"engines":{"node":">=18.x"},"gitHead":"091181bb80a3beaff2f51a5f6fed0e3780c8252a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-091181b-202405221024.0_1716373554568_0.7205459019207139","host":"s3://npm-registry-packages"}},"2.4.1-fa56d6e-202405221031.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-fa56d6e-202405221031.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-fa56d6e-202405221031.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"00888ae6c8d70cf10949465037649c858f4c88a9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-fa56d6e-202405221031.0.tgz","fileCount":328,"integrity":"sha512-I10y22tkK2mlchsowgAE+kMgWo3R6HhxVqwGoGuJqRU2i2v49TjMgRLZrKIEXPGL4X2uVjAVsTXCmHFShZotng==","signatures":[{"sig":"MEUCID/yPKLJxro30y0lNNZuFfElX8mosK3QawBP6kRWVr7gAiEAkPXxUwcyRr8lp1mIyRjBCX+RmKVJi0Wyn84j9f+Ddas=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7282630},"engines":{"node":">=18.x"},"gitHead":"fa56d6e35d8fd83db62db6dc1f9b6672ec007a7b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-fa56d6e-202405221031.0_1716373944098_0.8352618624044537","host":"s3://npm-registry-packages"}},"2.4.1-850df1f-202405221033.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-850df1f-202405221033.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-850df1f-202405221033.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b65e6ab1d7e709f6b52e1db0217da972611c6529","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-850df1f-202405221033.0.tgz","fileCount":328,"integrity":"sha512-YLTqvpg8fWDLjZeH18A2L9JGeiIVdW8onkVmf3+FvN8QpiTJ8kryb3AtIx6TsoR7UNzzE/jTCy+gNtXGsKJBYg==","signatures":[{"sig":"MEUCIQDLTwBKkOX8A0mZWqMS06a4ySRkNbtwhpOyZqv98u68yQIgCSdjBO/4zH7N49jb3MLudvEBaHs/6G4ea0Qpaj8uiB4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7282630},"engines":{"node":">=18.x"},"gitHead":"850df1fc631860c24c0e03231b5f266ab9b76822","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-850df1f-202405221033.0_1716374071565_0.1050972673557724","host":"s3://npm-registry-packages"}},"2.4.1-7dea545-202405221049.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-7dea545-202405221049.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-7dea545-202405221049.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c524f874d85c178b421269304da569176e3ab38a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-7dea545-202405221049.0.tgz","fileCount":328,"integrity":"sha512-ntuoyKON5b+RphLePTS/LLwSDmnmdiDP0c1mwua16a4sMQwqhcemlxkzLBHV/104OukSS/63oIfbFF121umDeQ==","signatures":[{"sig":"MEUCIQDiZb+Suf6vNsF/ZdqBQkOXd/hI1W+LrSbiYjGVl11CkwIgMz0OPSp5kdqlHkuubgW/04wmyOOIrW1gNbplyKdDI6g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7282630},"engines":{"node":">=18.x"},"gitHead":"7dea54561bce918522605afd53103411494bd205","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-7dea545-202405221049.0_1716375006046_0.04150363114700495","host":"s3://npm-registry-packages"}},"2.4.1-67b31b2-202405221207.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-67b31b2-202405221207.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-67b31b2-202405221207.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7910b13be09b7ed91cbb6c6a54389f01a20012c8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-67b31b2-202405221207.0.tgz","fileCount":328,"integrity":"sha512-jd1iiBeJjIy1MGf13c60N8Sz2+eTVeUhdsQW+woyznpxKWP0irLrGNCH7xbAZQZkpY3oQiSGk6SE5CF4JOijKw==","signatures":[{"sig":"MEQCICDvM/FML5hUAv17mjYqQTrhT35O63rAHGMWHhz8TAs8AiBbQx0kQgZ991B4u5zq/u0MPlEuSlzRDQ4vl14CX0NJGQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7282630},"engines":{"node":">=18.x"},"gitHead":"67b31b22c8038649c2a2adc56b34ec5000fb8cdb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-67b31b2-202405221207.0_1716379733608_0.29203073886256337","host":"s3://npm-registry-packages"}},"2.4.1-55d624f-202405221245.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-55d624f-202405221245.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-55d624f-202405221245.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e0363538ca2f86e3a0ffb9b3227cd47c3929340d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-55d624f-202405221245.0.tgz","fileCount":328,"integrity":"sha512-3PeAZZM801RnxstWc3tazQWKf4CAIQG/RDdjyL4UuEbPC3W0IRbusdbrZLHIovfi/lJomoIUufaTaK2lC6xX4A==","signatures":[{"sig":"MEUCIEzHeP9CpHzhduo9yZZwKvDVi3lHb+JuEyiJhoG2X8DEAiEAwKGMf6pYquoGZQfmLwj3YLY6NLALSqyy4t/N6eySNB8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7282630},"engines":{"node":">=18.x"},"gitHead":"55d624fe4037f5bdd1eec347f09b0e3b5f26311d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-55d624f-202405221245.0_1716382002891_0.6574235395861492","host":"s3://npm-registry-packages"}},"2.4.1-10f218b-202405221323.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-10f218b-202405221323.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-10f218b-202405221323.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ec6ef67557770cc4d0fdfb82d2d714da2045864d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-10f218b-202405221323.0.tgz","fileCount":328,"integrity":"sha512-xlvOi+wK5NGrdsK0Hw51m5lSvs6Fl+H6t5fXf3PHVkSGeqgKxNye2u6kyWC6A10YKY/AABrs/B8ksDVCrYLULA==","signatures":[{"sig":"MEUCIATDhTJFEqAAqbaN3HOASOkjQxvav5xnFtCAMDDk61UIAiEAn2qlbCTM2ck+H8ha/9mo9o9y4EaLAv8T3Atp5X7C0XM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7282630},"engines":{"node":">=18.x"},"gitHead":"10f218b88ba489db6918e87587258fc69666f280","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-10f218b-202405221323.0_1716384302698_0.5219694664145573","host":"s3://npm-registry-packages"}},"2.4.1-14dc853-202405221345.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-14dc853-202405221345.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-14dc853-202405221345.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d2913b81969c792d5ba905f81a61cbb18da7e0cb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-14dc853-202405221345.0.tgz","fileCount":328,"integrity":"sha512-tbgs5eEeJP49HMP3fjYs5FmtGA+xXpD83Zz7UEc3iOQ+s7QmveZPlm70t9QmF6scwchIX5IyiWQGC93qHSxsUQ==","signatures":[{"sig":"MEYCIQDp+B8QJ7zd/4hwYf9RV1CLIlKkrsDNyJd4FREZuvFZRQIhAOlaCPYHeAQyRryCS5oOs59Ti4QldG3bAjm9yZr4m3T2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7282630},"engines":{"node":">=18.x"},"gitHead":"14dc853e7558939f70384398b8264cc35de4a4fc","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-14dc853-202405221345.0_1716385574002_0.562473053087805","host":"s3://npm-registry-packages"}},"2.4.1-7a1a3c2-202405231437.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-7a1a3c2-202405231437.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-7a1a3c2-202405231437.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bd92a984615cafd5e2d843d0b27cdca22e0ee559","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-7a1a3c2-202405231437.0.tgz","fileCount":328,"integrity":"sha512-YRzem9/3uKTegkQlofjWgefBlekPR3TF7tZxErzzoWz9/zVC9CTVwN13qtBm60zwZc6/b9ZHmiylZehmwvtF1A==","signatures":[{"sig":"MEQCIDpvF0ZTPHyuD6HE9Y9/RkIg+V4x4krkji8a9CevmvD+AiB+MNfkjqA5gGOM9TPlsglZWK9rJcRRMr3HeH5HKP8xCQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7282630},"engines":{"node":">=18.x"},"gitHead":"7a1a3c2b281b2f97f9aed208689e9ffa27de57b3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-7a1a3c2-202405231437.0_1716475119854_0.2605719388627028","host":"s3://npm-registry-packages"}},"2.4.1-7a1a3c2-202405240911.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-7a1a3c2-202405240911.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-7a1a3c2-202405240911.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1999a54e4763e6d8a9a0af4c197f5673270c36d6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-7a1a3c2-202405240911.0.tgz","fileCount":328,"integrity":"sha512-TAtaIVMw71PdTcgexKCZCSaIq79/UH2ZBqfTUpa8HRsKdWJqEPBUnc9+nsXiT1/pUxUIexsq/GubXBgN0qmzcg==","signatures":[{"sig":"MEUCIQCL2vUBx8jxHGmC30hOVaSSij1ylQYNMHiYC6cUzy65egIgODkldEYGTt6ymord701WRE3FALDqTbP9FxCCw8bW14w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7282630},"engines":{"node":">=18.x"},"gitHead":"7a1a3c2b281b2f97f9aed208689e9ffa27de57b3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-7a1a3c2-202405240911.0_1716541954171_0.7958518832492221","host":"s3://npm-registry-packages"}},"2.4.1-45b1a1c-202405241058.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-45b1a1c-202405241058.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-45b1a1c-202405241058.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c22f3ac7360cc1993cc9e353735c979ec0434483","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-45b1a1c-202405241058.0.tgz","fileCount":328,"integrity":"sha512-Bt0+WUr0x5ZosIGZTui/oEBx481eHy5TNm8ZxN432BU4JVwYoP9kpV+VXsYnJlUYjQr3VYPa+Pqfw+qbeFhUQg==","signatures":[{"sig":"MEYCIQCo55Y1efPI2+ES4s0tknGaqjRc3c2R91VmRCyY14N0VAIhAKiDZNpWdBHJ9I3Yjyftc1xzrT8R0ZJfS5buFmsZyYuw","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7282646},"engines":{"node":">=18.x"},"gitHead":"45b1a1cdde192b7c2c46ba76e2a914ec8cb3a63d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-45b1a1c-202405241058.0_1716548360373_0.14054053179287318","host":"s3://npm-registry-packages"}},"2.4.1-45b1a1c-202405241316.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-45b1a1c-202405241316.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-45b1a1c-202405241316.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"224dcbabee11bd05613f7b88ad5d57244b04cb4c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-45b1a1c-202405241316.0.tgz","fileCount":328,"integrity":"sha512-YA+gcaoNW1wLoeHtNc5dskK59/NCXtEe0CylQGAsJ/l7kWiF0dJct45apFvleWfCILzW1SgT8SZMSQzlA7hnOw==","signatures":[{"sig":"MEQCIBAPD2HAaJHy+Xw4Me1fQ+ZxxMKOWuZQeI/xkqNICdePAiA8rzCzVchwrDjv5+m5motdla3bXhM9DjXxU0tk2kaYyQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7282646},"engines":{"node":">=18.x"},"gitHead":"45b1a1cdde192b7c2c46ba76e2a914ec8cb3a63d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-45b1a1c-202405241316.0_1716556677003_0.09460541184136151","host":"s3://npm-registry-packages"}},"2.4.1-45b1a1c-202405241321.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-45b1a1c-202405241321.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-45b1a1c-202405241321.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"eac02e157cb047e3a6db0415e96da1940ffb3da8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-45b1a1c-202405241321.0.tgz","fileCount":328,"integrity":"sha512-ZdNB/8pR6LJ4h5Z4sa7NpO6LsVKxLsg3jQNgPSaEHSnKxwDtBtA6FVqBHziDQs2hbfwSTa9++Vddcw+IMB1Axg==","signatures":[{"sig":"MEUCIQDVzCMBPMtYKV2eCj5X+XJV94R0pXqkjvkVWYOtCE0hEQIgUf3hdFOn45hfGxg4HNQQ+QZd2fxkUycAHdzRrwrFZ9U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7282646},"engines":{"node":">=18.x"},"gitHead":"45b1a1cdde192b7c2c46ba76e2a914ec8cb3a63d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-45b1a1c-202405241321.0_1716556968187_0.5213171424058554","host":"s3://npm-registry-packages"}},"2.4.1-2f654bf-202405241416.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-2f654bf-202405241416.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-2f654bf-202405241416.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f09de0083a536d1fa37fe12c623d5643f1241368","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-2f654bf-202405241416.0.tgz","fileCount":328,"integrity":"sha512-pyIGW+YYvXfS9kdoQShIXBY3g1wN+Av64S79cLgb022pet/VnlwQb27wGhde1TPOJARLrszvNagh5noTstUYZg==","signatures":[{"sig":"MEQCIEOpB5F6vog/3pODnV9hhj2Qce9EXdNBDO22vQOZB6qvAiA/lVecL/f50YhnQFLHEZdHMI8nIlC39VG6pFLRBjejng==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7282648},"engines":{"node":">=18.x"},"gitHead":"2f654bfcb67e297cc64aaa164c2b43c16b949761","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-2f654bf-202405241416.0_1716560244399_0.7324068158939174","host":"s3://npm-registry-packages"}},"2.4.1-2f654bf-202405241608.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-2f654bf-202405241608.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-2f654bf-202405241608.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8c1f8120b8012db7b7a88546f1cb912cb1cbcd6d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-2f654bf-202405241608.0.tgz","fileCount":328,"integrity":"sha512-grzI9XwwFv3+CNwFGEYVbR+PmYRA19NdEjs5VAAymNz22Xmcre6tQhggh6/Dk9GVgWnXrYkYc043j21AHiAPVg==","signatures":[{"sig":"MEYCIQCN0YfqvyLbVKHXrRYahBa5lINC9yTZOISTHWS2OSsrqwIhAOyak8U9ordvMXQcAWcpUbJnPYY2LtaQlbI9GbIvEUGL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7282648},"engines":{"node":">=18.x"},"gitHead":"2f654bfcb67e297cc64aaa164c2b43c16b949761","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-2f654bf-202405241608.0_1716566971922_0.44696880933449323","host":"s3://npm-registry-packages"}},"2.4.1-c202138-202405281101.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-c202138-202405281101.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-c202138-202405281101.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"df367433cdc3717e8147cd353b68fe789abe02ee","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-c202138-202405281101.0.tgz","fileCount":328,"integrity":"sha512-9NMetM0mPywyzmhyluEwOpcNvHVNdxOK/KriuH6xuKHVxrH0AuuTvyCUpynx+OTRphmMEl/+1IDAmpdovQjf4g==","signatures":[{"sig":"MEYCIQCzoHCrxvzvlXKYpMP83A5wOgcFrAmQbXqIDde3YguMYAIhANZP6s4Heuu48z5bVI6m9pDrHLT1WZJNByM5piwrpvEh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7283552},"engines":{"node":">=18.x"},"gitHead":"c202138969a580af56b6fb36c0bcbce955bd9e6b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-c202138-202405281101.0_1716894160473_0.11103936922659208","host":"s3://npm-registry-packages"}},"2.4.1-c202138-202405281104.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-c202138-202405281104.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-c202138-202405281104.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0fb545aee4a0ccf3ec9d9bc7419d8922d6e2f683","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-c202138-202405281104.0.tgz","fileCount":328,"integrity":"sha512-12iRZeFKrvkT2IFaXw5oSURJaVbJWhGQMlKqwuSgePzF5haL846jnF10TnNoZhOX5CYvF9bCLtx6FculGFsbQw==","signatures":[{"sig":"MEYCIQD5PzIHIcjuaiRw7WL5Fv+J4r32nONhJuZVHyPMQxd8WQIhAOGqi/HlLaYq0LE2Xaqp7nDffbeHP/xLOVUtK7GUmkDI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7283552},"engines":{"node":">=18.x"},"gitHead":"c202138969a580af56b6fb36c0bcbce955bd9e6b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-c202138-202405281104.0_1716894358982_0.7000206660501302","host":"s3://npm-registry-packages"}},"2.4.1-c202138-202405281107.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-c202138-202405281107.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-c202138-202405281107.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dc00c1b7f526528999d5029e0b4d9a093ec2ed96","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-c202138-202405281107.0.tgz","fileCount":328,"integrity":"sha512-KFx0C1jmdf8zaTvLvqwpNzoecbVShfkyer8BaW0BMEVI8wwKlmVxYidyLVqlfXLFHIe2T4j3dcGjRIdBJFSabg==","signatures":[{"sig":"MEQCIAHErUayKO/Gvvcb+fF3vC6vVAJR0uQLXf18T3F6SzLMAiA+N9GPwlqKXLuMJoxq5ab7iboN9OqeGK8AvyWczwKjaw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7283552},"engines":{"node":">=18.x"},"gitHead":"c202138969a580af56b6fb36c0bcbce955bd9e6b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-c202138-202405281107.0_1716894511766_0.41473295678169775","host":"s3://npm-registry-packages"}},"2.4.1-b622261-202405281247.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-b622261-202405281247.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-b622261-202405281247.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0d00994950f1da991ecfa1c77137cac71d8a934c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-b622261-202405281247.0.tgz","fileCount":328,"integrity":"sha512-AnseS+bjK9GBDqM+mcVf+PMhiTVXQGQfJfCZEXPmqxvqSHxFhqAvgrxsA/9g+l1jsSSpOF2l6hCHh4n2hY+GqA==","signatures":[{"sig":"MEYCIQCc0liM3haZB3hBq6AGyvg4JqlxatDPgP1+egSHWIVUAQIhAOPC/RPZL9Ks5HN7uJAvJAuNakCjtdOToFgNMc1iKOaC","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7285010},"engines":{"node":">=18.x"},"gitHead":"b6222613a3a9b038ee8d45486245662a6c1af816","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-b622261-202405281247.0_1716900553000_0.2287142293034563","host":"s3://npm-registry-packages"}},"2.4.1-d319e0d-202405281335.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-d319e0d-202405281335.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-d319e0d-202405281335.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a0705812d1ad7fe81722b5f6afc83280171a2ab3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-d319e0d-202405281335.0.tgz","fileCount":328,"integrity":"sha512-KfioiQvQGOKF+cjfh7Kft1Zy03G2pnJFC/RY77ZB+04mPpmIfx2sxgLC8t4T8nBo3gxRrSG78JKJuHiVsTKRUg==","signatures":[{"sig":"MEUCIQCHnEPBsCTyhOBnWL81XPX975lapOyETanCiFIWZMnkiAIgBiDsoiCSYdB0+ZzIGSRJAGkx1MCCrv/mkYlZt6yNHFU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7287048},"engines":{"node":">=18.x"},"gitHead":"d319e0deae07df7beb1f4b0e8bc35f56ef337c86","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-d319e0d-202405281335.0_1716903381627_0.3358590249554003","host":"s3://npm-registry-packages"}},"2.4.1-d319e0d-202405281343.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-d319e0d-202405281343.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-d319e0d-202405281343.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a69da1423638898281a6b96114697935c1ea0379","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-d319e0d-202405281343.0.tgz","fileCount":328,"integrity":"sha512-focAJYHeS1AIOiP1J+UBmsoNxWX261DzE13rl7qXney2Muow3shCh4U/ZEXZQtucxK8DqvIDqBca8cOyads4mw==","signatures":[{"sig":"MEYCIQDJk6sRdg/JPGgK6Qu973+hGvHk4EdZcShH51nHQlJYywIhAJiF7CUUP2dC9kJP/m9z+MTXae9Au66Y8vNhijaSBfpB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7287048},"engines":{"node":">=18.x"},"gitHead":"d319e0deae07df7beb1f4b0e8bc35f56ef337c86","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-d319e0d-202405281343.0_1716903860064_0.7627739108732656","host":"s3://npm-registry-packages"}},"2.4.1-4e68064-202405281352.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-4e68064-202405281352.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-4e68064-202405281352.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"46a257fc37107f2e47daa5825acc41eb2645aa6f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-4e68064-202405281352.0.tgz","fileCount":328,"integrity":"sha512-fy45hgJIot5Yw224M9HDqasemez2lsW9YYRRjhUpIZG7j4yxbsi9KazlJqJ0qDKvYQjJMaNNcx1uu6EQge0h3Q==","signatures":[{"sig":"MEUCIQDohCBYzGuTEWgFw+B7gqBhJ+pSbwD6tuNRvUJBL/t/uAIgJ22JvhXm/D6qDzTtRxDUEW2oEkPJlZMwPlC87iFb+eI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7287048},"engines":{"node":">=18.x"},"gitHead":"4e680641dc7516df8401ce8ad20656f073d865b3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-4e68064-202405281352.0_1716904394346_0.8849304272578924","host":"s3://npm-registry-packages"}},"2.4.1-6434064-202405281420.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-6434064-202405281420.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-6434064-202405281420.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f7ecaa6db191abe087af0371d7e3a16fd52cb841","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-6434064-202405281420.0.tgz","fileCount":328,"integrity":"sha512-FV8TyAJX9FAQcLZ6X9kkvdIaIoEgPz9fU2lK1inuLTxTz9UBeh3OjB4WlHa8l43XgLjy/tmr7kSn52crt/mbcQ==","signatures":[{"sig":"MEUCIQDKagt0o++jOkVOQ6zJrtzbOIFaz6XIfZUMQ7za0/gRBAIgRu+3ZsNkTI2qWVCMsS+sEpsf83iydQ3bwEajuAVcKr8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7287048},"engines":{"node":">=18.x"},"gitHead":"64340642d606e6d34be2353edea99effd33442b1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-6434064-202405281420.0_1716906111128_0.5131095709745508","host":"s3://npm-registry-packages"}},"2.4.1-1df27ef-202405290809.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-1df27ef-202405290809.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-1df27ef-202405290809.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1cd6811324950d5cd509bf39130426e676929a0e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-1df27ef-202405290809.0.tgz","fileCount":328,"integrity":"sha512-pjYoPPlR66vpEUG7E0kIIzGFr7wLxeYyrk4bPQgBvovWoJZ1YoAPaWKj/dYFnYBGiXyQMbhsrTKOF2rVx0lo3g==","signatures":[{"sig":"MEUCIF3KLoEjJB5CrKlpiCIW0hkma83VQhmM5cquBPHqqgRZAiEA00/BJS/QS7kg5ORYhnQLmmAruhJXQ9HGJ/YI0CnWO0Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7287080},"engines":{"node":">=18.x"},"gitHead":"1df27ef1fbb334dde92a1351d8d16236d2c220d1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-1df27ef-202405290809.0_1716970250697_0.6073849076355722","host":"s3://npm-registry-packages"}},"2.4.1-8bd6071-202405290924.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-8bd6071-202405290924.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-8bd6071-202405290924.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a6346ddd098523ef1a1c145baf1eaeee9654c4de","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-8bd6071-202405290924.0.tgz","fileCount":328,"integrity":"sha512-3Rpc60FqpeS8BKWeBnIwLqArddCh+iHFs2Zyzqj9G4MMlGpz0BCOZmrW0Wv4astOKm6/BpSHfyd5w/+wymmeYg==","signatures":[{"sig":"MEQCIBbG7JYg98lCW1WetZDJJlFpDuwdsxs1XjrchbXJfFC/AiAZf3Wbkbou42FaN+VwgerZOZ6dgWVLrg3WgpmASiXhvA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7287415},"engines":{"node":">=18.x"},"gitHead":"8bd6071749f5417c129db7e52b190580fd603f90","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-8bd6071-202405290924.0_1716974753387_0.7793590553626806","host":"s3://npm-registry-packages"}},"2.4.1-23a7ac6-202405291131.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-23a7ac6-202405291131.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-23a7ac6-202405291131.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a6de2ef62f4be6385c7ef2fad9ec848cc757cc69","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-23a7ac6-202405291131.0.tgz","fileCount":328,"integrity":"sha512-stPE36jH7+XhGRNZEv+QLYI3skW8tiDY58d5VaHCGYwxRax6B6Biv+SbNf/JpdXzt1da20uAm+j1F4Nfon+XvQ==","signatures":[{"sig":"MEUCIAOF+qpTbB3UeMZBt73eQdrJEe0g8+H/La0+q2EyPqrYAiEA2MeCmHhEOS2F7swhelurU48+WH8KfaZ9wNPo1qVp+QM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7289851},"engines":{"node":">=18.x"},"gitHead":"23a7ac6ed6e08e307ecec27b8d0bd5fd227abc10","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-23a7ac6-202405291131.0_1716982369012_0.4502011372595336","host":"s3://npm-registry-packages"}},"2.4.1-88225a7-202405291221.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-88225a7-202405291221.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-88225a7-202405291221.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"94b802fbaee57402775b7b446d2524580725c2c7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-88225a7-202405291221.0.tgz","fileCount":328,"integrity":"sha512-F0CxbQrJjGrG6dyFwkMUWuBN1NxELsRsPVuHHLT0pYVYAYDR+seiMLOf5RhYFzDq+kSwsr5i33fERSdIVA/d8w==","signatures":[{"sig":"MEYCIQC89iJCYhEDcccsW8xNtbIk0429NECmS9cZc/UHZH40JAIhAJZ140ZaWyssT9ZnHzjKXTWRcodn3upOs/oq2zASO6uT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7290433},"engines":{"node":">=18.x"},"gitHead":"88225a7f6e65f9fc892c692833066df8a98595e0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-88225a7-202405291221.0_1716985343505_0.31853514533877414","host":"s3://npm-registry-packages"}},"2.4.1-f632239-202405291346.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-f632239-202405291346.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-f632239-202405291346.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9e5063d38f63dd866b6216c21bea9b80ac515509","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-f632239-202405291346.0.tgz","fileCount":328,"integrity":"sha512-VJqrvX7hsIFpV6MoEgC8yTNUJWJbHkjGz/seIMPNoGejrfjMcMRQbmuioquAM1DPDkYo4ZvGWqkukj+NvAgfTA==","signatures":[{"sig":"MEQCICH3Le4RWh9thsY6vfaE0NrhhJznwY7Z2UJ0i/zReqQJAiAtSBx9G5vlYSFAPrIDBHrW6UZKCUVziGsIXflQDX11aw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7293827},"engines":{"node":">=18.x"},"gitHead":"f632239719d0524ab9e0055197f080ee1a39fb92","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-f632239-202405291346.0_1716990461616_0.7363878109502815","host":"s3://npm-registry-packages"}},"2.4.1-571484a-202405291455.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-571484a-202405291455.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-571484a-202405291455.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ed12945ca9cfc7983243ad7232132f2d1c1b4bfb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-571484a-202405291455.0.tgz","fileCount":328,"integrity":"sha512-nCPg2sC9vpAD3Xw2+OPRoJhHLBuOxuqiH7in3FDKAiU9sUuj81ymWfz6IGLTLoMEiin0QNhCXo7dqxmYLG8Tmg==","signatures":[{"sig":"MEUCIQCurs3YtKNUuyIUby4a6PWhhxbQqvOcGRDVH8uK4PfTYAIgRsKVHvOMfVlbePP0LzI/dB9ZAUbU18M4cAqMgrN9af0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7293244},"engines":{"node":">=18.x"},"gitHead":"571484aa89d9050088ccbe9c1927e5072f314092","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-571484a-202405291455.0_1716994613752_0.41080007882749636","host":"s3://npm-registry-packages"}},"2.4.1-eb63984-202405291608.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-eb63984-202405291608.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-eb63984-202405291608.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bba4487fd88462739a61729133c4ecae7a4041b9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-eb63984-202405291608.0.tgz","fileCount":329,"integrity":"sha512-mO7pd35NN5/CCYG/6Z7mkHvHQkdYaUm6R3aky+B0yEA4B0YpP+63ZgAkcbg/UvuVYnDcB4I8PkVzVL5FjCISHA==","signatures":[{"sig":"MEUCIQD/rfnYwns7zLT7YsoQ3aDLtLbUUE+DTL0IAvV4CFlrawIgdIWSDm9oBz6aALRPrF7yBndKtrXHJKWKAxzUZRjWKuY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7306818},"engines":{"node":">=18.x"},"gitHead":"eb63984ce55a67b1a391184a024c473e566c25c3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-eb63984-202405291608.0_1716999011829_0.5816427209055888","host":"s3://npm-registry-packages"}},"2.4.1-c116779-202405291647.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-c116779-202405291647.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-c116779-202405291647.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fac9598ad8617123e414090dd8fb4dcf40818ad2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-c116779-202405291647.0.tgz","fileCount":329,"integrity":"sha512-wtNacMedKJlE9ZvxrGlYH2EPzwexkq+Ok2eOeQVbCJj0+lRu1dRfqaf6K+yxORH0/ZvhQ5y0MN3yDr7kjmjGpQ==","signatures":[{"sig":"MEYCIQCD3n6p6foQVgPYOKDcZx/EYlUayc0peo1RerRLsWdB9QIhALN32se64zgd96+UWK1IS3S4wlEwuzCMlq4X6cHPNpff","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7306829},"engines":{"node":">=18.x"},"gitHead":"c11677942d9a45c03db49a5774593b39e5d2d919","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-c116779-202405291647.0_1717001348061_0.9997268244128186","host":"s3://npm-registry-packages"}},"2.4.1-e18fdce-202405300739.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-e18fdce-202405300739.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-e18fdce-202405300739.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"86532bc0bb1195483449ade6e95ef0dfb3dc8475","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-e18fdce-202405300739.0.tgz","fileCount":329,"integrity":"sha512-pi+579zdPQEVjXnufbGEoljGFpdkH6JqASEX+RMo+LJOLhtk22zeNTKnlbGGElf5DIuFh67t+wHJwYnebijOPQ==","signatures":[{"sig":"MEUCIFjRPMSv6voe2DsH08tes0oE104PqcPMxYVtVWT008DZAiEA0zGqEXTEqNNCwW4SNiTWSfL//LCZXuGvsqdPebMRYYo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7307977},"engines":{"node":">=18.x"},"gitHead":"e18fdcec45e13766bfe9f535b127e8654b5950bb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-e18fdce-202405300739.0_1717054830529_0.5460147536440363","host":"s3://npm-registry-packages"}},"2.4.1-4b8547d-202405300953.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-4b8547d-202405300953.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-4b8547d-202405300953.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ccb7634d4cb280ef0f1eabd286b64b0634670656","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-4b8547d-202405300953.0.tgz","fileCount":329,"integrity":"sha512-L+hm5Mh6whJzXWpXgR8hrntWLJNfF1m5O8fzVuWn/R765846pPUdX3hM45YdaRPchcm8VOzxkqYAbOxig6cfbQ==","signatures":[{"sig":"MEYCIQDe9PftvdJypE6r26mmTFU4/WX/K+O6Go5MUNuYOulK+wIhAIymkpYMbWl7kSV/WxVQFKgfzQVH5SGG5yKJH3F/0F4C","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7307973},"engines":{"node":">=18.x"},"gitHead":"4b8547dd7e6f72c1b923737b81522638a12fb207","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-4b8547d-202405300953.0_1717062875480_0.8847428156018127","host":"s3://npm-registry-packages"}},"2.4.1-99ef588-202405301510.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-99ef588-202405301510.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-99ef588-202405301510.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9d2b86ba2bf102b07b9f52ef841d62fc4eb1e782","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-99ef588-202405301510.0.tgz","fileCount":329,"integrity":"sha512-MZJJz6XgErsFPx3l36mLFmdzDWWcWmms/TOeTYOyDyknIJkCou6YdvDFXuyUjqMunPS794NdnVABOxngPHoaAg==","signatures":[{"sig":"MEUCIQCwHp2W6Ec17CkYj+Vviz64lRPG0p8I693NmGpEJ0I5EQIgIWmYMIY/EITRIzT9UvtbVQsQQ/14l2wvtLxhkVgymAY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7307973},"engines":{"node":">=18.x"},"gitHead":"99ef588738e113d080cd3fd8b8010cdc703275d4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-99ef588-202405301510.0_1717081908722_0.06803328379532525","host":"s3://npm-registry-packages"}},"2.4.1-46a787e-202405310954.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-46a787e-202405310954.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-46a787e-202405310954.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0f92cca84476b07e9ab1c9b27471d5a84a57fa3d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-46a787e-202405310954.0.tgz","fileCount":329,"integrity":"sha512-s5esStOXrXSFplf/1nGi1EIO/dJiTrK1yFXD7xwtHtEfgiG+gsIPfr+SSmakokX9AHUe3PZHlBKcoA5jJGC7Bw==","signatures":[{"sig":"MEQCIC+ass/TztIRRl4q6YWMgVnTl1QF1TNc6zKP8/2SZPPgAiAGjsp0i+1S5ng6C/+uXga3WyiT6wcXtHkxUcNpeSDO/g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7307752},"engines":{"node":">=18.x"},"gitHead":"46a787e25f387b24af4222790d8955d00211903c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-46a787e-202405310954.0_1717149333881_0.821496904807063","host":"s3://npm-registry-packages"}},"2.4.1-17bb165-202405311219.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-17bb165-202405311219.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-17bb165-202405311219.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b94f797f9b29b66b35adf1c2b5c75e595e0d135e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-17bb165-202405311219.0.tgz","fileCount":329,"integrity":"sha512-izEwyhXih8d0gphIGnYxbcuBBLRw4PBJz4guW13x58+5ll+BQdv42aeKKwXSx5dro3lMe7Bc75vwk84kiA1+og==","signatures":[{"sig":"MEYCIQD6Doq5cJe9Tf12UqZpuZ+ARkZRwk4/oLIdf6BS2O91gAIhAO+4s+ig9h8bjklXIEK7EkirHlCIIvok/AVRwaiz4YpV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7307840},"engines":{"node":">=18.x"},"gitHead":"17bb165d566c0843608a4fb58a146c8c6eac9bc0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-17bb165-202405311219.0_1717158034657_0.9667932041725724","host":"s3://npm-registry-packages"}},"2.4.1-0d240d0-202405311509.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-0d240d0-202405311509.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-0d240d0-202405311509.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6bc3e851985535a0aaed38bd0fffe95bf7cfd659","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-0d240d0-202405311509.0.tgz","fileCount":329,"integrity":"sha512-6PujlOWjxKiIVb5fnZyJ7qL1dNgSApExngMdXlURB2C35YsIFzMtG6owrjT3hKWRdnWkBoGxngDHxjQ4dHBcsA==","signatures":[{"sig":"MEYCIQDTI2eY6g+co3Lfr7vYEi4pSEym4f9aCzpXjH6i/l9XgwIhAMJ/W8F6qhTlNWEma96H/2CB2Q4P3GLv9pnef2ykzMgz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7307840},"engines":{"node":">=18.x"},"gitHead":"0d240d091f7fa2b90a4848aee4852cd62242154a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-0d240d0-202405311509.0_1717168262223_0.36189157114253656","host":"s3://npm-registry-packages"}},"2.4.1-3d7af2a-202405311536.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-3d7af2a-202405311536.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-3d7af2a-202405311536.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"516d0c3398fe6c937c7e80d23315dc9f1ee684b4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-3d7af2a-202405311536.0.tgz","fileCount":329,"integrity":"sha512-W72PrqONCb52jH+fznEmc3RUzz6Iw4C0dUh65qsVPrbfgkxZoVVsPcDe7bjICspWpd67ncM9gdbnjEzBQxCbSw==","signatures":[{"sig":"MEUCIQCWTFvJhO0dZgWKCX8RsvlTSIik08Y4C8Bvb4ARe7yFAAIgHENHyT08czOr3eukKr1kT7QRoL+VNJjUfcTQ+njic0w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7308181},"engines":{"node":">=18.x"},"gitHead":"3d7af2a8d4c1eb52ca4ef750d316251da45c57be","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-3d7af2a-202405311536.0_1717169844886_0.7120235457289639","host":"s3://npm-registry-packages"}},"2.4.1-3d7af2a-202406041312.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-3d7af2a-202406041312.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-3d7af2a-202406041312.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d7a79fb04b489dc65388847077c6ccd38427ac3e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-3d7af2a-202406041312.0.tgz","fileCount":329,"integrity":"sha512-xL8fF0h734Lobgl2EDsEyt7TsnLVgoC1/ZqqMD5hYtTRN5C3DdhMPw7ghKdHYytPZlIdZlWLLpBhK2vIO1ABMQ==","signatures":[{"sig":"MEUCIAubCLL3xIcibS5PGIJa04fWXj52Dgp0L1QZsBm8e1G0AiEAvwTRhN8m3F/INnQAxTIKBm9CMlEZDCYng1s2az4wlnk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7308181},"engines":{"node":">=18.x"},"gitHead":"3d7af2a8d4c1eb52ca4ef750d316251da45c57be","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-3d7af2a-202406041312.0_1717506841009_0.0907340491186126","host":"s3://npm-registry-packages"}},"2.4.1-3d7af2a-202406041325.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-3d7af2a-202406041325.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-3d7af2a-202406041325.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fa5875391878c7e17c7efe02f83da9e56aec50d5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-3d7af2a-202406041325.0.tgz","fileCount":329,"integrity":"sha512-zvymLv8DTaFpZBuuIV10Q8mdTTLJLZGyHsVTYibpDcp43gmJzXiU+cif0X4GiXX0gatn5Rn1cJF77K3Y6dyj1Q==","signatures":[{"sig":"MEUCIQCjDLz7kKgrSAkVToc6gxmyn5SLc+khnK17rn+ccBo86AIgTVF4v+E9w7QFy1veZCKTZqhni1ESySesfU+rVrhYo7M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7308181},"engines":{"node":">=18.x"},"gitHead":"3d7af2a8d4c1eb52ca4ef750d316251da45c57be","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-3d7af2a-202406041325.0_1717507574193_0.8471732409362598","host":"s3://npm-registry-packages"}},"2.4.1-3d7af2a-202406041413.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-3d7af2a-202406041413.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-3d7af2a-202406041413.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5ecd2ada40255d326acc0e4f532d027224d97bf0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-3d7af2a-202406041413.0.tgz","fileCount":329,"integrity":"sha512-JaDmKD//NwCBct5GnP9gyKK+3ZY5p83bRwFM6YehqMSRn8d5/ZG4C61Bu9MmvN19I5dY+vV+P9smc1HnUKUOiw==","signatures":[{"sig":"MEUCIDSK6zdUj944n0U5EywO3su7LCJKNr3DDPznYxNuceg1AiEA/zJqQnTnzqEbdmZPADsqivAjYgSKqSbRLukbgTHwj2M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7308181},"engines":{"node":">=18.x"},"gitHead":"3d7af2a8d4c1eb52ca4ef750d316251da45c57be","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-3d7af2a-202406041413.0_1717510486217_0.6650966493210464","host":"s3://npm-registry-packages"}},"2.4.1-3d7af2a-202406041415.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-3d7af2a-202406041415.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-3d7af2a-202406041415.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4d24be104cc31f255c7f718e17317e42670b0486","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-3d7af2a-202406041415.0.tgz","fileCount":329,"integrity":"sha512-KobfrabqmnKJK0RvyoDErDFk8Q083rd31xJazCcpyIi/4dKOIkGlWlm88AowwxxpHLbKmDjYL+xmS13TIhJ7PA==","signatures":[{"sig":"MEYCIQCkuJIw6KZfAgWbr/agZIjrJe7CeGXcSH41BbWWhoLVjAIhAJpbJGFu9A71dBdArx3m0I2huWJTfm9Y1ggH9SH5kRh3","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7308181},"engines":{"node":">=18.x"},"gitHead":"3d7af2a8d4c1eb52ca4ef750d316251da45c57be","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-3d7af2a-202406041415.0_1717510588789_0.06199679984232476","host":"s3://npm-registry-packages"}},"2.4.1-3d7af2a-202406041416.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-3d7af2a-202406041416.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-3d7af2a-202406041416.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4fc6ffccf8e5da7eaae3ca32edac768d878ab70a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-3d7af2a-202406041416.0.tgz","fileCount":329,"integrity":"sha512-duhu6/yyG/r0jxAXgrgMYR8eG7H10EkmvPZTPJJoQgRS7kojXksY1khNUcgKoYiTMazwAzSB2/VySbZBdr1izw==","signatures":[{"sig":"MEUCIQDNYj9CNdOnLSaEW7urCMmy2l53LPehjNAfNagkaPfn4gIgLEfC0Phmz92n23mRNKe4IeQAqZYRrnYmuO/pC36RcZY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7308181},"engines":{"node":">=18.x"},"gitHead":"3d7af2a8d4c1eb52ca4ef750d316251da45c57be","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-3d7af2a-202406041416.0_1717510678172_0.7083060789665219","host":"s3://npm-registry-packages"}},"2.4.1-0824659-202406041454.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-0824659-202406041454.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-0824659-202406041454.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e8368955127cec1b0a89387cdd3ffe120302ffc0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-0824659-202406041454.0.tgz","fileCount":329,"integrity":"sha512-S35ypZt9eQtfbzsZxSuXnhhovi1/IpFlHJEafDTrr1990OwVdqkL5YTAwwOkFqxnR7AxZ4xqVZNKxJLTpUoBRw==","signatures":[{"sig":"MEUCIFzUU/neRUZmGknfVJqhrXrB1AoFQ74QyLsHoPWfuRFgAiEAtfB6Sl5W7C9xY0QqfO6AsFVH+nuXa887rnYDKTnjsq4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7308199},"engines":{"node":">=18.x"},"gitHead":"08246591387d92678785e443bb4e064bcec0bb5b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-0824659-202406041454.0_1717512953522_0.14019498927803165","host":"s3://npm-registry-packages"}},"2.4.1-0824659-202406041500.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-0824659-202406041500.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-0824659-202406041500.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c87b3a2f0ee43590f77f31b1d152e274e9571972","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-0824659-202406041500.0.tgz","fileCount":329,"integrity":"sha512-iz+CuLO+jbpQP2Ra12RGkgevDXYyNeqlKKCXrlRjrSW+N4EFbuFc3HfzRh1I1WDroaVCKOQn/VyElc70+wbC8g==","signatures":[{"sig":"MEUCIQCZI0eIZaj1KdmLr69NPT6SZ8viO+JzLMFlDAP089VSZwIgZUs1HR+uJwaTs5qMVIV33GVerI+tP+7/y0ee1PbMPos=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7308199},"engines":{"node":">=18.x"},"gitHead":"08246591387d92678785e443bb4e064bcec0bb5b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-0824659-202406041500.0_1717513310931_0.3632786701726294","host":"s3://npm-registry-packages"}},"2.4.1-0824659-202406041512.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-0824659-202406041512.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-0824659-202406041512.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"91405c08f5491c359492d32b6792725e25b1d8b6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-0824659-202406041512.0.tgz","fileCount":329,"integrity":"sha512-Fu7iTXhQl1uFskkIcZRJlUVsR+7HfwafmEIzb9alm9loWjItRpAZ7DTmwkkxBp3HVykLQ2ZoFZlzdCgKzsY+Ww==","signatures":[{"sig":"MEQCIDD65VbQYri7wEA/OngvpQSEFH3H1a/hFdcnvhYpkM3MAiAYksMtA1DHcRKjfhbKSe+i3TLvcR8quA8gyE+28eItTA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7308199},"engines":{"node":">=18.x"},"gitHead":"08246591387d92678785e443bb4e064bcec0bb5b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-0824659-202406041512.0_1717514018816_0.0647931749689934","host":"s3://npm-registry-packages"}},"2.4.1-560f800-202406051119.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-560f800-202406051119.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-560f800-202406051119.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"15b869736415e0877ae4364c3d2dc8d3ae919d71","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-560f800-202406051119.0.tgz","fileCount":329,"integrity":"sha512-FWe51yGp3OwHhYw6lxv/3wWKSZJ4wwSc88pCnDtlp4GoNt35sDrdC7L2m7H8C2+OeBpd2K23s+hDryshja+0CA==","signatures":[{"sig":"MEUCIE0+JGopm9I9BmVQb5VK5IZ4Hhq4SDmZ46PHfz/spe/VAiEA+MLK6a1dagLOJOrG6EWhqrbPP3Iam6WkK7tdRZWF6Zk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7308067},"engines":{"node":">=18.x"},"gitHead":"560f8004d1228e5e5f801a39b02b9d55f4fdc298","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-560f800-202406051119.0_1717586422139_0.1281987899091106","host":"s3://npm-registry-packages"}},"2.4.1-ecc4ec6-202406051340.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-ecc4ec6-202406051340.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-ecc4ec6-202406051340.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"58c33e4781972a0982789c5c8c85308df90cfdf4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-ecc4ec6-202406051340.0.tgz","fileCount":331,"integrity":"sha512-LKg7AKBgUoxIRyTPE9cismr77/VWI49vUjUWrYGzgZ6P3h+QPjtfpbtLZyffPIeqwjUGjgbQEzJGuQxjyvO/aQ==","signatures":[{"sig":"MEUCIQDUHI9ysP3PHRsFCQ51/tq0J3aPecWwy9G0Gq37Et45ZwIgCNzimEqrxyoB67Fg1OOlzthX5ba8rpa1AOmr9780ZoU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7329637},"engines":{"node":">=18.x"},"gitHead":"ecc4ec6d48acb9d65f7656c219f16e60d1a3d5fa","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.3.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-ecc4ec6-202406051340.0_1717594920782_0.42211393513841244","host":"s3://npm-registry-packages"}},"2.4.1-3b1910a-202406051528.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-3b1910a-202406051528.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-3b1910a-202406051528.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d65594430d6c83597b4d8f2b6cc8d5f4903ddc9e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-3b1910a-202406051528.0.tgz","fileCount":331,"integrity":"sha512-8AkmoTc5Uw2IdxrOMhtWLoPF6ogzz7Ky5M3bxlbDxmi9wSDY5Y9P0mguk2EfUjY9PIOxbB2N9dbGIXUuDq0y+A==","signatures":[{"sig":"MEUCIGctlRvmPQnmRDszdOUri9ZHJc/oPkLgRBFC7DZO/EqTAiEAyIfA6fObc72k9vcsrfAPk8DBDfLC9cDdOsoX2Rg6h5c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7357518},"engines":{"node":">=18.x"},"gitHead":"3b1910a145bbf1158aea9ca8c299fed3cb329553","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-3b1910a-202406051528.0_1717601403947_0.6395815351550906","host":"s3://npm-registry-packages"}},"2.4.1-b7548c5-202406051734.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-b7548c5-202406051734.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-b7548c5-202406051734.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d617151c70d685fa0e8df7417ba4aca33148fdb9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-b7548c5-202406051734.0.tgz","fileCount":331,"integrity":"sha512-sujL7ayxHBMy07kr2Fsjzq6UKN9H7gRW9R3PrmPu5W2McXU7MkiJl+Cp5EcDnP2bLREH/ivlOuyMoFypred7mA==","signatures":[{"sig":"MEUCIBeP0lCycNzBRdwmlCph0GRb3cyGFZhKmSE7diZNztQXAiEApXxRgHxNZRmyuBVyUPdzW+9houEf7y48Rek0gEgvz1k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7368787},"engines":{"node":">=18.x"},"gitHead":"b7548c56a27b05c8c03c2486ee3a0910ca508f6d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-b7548c5-202406051734.0_1717608955467_0.1468018516352554","host":"s3://npm-registry-packages"}},"2.4.1-f822af2-202406060826.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-f822af2-202406060826.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-f822af2-202406060826.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5f0b3b256067dc56dfbd46648078502fc83d3d8e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-f822af2-202406060826.0.tgz","fileCount":331,"integrity":"sha512-zptY1PSk+fZttTi8GCvjr6hF13LfHgJ21w7c0SPt27EV2iA4jEVOI5UUMwEy7Qu0A1Bt4x4UjrQETOy4j6hGdQ==","signatures":[{"sig":"MEYCIQC3JPbRg0gR0vGsHtpxxDq4797iyovQFHAWJkPGmTwpNAIhANZKmdvePKMIZpYwkaeJZn7cLVWBtqSWAkCEdohZ1/1V","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7368787},"engines":{"node":">=18.x"},"gitHead":"f822af2b960fb990672c8990aa48850fbb30aef3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-f822af2-202406060826.0_1717662435751_0.6266671591099409","host":"s3://npm-registry-packages"}},"2.4.1-970154a-202406060852.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-970154a-202406060852.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-970154a-202406060852.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7b2ce2354d0253cbefa975b483c60c2e604fa66d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-970154a-202406060852.0.tgz","fileCount":331,"integrity":"sha512-IoTiVBCW/PpfvKFcfRs9xks4rTzgCekFsWJ4Kt6TmhvPrdi3pmBIansYVw1I/wbZYPgHIQXD0jj87vg/jiHFYQ==","signatures":[{"sig":"MEYCIQDR/nZHY1uaO9t+2TdCDsp4dXROVHstu6cmT7ex4t5vawIhAJJ7E1iOeJzyimbOAz6YkJZCr61g/LYEW8pOCImYOxx8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7368973},"engines":{"node":">=18.x"},"gitHead":"970154ac2b16e6e78d4b3c0420829d56dba52446","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-970154a-202406060852.0_1717664041370_0.4776805475175179","host":"s3://npm-registry-packages"}},"2.4.1-970154a-202406060855.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-970154a-202406060855.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-970154a-202406060855.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"067fcfb4c9f0d7089350066b607b49dc79b61a82","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-970154a-202406060855.0.tgz","fileCount":331,"integrity":"sha512-fh1WgZgIOX4JR1S1GsxoP7+qJizREH8HN8JUuVKOajHpGGgFVPUatryuvh9ls5aQyeQb3qc+JDVtcgaWpePyYw==","signatures":[{"sig":"MEYCIQDz/EogpdDd6Ljpyjs1R3iql2x6mFZXTZc/48kaG+CNbgIhAIIy5t6jCIDDtcnbweJUTKnyQofErHOKfAI0ygQ9c33r","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7368973},"engines":{"node":">=18.x"},"gitHead":"970154ac2b16e6e78d4b3c0420829d56dba52446","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-970154a-202406060855.0_1717664203173_0.5143964674730759","host":"s3://npm-registry-packages"}},"2.4.1-970154a-202406060930.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-970154a-202406060930.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-970154a-202406060930.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"73c2bf0d07bfbe365d07d8e74a2e7b718f326497","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-970154a-202406060930.0.tgz","fileCount":331,"integrity":"sha512-mpTp7sqVoSHlS91ylJIAB5S9Eg0seHQ5VuRrVVqXZcmdB3smKMInDYrjmq7AbLa5ps1cWWDhPlpqbTL8ZXaE6A==","signatures":[{"sig":"MEYCIQDE7aY4j214A4xWCzKxGo3T9tcM2Xpa8JGWzzQdc6VcOgIhAMhGNIOZRIBn09Xc14oCTPf4Oko90ZjaE7XJ+wO5+6sQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7368973},"engines":{"node":">=18.x"},"gitHead":"970154ac2b16e6e78d4b3c0420829d56dba52446","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-970154a-202406060930.0_1717666305567_0.20653952226280015","host":"s3://npm-registry-packages"}},"2.4.1-970154a-202406060932.0":{"name":"@flowfuse/flowfuse","version":"2.4.1-970154a-202406060932.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.4.1-970154a-202406060932.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a1af0e9bed081f2b62e92959637eb485caf1fb2d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.4.1-970154a-202406060932.0.tgz","fileCount":331,"integrity":"sha512-gxp5aJSYPsU8ylXtoc3jm44yLNLExNmoiO47VexmlAS5F45nGcDy3q4Ubp6CvMwfb0osyUWOFXCLaDms60iJLA==","signatures":[{"sig":"MEUCIBMOb38tWEft3SyGNC62WZoeaP6GrJGzOWpfGTFplK5PAiEA1gR3mqsigTREafWif4mhvoaJBqETgFTYEimtZCyroy4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7368973},"engines":{"node":">=18.x"},"gitHead":"970154ac2b16e6e78d4b3c0420829d56dba52446","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.4.1-970154a-202406060932.0_1717666434542_0.4337365500522301","host":"s3://npm-registry-packages"}},"2.5.0":{"name":"@flowfuse/flowfuse","version":"2.5.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ed72b0fe2b4f0dfb7d25efd75e863693f1f8cd7f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.0.tgz","fileCount":331,"integrity":"sha512-esu1rholcKavYiiSmj9Maq2WFKE5JO7ehX2wbhyax7Vg+lXFbxdQmDJbEq/daSSafpsQCgyPplLs8UhiukEUvw==","signatures":[{"sig":"MEQCIETgE1v3yx6u4iR7ID/AiUas2+TJRAX23Nu/uJMA5l5MAiA8jiWO5YCA8H87NINwe2T2dmV01VXHKpVHKNwPaIzuTg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7371842},"engines":{"node":">=18.x"},"gitHead":"936d88b7a175b1b9f32bab179074aaba8d66ba03","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.5.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.0_1717666884421_0.589763796122893","host":"s3://npm-registry-packages"}},"2.5.1-936d88b-202406060948.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-936d88b-202406060948.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-936d88b-202406060948.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2a427ccecd0b1aefc82ec7f34996ace64fc5536e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-936d88b-202406060948.0.tgz","fileCount":331,"integrity":"sha512-xYlQpyOYfh0pdRNKPR+1sTMjB92EzTowxQqWnPmCMYe9NO4XKLoD2Nb1kqO8hhUOXwoNJtUD5orMWWOXuXr7pQ==","signatures":[{"sig":"MEYCIQDr16YN2UVNnkDvHrv8/6isQGrnMCaM+K4Ux1ulno1ymwIhAKVMWpKJSlZ0nexQvk0KW1TQAnKhNvdp8kNoRpQYv2JG","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7373835},"engines":{"node":">=18.x"},"gitHead":"936d88b7a175b1b9f32bab179074aaba8d66ba03","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-936d88b-202406060948.0_1717667347715_0.9106696292719867","host":"s3://npm-registry-packages"}},"2.5.1-e6e5cd0-202406061105.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-e6e5cd0-202406061105.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-e6e5cd0-202406061105.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4ae3eeec3acd64335fb35b1264c9b388ba702a89","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-e6e5cd0-202406061105.0.tgz","fileCount":331,"integrity":"sha512-zLAfii2noPKfif/2rfGXo0wWnKgYH/PkLPQyLexCUoeUqYZ33xGGx+8pp7TNxlNxkVQ9gXmYN1fNImJB24+N0g==","signatures":[{"sig":"MEUCIQCY2KkkZGFM354k7Tix5Al63eO1f2ljloDM4mijYT3jjwIgPQQeCqOAGxP8zqhEqN6SFKmCoxvi9BBVpmwaZqgsMz8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7373929},"engines":{"node":">=18.x"},"gitHead":"e6e5cd0d7d1e6b10408ac6ef81b68dd7a5eebc0c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-e6e5cd0-202406061105.0_1717671994549_0.5277643113243342","host":"s3://npm-registry-packages"}},"2.5.1-9801e90-202406061436.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-9801e90-202406061436.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-9801e90-202406061436.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"042afd80872607281ff59b8ffbc99dc46496536b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-9801e90-202406061436.0.tgz","fileCount":331,"integrity":"sha512-LmdLA3HsiSEetbqV+jJveoAqaopurSwYScBTVUNEui9y20qsFlRcMbQgu1DGkZUxxdaVls4pudjPD5QLwgAc+A==","signatures":[{"sig":"MEUCIA17loh3zylZyIV1e640K8fegPFZkXRgGaiKMgukIJ0bAiEAwR1asUESXg+1AyRMcHcKr9GNALWo9sEcAB1/HwEriI4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7373929},"engines":{"node":">=18.x"},"gitHead":"9801e90ab68fa6b614fab4a24be2bd672283e30e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-9801e90-202406061436.0_1717684673754_0.5659668839815686","host":"s3://npm-registry-packages"}},"2.5.1-b5eaf8c-202406061508.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-b5eaf8c-202406061508.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-b5eaf8c-202406061508.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7dff55da1f5d49850d1ac7569c480feeb7418c16","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-b5eaf8c-202406061508.0.tgz","fileCount":331,"integrity":"sha512-wrE4RgqiwrvfXnKZWR5U4HtbEExKBxI4/DUJBFQjR43NUkmUc9ow+zh1dewBBW3l3+bIfPJF64fS5rMwFRhFAw==","signatures":[{"sig":"MEQCIBqVasGa9mmlQPob6PEZ2/qgx/YCeql99dM3a8v9U/gqAiB+ZeBjrUa2e5XRGbUVGMAm7dN0rk1oIdoIIKIdM+oYOA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7373942},"engines":{"node":">=18.x"},"gitHead":"b5eaf8c9e09c1a512add3c052051c01726ae4d88","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-b5eaf8c-202406061508.0_1717686562575_0.6030380490235052","host":"s3://npm-registry-packages"}},"2.5.1-9a74682-202406070634.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-9a74682-202406070634.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-9a74682-202406070634.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8432221f0c06791db910d5d1ffbad1cf9b83a6b4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-9a74682-202406070634.0.tgz","fileCount":331,"integrity":"sha512-vZdK9mNhZyAXwIb4UJyn0a6xlMqcKa2oEx8fPAgMwFgHRmRMwaAQ0x/yANxAz5Nsh6UgfqCP2LebPe5GsWjrMQ==","signatures":[{"sig":"MEUCICkfV/CllffSDcEgR1DEz83/3BoefDnXaS+Cop4xqhP/AiEA4rJKPCZY81uFXQ8YbsyLaORt1bN0CnDSZ29PBO3D20w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7373942},"engines":{"node":">=18.x"},"gitHead":"9a74682593b1224fdba4e3549028abb0c209cdbd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-9a74682-202406070634.0_1717742116550_0.7758370026865888","host":"s3://npm-registry-packages"}},"2.5.1-dbd6bc2-202406100834.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-dbd6bc2-202406100834.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-dbd6bc2-202406100834.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"65d5f24a2e5f36abb2ad790ac3d97d67102a409c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-dbd6bc2-202406100834.0.tgz","fileCount":331,"integrity":"sha512-QVjDCry2zARpHR2qKZNrQopIIT0K617rFMxQOnzEcssemD41H5Oz+Z1l4zHFc6PG6SgF4k7X7ZmBzqj8Ue0Msg==","signatures":[{"sig":"MEUCIQDqDaNcX6Bk9knXh79JNh/xN88qhCaMuo3j1H5vtohFGAIgHIh7GNzn462f6p2+IwjDEKqEQIlxyqUEfSUu5IEBy+8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7373942},"engines":{"node":">=18.x"},"gitHead":"dbd6bc2f8709a7b84cc9fb0ff9eebc3ea97413b5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-dbd6bc2-202406100834.0_1718008551920_0.2356524210490818","host":"s3://npm-registry-packages"}},"2.5.1-599d735-202406101050.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-599d735-202406101050.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-599d735-202406101050.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3c40e504e25c497cb50b462fe632e3b3b6c71c09","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-599d735-202406101050.0.tgz","fileCount":331,"integrity":"sha512-26FMxoU3CCXykS2fmVuxCo1kMMuFdAMM/W+fr9MSXOY+vdpENkmHtVgK6ZvNWQh5T+x7pPaaRcmHTKnlDjm4Ng==","signatures":[{"sig":"MEQCIGdJq6cBhwORwoodzexwRzai65X/s7etaq2RMP1GxHDcAiAcTiZjngmWEEMEk8tW0YzMYUa84+nEExnsW80O09lsBg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7373942},"engines":{"node":">=18.x"},"gitHead":"599d735ad6ce78092f3bf90734ce4a930fcada8e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-599d735-202406101050.0_1718016700508_0.18270468111714644","host":"s3://npm-registry-packages"}},"2.5.1-599d735-202406101203.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-599d735-202406101203.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-599d735-202406101203.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5a11250e14436261883c8a2c620316d9792bb657","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-599d735-202406101203.0.tgz","fileCount":331,"integrity":"sha512-b7fOWbl3erJEDGz7VPTHBCKv2GnfwdjSVI1G2c5aJI77q99teRV+A/xOXNgS3gXNvYgJzjKNgFa6ApMCy6ixAw==","signatures":[{"sig":"MEYCIQCsl467DCxDv+raD5YKGuLg7w7gNLzxjGUxi8bMy24WRAIhANj96+YFQM3lcXNQ2Ow3UbEyqGRI2ircqBMaoUmZk/hJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7373942},"engines":{"node":">=18.x"},"gitHead":"599d735ad6ce78092f3bf90734ce4a930fcada8e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-599d735-202406101203.0_1718021096532_0.2108843766153139","host":"s3://npm-registry-packages"}},"2.5.1-17b60fd-202406101241.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-17b60fd-202406101241.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-17b60fd-202406101241.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4ce79872f7b5e8b61cbb28d6d7258396eded9abc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-17b60fd-202406101241.0.tgz","fileCount":331,"integrity":"sha512-QLxZjT5VIWyz7CgukGuFxsLSPe8d04SFA4SYxMYhvRxVkMfl5tSUlQrzeO8aqrr5YJegkgpPknpwh2yYQ6YHqQ==","signatures":[{"sig":"MEYCIQDOJBTE4jZ9Tp88PDiT0HuckFkRvHi0Ok7+MpyUkqI/5wIhALNtTCRuS5TIPs9GnEJJT/61g+j9ICvDV05YP6O/NL9w","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7373494},"engines":{"node":">=18.x"},"gitHead":"17b60fda1d3d2ca44e6814ff360eefc2ea2532fa","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-17b60fd-202406101241.0_1718023350171_0.24846349973442394","host":"s3://npm-registry-packages"}},"2.5.1-17b60fd-202406101512.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-17b60fd-202406101512.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-17b60fd-202406101512.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"707d38b9965672c470687db04515860f4110f76c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-17b60fd-202406101512.0.tgz","fileCount":331,"integrity":"sha512-xGL8J73MXieg1LwSEQ6pLXOoRxr1NMfALXDKxCn22hH/eNvzEYI7zoMoGQASqOBsXs6BH3bFQGxUNliOZUKf0A==","signatures":[{"sig":"MEUCIQCsfn8jR4QDDPTfkewweEKT+NfX4PEwdjWzNhfKJJpUgwIgKqu3qzI0GjP5/xE4nNLeFOhe5Kxe5974LjYXBxsKsUE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7373494},"engines":{"node":">=18.x"},"gitHead":"17b60fda1d3d2ca44e6814ff360eefc2ea2532fa","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-17b60fd-202406101512.0_1718032402934_0.17959203426761472","host":"s3://npm-registry-packages"}},"2.5.1-e89b683-202406110855.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-e89b683-202406110855.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-e89b683-202406110855.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1724a45ed2332044044cac1be7efaa8e869eee85","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-e89b683-202406110855.0.tgz","fileCount":331,"integrity":"sha512-3m6yPmHiwXU2ENxqqdIf60J1Nly+/E5CrEV2mlO8ra84I4kogO6ZmqhiPparXcN7ZnuR4+jBXNOTFLQ45gckbw==","signatures":[{"sig":"MEYCIQCdg5bXcXmuzGRY9sFy5/+SspX7Ci/lJqoEJ+wL7AJ0KgIhANh9cQn5f+LLqT0tPDAtUNFiXay/URj/EMrv2qPvta48","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7373494},"engines":{"node":">=18.x"},"gitHead":"e89b683abeaf788066bde7f1f9fcf7eada3bc226","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-e89b683-202406110855.0_1718096212625_0.9588366928383887","host":"s3://npm-registry-packages"}},"2.5.1-9b4d2b5-202406110912.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-9b4d2b5-202406110912.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-9b4d2b5-202406110912.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ffb29b5cc521482bec8a870e410c32530905f497","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-9b4d2b5-202406110912.0.tgz","fileCount":331,"integrity":"sha512-8icexk0aM5nU49zlo6eqUnb1oc5+rqGNzKy4ZHYwoBKoYf6tpTsyEGuy/KoCBkozqZjyOyFDHM1+EuUZiUUbiw==","signatures":[{"sig":"MEUCIQC172+wQo/cgI5mkcgDTkPGFd+Je5Wu5wpqH7cmO9EiYQIgZZOkwQojuMbqsb0NmDz3u08gFysPjJkOMbpWxQ2EUGw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7377718},"engines":{"node":">=18.x"},"gitHead":"9b4d2b5978dbb1bfa355a98ace0b287bcf4b1651","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-9b4d2b5-202406110912.0_1718097203462_0.4171975670487975","host":"s3://npm-registry-packages"}},"2.5.1-f7a994a-202406111101.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-f7a994a-202406111101.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-f7a994a-202406111101.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0b675b42f25264bfe1d46608601006a203fcec7c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-f7a994a-202406111101.0.tgz","fileCount":331,"integrity":"sha512-+9+ieEEO93h0FTHyB4R+IwtDN+X3CzhafPvgURmG1ZCXvR9KJEUJ78LcH0HmLW3Y/BcyJCdEJhOVA4URMmvGIg==","signatures":[{"sig":"MEYCIQCjOXZgxmHo/oc2pnVZgVYzu+k43sjXIs/4c4etBL4NwAIhAPGmt0GDASSd7AWCF2itmRUKCBMLsHqe0uuvodKRoLg1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7377306},"engines":{"node":">=18.x"},"gitHead":"f7a994a59e9d15ab32142ae7c8c7e6266343b117","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-f7a994a-202406111101.0_1718103750613_0.5816346051506305","host":"s3://npm-registry-packages"}},"2.5.1-f7a994a-202406111109.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-f7a994a-202406111109.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-f7a994a-202406111109.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"644866b533f5f727dfbacf6456da272c0e646738","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-f7a994a-202406111109.0.tgz","fileCount":331,"integrity":"sha512-PAREVIXVB1hJFcvWvR9+jWASsuIlvBQs7vH7xOQeb7KCVKUmTPxb6VQwRkPmkPeHtiyzwmxa6HRwjRFyGNoR2Q==","signatures":[{"sig":"MEQCIA6aoWbQ0/xELsuSKmFml8EXMOCmLI7lkht0SQ0G8U21AiAV0MVrzgciYQhmNgx1IAuOZb1UWx1KUsg1RdGXlahBkw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7377306},"engines":{"node":">=18.x"},"gitHead":"f7a994a59e9d15ab32142ae7c8c7e6266343b117","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-f7a994a-202406111109.0_1718104217886_0.31976818924357353","host":"s3://npm-registry-packages"}},"2.5.1-f7a994a-202406120904.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-f7a994a-202406120904.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-f7a994a-202406120904.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"377523af18096b1b2e04aed39692c5f30c149f5c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-f7a994a-202406120904.0.tgz","fileCount":331,"integrity":"sha512-ux+DoYujnM0JmxUStiwYEVxGHzKWw4raX/BvYZnA025sg0AfR+/TEmetNITGTuIN7J7EzNYMld1C/kOZhdQ60g==","signatures":[{"sig":"MEQCIEYKyi2USckJpRDmRbmpmvRyvkfzQ1RuSPYIaNbkD11NAiB90+VKEpnWcUar7ykh+BYIDnBJREK0JAZi/Lk2xI2SAA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7377306},"engines":{"node":">=18.x"},"gitHead":"f7a994a59e9d15ab32142ae7c8c7e6266343b117","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-f7a994a-202406120904.0_1718183151365_0.3809263078200631","host":"s3://npm-registry-packages"}},"2.5.1-f7a994a-202406120918.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-f7a994a-202406120918.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-f7a994a-202406120918.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7b95e486cf18dec5349df13862246a741858c15d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-f7a994a-202406120918.0.tgz","fileCount":331,"integrity":"sha512-2Hob20s4X0g+csNTNkOj9xA+Uhp7K1b+hGXbzrXhUF2vKLAbgaLjh756eg5YugyQntCu3dW6CwpVVs+4qsCmHA==","signatures":[{"sig":"MEQCIHWdLrV3I4BHnx5B4PxbdIhsmMTKmoyDCLDMHsCmlbKNAiBGZJKDSxjKPyWvZplI+s5/6g+s+jcu/hvRbPO+w7fbtw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7377306},"engines":{"node":">=18.x"},"gitHead":"f7a994a59e9d15ab32142ae7c8c7e6266343b117","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-f7a994a-202406120918.0_1718183975202_0.6821759578031494","host":"s3://npm-registry-packages"}},"2.5.1-f7a994a-202406121025.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-f7a994a-202406121025.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-f7a994a-202406121025.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"72e60ccd04813ee417def96ac39b05738f62be16","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-f7a994a-202406121025.0.tgz","fileCount":331,"integrity":"sha512-bDnxFwsULfl1dDe/09D2Ihq1JR58YTuQWa8xYbV8VZTO3la344iGizd7K2NZTfaJoGA3aLQhk2E3nSRzbZ2qSQ==","signatures":[{"sig":"MEUCIHSKCjSQVUI9bfCCccibHe46RUFiGj2mII2lNuAfP/c7AiEAmY2T6RUy2dNyTvW9zpkq/TN9TeoxVspW/fs4AQl8HbY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7377306},"engines":{"node":">=18.x"},"gitHead":"f7a994a59e9d15ab32142ae7c8c7e6266343b117","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-f7a994a-202406121025.0_1718187973356_0.10322889174520578","host":"s3://npm-registry-packages"}},"2.5.1-2abd3a9-202406121035.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-2abd3a9-202406121035.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-2abd3a9-202406121035.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0ab0b4a2a9856c0c65cb9553b70c1df571e42b60","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-2abd3a9-202406121035.0.tgz","fileCount":331,"integrity":"sha512-/kYICIyIEFef8QdMpRTbGn5IGgkjCIBFvVS1gTwAMsRk1vqLpwTrauceE3QmMW60GV8NfIh3leFSw2duz8vaag==","signatures":[{"sig":"MEQCIAN5s4uLUPxb/5JHCb+d3TaHjVoV+hbJMShJfWupUN16AiBHqscaY4OmTsco3XMjzPFo+MVzQkMgElUzCJ89cxiIDg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7377306},"engines":{"node":">=18.x"},"gitHead":"2abd3a98ce8aafd2b1d79ee8ff363f0dc8c59af8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-2abd3a9-202406121035.0_1718188579927_0.228776297724687","host":"s3://npm-registry-packages"}},"2.5.1-69a5827-202406121037.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-69a5827-202406121037.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-69a5827-202406121037.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f549d480775a585a516d9a54c31dc6462d1377b1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-69a5827-202406121037.0.tgz","fileCount":331,"integrity":"sha512-bFYGC4aUAdlgU4O6x227IP7u19VIRz5ggtrd+DDVEKd4JzyVGRcTfp2NqhikWFmb6LtjCC6DHV8mp0A94XKDjQ==","signatures":[{"sig":"MEQCIA99ZUXjsThG/rIHQI1OmQ2f2AlI1qmOuuuXR45cGYmKAiB/XXMpsQrjVIWkIxW4GrlAdZWurEq3EhZLIqvAIPCZTA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7377306},"engines":{"node":">=18.x"},"gitHead":"69a5827aef73721fa894edbe4eb4d471f536f065","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-69a5827-202406121037.0_1718188705403_0.1774382750406318","host":"s3://npm-registry-packages"}},"2.5.1-c11abf5-202406130958.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-c11abf5-202406130958.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-c11abf5-202406130958.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"efb130b7d46e3fae176dbc66b6b10076342cea2e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-c11abf5-202406130958.0.tgz","fileCount":331,"integrity":"sha512-uETTz06q5Nx2Yr5IKV3/lvAcAeTrpNwgJtuVf3/4bUWEv/60SR7dwIxIx3K6t7MUrxht3M45H7tQGX6y1sEUUA==","signatures":[{"sig":"MEUCID447nABbzc1o0ipmdTN17P79GZ7HMqTF3JbGo1ZitR1AiEAysKYNAi/AxlllQCeeXripxDbUbuCB8PsUOk6GaZ3Sfw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7377787},"engines":{"node":">=18.x"},"gitHead":"c11abf553fa87297660a34dcca1d38becb92e95b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-c11abf5-202406130958.0_1718272768339_0.2111215191944218","host":"s3://npm-registry-packages"}},"2.5.1-5c8dc7e-202406131039.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-5c8dc7e-202406131039.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-5c8dc7e-202406131039.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7ee6e5091868b46df3936ee0999630d5bb3afb41","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-5c8dc7e-202406131039.0.tgz","fileCount":331,"integrity":"sha512-OBhhhPgfjxB2VpjRPgbnwo8axUrO7y+k/q1TOO2w2HdHN3t2Kx1/VHOucJtxzOYYZNwo5v3iNiug5EVKqPvjwQ==","signatures":[{"sig":"MEQCIBF0KXqRBbNej5r9JOaM6lJ8QZsCPXiIm44L3nAx7+zSAiBo9fM93w8jWLax5SyDc4ZWIE2fI1ElFvc2cEIZk/6T4w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7377787},"engines":{"node":">=18.x"},"gitHead":"5c8dc7e2e4809b3e13f86ce32fa6dbadd857706b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-5c8dc7e-202406131039.0_1718275262609_0.832964719878956","host":"s3://npm-registry-packages"}},"2.5.1-d3e2602-202406131101.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-d3e2602-202406131101.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-d3e2602-202406131101.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8f2ce3b88bd3b6b57c10be000370ca89238eddcc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-d3e2602-202406131101.0.tgz","fileCount":331,"integrity":"sha512-37SkUfYgHc6lBP16XdnvG7P7eVLMLfmHnkkSlHZ5A1SsMbLNcj0439mZdbDsxCpNnsWHKbCf/I74p5fjnP7FDw==","signatures":[{"sig":"MEQCIBkRWfRh2p5y3K5NxtxiaX9/QYwCPAIbb1/wdFk3UB3zAiAr0yXkARsnnEth68QnHfhNf16BPR3P6GYyHedVwSnmog==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7377787},"engines":{"node":">=18.x"},"gitHead":"d3e26020106ab9a3c61428bd435f4000c06a924a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-d3e2602-202406131101.0_1718276541831_0.6278179454543531","host":"s3://npm-registry-packages"}},"2.5.1-c48ccec-202406140851.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-c48ccec-202406140851.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-c48ccec-202406140851.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b4fdea0749d9bb4ca6705bec421d61cfb11fa66b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-c48ccec-202406140851.0.tgz","fileCount":331,"integrity":"sha512-DcCpYELKaUTXhE6bMoVGVT7RvYPVTP2J4DtEL4TfeNIWBoebWJwY8ZOfODNDG9/q8kH8dxl10W3xVc8CpIuysQ==","signatures":[{"sig":"MEUCIDxBehNKA5FCOfNil+LYBZLEEf/F43/MrgARGv7v6WfkAiEA9R0EZHh/fDn7sXPDtH+e7IS7oVg0bYSdMbH2v4kYdDM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7379835},"engines":{"node":">=18.x"},"gitHead":"c48ccecc2dc91619cb2ee1e6026d64a6ee8c7fbe","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-c48ccec-202406140851.0_1718355160890_0.06491533266846106","host":"s3://npm-registry-packages"}},"2.5.1-c48ccec-202406141028.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-c48ccec-202406141028.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-c48ccec-202406141028.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"646cf833fd650caab4fe55297e041fb183909226","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-c48ccec-202406141028.0.tgz","fileCount":331,"integrity":"sha512-NEYupLJYzV8pmmTwpVwkw7JYGHhVSQ4BzVyqsxkWN+c5vd3laZo3Erq9E9lwrV6VPefn3vElItKUL0DMjyhg+w==","signatures":[{"sig":"MEUCIDMDcl03lvWbIoZDr8Jjkfv9zHFYSmC00Vx1B3KXDj8AAiEAiGECF6IVCnMgB6bIhIENTbYAtxMtb+z+IwUrKuJ28qA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7379835},"engines":{"node":">=18.x"},"gitHead":"c48ccecc2dc91619cb2ee1e6026d64a6ee8c7fbe","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-c48ccec-202406141028.0_1718360978198_0.6607132050465181","host":"s3://npm-registry-packages"}},"2.5.1-c48ccec-202406141044.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-c48ccec-202406141044.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-c48ccec-202406141044.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7f8d843498a87838d576adf20270025048d7a8ce","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-c48ccec-202406141044.0.tgz","fileCount":331,"integrity":"sha512-UhqdlZu0Ovp1jadpRPznvJVFNgSMpECNvzzhH59l6laaK+ni2UNS8+st21nLT3OGNzJCXcbgOXMzabErc33BZw==","signatures":[{"sig":"MEUCIFs+GlYiOpn4DtD3JsvhGURX1ANFBICxV4N4Ksi6J5klAiEAmWJymgu2Ms6y2/xi2qtwrTeA6tracrttwKXOCSG0938=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7379835},"engines":{"node":">=18.x"},"gitHead":"c48ccecc2dc91619cb2ee1e6026d64a6ee8c7fbe","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-c48ccec-202406141044.0_1718361915639_0.7503999796307734","host":"s3://npm-registry-packages"}},"2.5.1-c48ccec-202406141122.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-c48ccec-202406141122.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-c48ccec-202406141122.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"441836b40c54528bf449c2df9fb1f86ece3145da","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-c48ccec-202406141122.0.tgz","fileCount":331,"integrity":"sha512-SJEUcg5OagjwBUj/xD6WR5uTesQ31J6n0KFaB8BrSEldJllXXH4BNNN6hYGIiN9irMShxUORecV4iGQGMQtLvA==","signatures":[{"sig":"MEUCIEumUpfZI1ddY/8VfYYF1nvuqlQ9IcDCspMi3lAq14+BAiEAin9zHlJHXN/L96PewYgZkxa5PI6/d4GO4Jp3yhVsQj8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7379835},"engines":{"node":">=18.x"},"gitHead":"c48ccecc2dc91619cb2ee1e6026d64a6ee8c7fbe","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-c48ccec-202406141122.0_1718364220083_0.8414552687737629","host":"s3://npm-registry-packages"}},"2.5.1-2503798-202406141345.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-2503798-202406141345.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-2503798-202406141345.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f99bc42c0125630b3c8e17f13332cee4d2a4dc61","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-2503798-202406141345.0.tgz","fileCount":331,"integrity":"sha512-givSpY4t1bIoEDvR9mnsog63EQ1Jg2KMRkVaPbvsvpSrW2iVTsjcJPFZfLWJFNMPeeCA/fNfPErqN7v69rfAGQ==","signatures":[{"sig":"MEUCIAg7KXhBmqc45rKr/ZNvS3PJt3DNyPfY1XJ+sn+GsmD8AiEApuC7h4hxAPVmTSJBSqfgz57OTJ7yq8yLxatowEKgBng=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7379879},"engines":{"node":">=18.x"},"gitHead":"2503798bb6dde9f15730e7966e1ad454451bac1a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-2503798-202406141345.0_1718372786019_0.6408138267812471","host":"s3://npm-registry-packages"}},"2.5.1-2503798-202406141348.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-2503798-202406141348.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-2503798-202406141348.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0e2551947819705be0735951da3c774aa8eaf00e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-2503798-202406141348.0.tgz","fileCount":331,"integrity":"sha512-fSSmR+5cGRjZuO8xp3npigFTkFS4OY+uEGE/w5GrNz9fLZ0WBdK1g7HRHSkGvokUWsZ6lgl9x10fGwGbOtrYVw==","signatures":[{"sig":"MEQCIHcglnIllTxladXVhGSNJEtuQvhfu0OR7w2qCI7ZQcN6AiB9R1C+tggSoVqxGgjMqszph+FdvS/uJ4Pcefcby5ijMQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7379879},"engines":{"node":">=18.x"},"gitHead":"2503798bb6dde9f15730e7966e1ad454451bac1a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-2503798-202406141348.0_1718372997766_0.23591424492908297","host":"s3://npm-registry-packages"}},"2.5.1-b9240d1-202406160915.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-b9240d1-202406160915.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-b9240d1-202406160915.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"14d4efe80caffa30febdb14889fb51efa8f0935c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-b9240d1-202406160915.0.tgz","fileCount":331,"integrity":"sha512-K+BlfUAcdjtsojMCUt3Z99Lx8r2sIGMRIfyj7r30OBhRJbqpYN2zusJBNnaWj4QTwGFJsPd5yT5J9/hbr0cUpQ==","signatures":[{"sig":"MEQCIERA+DWSm4yJAjuvks6oTeLv83dMay7GQ6gee74+bVuIAiAK8HXO83PBbzD9w4ONCKGTscM5vsrmCvhFGc2dSzrLgg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7379879},"engines":{"node":">=18.x"},"gitHead":"b9240d174f1c8f8ab4237ac012d38fd3c337fa77","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-b9240d1-202406160915.0_1718529396200_0.7121514126967272","host":"s3://npm-registry-packages"}},"2.5.1-b9240d1-202406161918.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-b9240d1-202406161918.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-b9240d1-202406161918.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ff86957b29beff54990b1aa8cdb89059e50badf1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-b9240d1-202406161918.0.tgz","fileCount":331,"integrity":"sha512-Q9aFEagV/SBP3xK9IiUDUCtQC+xdK55jHHK9job5aAs4PQTGK0uTmNWRyKC/TfMIA2j6fc0DNkcs5FO3Kw3J1w==","signatures":[{"sig":"MEUCIQC71d7a2iVj4fyJtQoQ14zxaHD34rqcujOy7W13VdceGAIgA6C4nma1Gst9oLTUR6XVIlhSLyztpBmV/YB8Fz9FwP0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7379879},"engines":{"node":">=18.x"},"gitHead":"b9240d174f1c8f8ab4237ac012d38fd3c337fa77","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-b9240d1-202406161918.0_1718565565065_0.08930368347911455","host":"s3://npm-registry-packages"}},"2.5.1-b9240d1-202406170824.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-b9240d1-202406170824.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-b9240d1-202406170824.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a3d4abff3ccfbc67fa162d26abadf7ea28bd20a3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-b9240d1-202406170824.0.tgz","fileCount":331,"integrity":"sha512-w+sckhmL27LkSwgLInanPoApHJC7LJ2apTs29K/txCCU8N32XijxEt+UJQSVJZ8t78emS8zfjEsh24PAKXZWCA==","signatures":[{"sig":"MEUCID3+v3dCyXNzh7pDh4jh9DuaBB0uh+f1KmLi2TplwP39AiEAglc27Ch4hWkqlnYpkaXf3BGcJVjS2h0u28tdZc81ojs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7379879},"engines":{"node":">=18.x"},"gitHead":"b9240d174f1c8f8ab4237ac012d38fd3c337fa77","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-b9240d1-202406170824.0_1718612730352_0.8130293035790273","host":"s3://npm-registry-packages"}},"2.5.1-b9240d1-202406170826.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-b9240d1-202406170826.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-b9240d1-202406170826.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"43242db575bffeaf2d53df56674f86c09b3820be","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-b9240d1-202406170826.0.tgz","fileCount":331,"integrity":"sha512-yI4PeHqIPgHx0nUC3/Rg7QThuhu4sDcI/bQX/X9g6+wgLFyyERBEzUuXqGXE9NNqrHRmuGQpHldRCpdx1gOifA==","signatures":[{"sig":"MEQCIEWFQ+xkk9wWvMBVoRy9GI0amI3MkKYH37FSgak6Te8pAiBfCi/NGzHr33neRjxpdPoBSfX4Qs6Cdnu/ghy0xuqSOg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7379879},"engines":{"node":">=18.x"},"gitHead":"b9240d174f1c8f8ab4237ac012d38fd3c337fa77","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-b9240d1-202406170826.0_1718612879028_0.9025831321519981","host":"s3://npm-registry-packages"}},"2.5.1-b9240d1-202406170828.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-b9240d1-202406170828.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-b9240d1-202406170828.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0b9d8f88309b105955ffdcbde22db7f3572cfccc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-b9240d1-202406170828.0.tgz","fileCount":331,"integrity":"sha512-fTPQmR6/Ra5KOKu642bc/K49x5X5KTO4SiPNLATIoWfM3/S66YrATvZYGzKM2bPgE5zlOi2i/Vm4lQrlnKMieQ==","signatures":[{"sig":"MEQCIAvaN0oVB43VKSXCKOwMLaA84oN7NiJ6ETKPyQRLpfgSAiAvB/wWEzfwGDSqm+O29PF89WopbGhx1kFyEKmCAGos6w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7379879},"engines":{"node":">=18.x"},"gitHead":"b9240d174f1c8f8ab4237ac012d38fd3c337fa77","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-b9240d1-202406170828.0_1718612960868_0.5939248232461656","host":"s3://npm-registry-packages"}},"2.5.1-1e18a86-202406170838.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-1e18a86-202406170838.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-1e18a86-202406170838.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"da5453be0972f54fc72c7d3e1b10ace41056d761","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-1e18a86-202406170838.0.tgz","fileCount":331,"integrity":"sha512-9DzqlAv3pOUdEkEvixs1/hBRdL19fUOSUNDdyt03+EPIlhviVOu86DrZtTVHetQlMcsu5J0L8hzBehKZSu3xsw==","signatures":[{"sig":"MEQCIGcB7kIXoP9LTI7Ee+fYpcrJpBarrKjmivHCAE+4Ofn8AiADbmXKkMMhba/oa2kgLfqANJ12fWtYNZJmVQsOisYC+A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7379879},"engines":{"node":">=18.x"},"gitHead":"1e18a86aaab5fc2e568f314af0e7a1f94ac87fc6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-1e18a86-202406170838.0_1718613549339_0.9251053695728544","host":"s3://npm-registry-packages"}},"2.5.1-0e3e0b4-202406180830.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-0e3e0b4-202406180830.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-0e3e0b4-202406180830.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b55d7b5f6f19c36f91a75d152af730db9b129e82","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-0e3e0b4-202406180830.0.tgz","fileCount":331,"integrity":"sha512-n2FpdP7ZIG9Z9M11PJ9CK6eGd8621TKnQVRbIUxQVSUCyFiPBkUEklke90ILOpF4ly1Z8DWjqXNrPqacdQVBIA==","signatures":[{"sig":"MEUCIG5Kgec/sojYYGdZ32CBIfgQNyWsOdXFfZxUs96cYzzDAiEA08Oyf3AMZZSM1DqDoDo+fsE9TrUJvbGMy+ukNo8elrI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7379879},"engines":{"node":">=18.x"},"gitHead":"0e3e0b49a70ab82ca0abcd4a90d8e18fada706b2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-0e3e0b4-202406180830.0_1718699480654_0.918748906063741","host":"s3://npm-registry-packages"}},"2.5.1-0d5e6ec-202406190922.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-0d5e6ec-202406190922.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-0d5e6ec-202406190922.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"54910053eddb791f410fb70a5b6ea665c0b45948","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-0d5e6ec-202406190922.0.tgz","fileCount":331,"integrity":"sha512-1W3k+05Apt8jdAQ8LG0ERGQ7YLS7ea6SfulHeCRQJ+qnUQf6lTINufoGoWpNmG8IkQVwna4XUhBhnBSOGUx7xw==","signatures":[{"sig":"MEUCIQDrXI3n41iNu8zTcWYcfb+Jd2DbpOHFXgR009zxbRIRwAIgSenvFNI3Yv97fmdePycL5X3snA8QFrd2EL9LMp7Nkdc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7379638},"engines":{"node":">=18.x"},"gitHead":"0d5e6ec5e778ffb7aace9e34294787df1421177c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-0d5e6ec-202406190922.0_1718789030423_0.7221165018197031","host":"s3://npm-registry-packages"}},"2.5.1-b47687c-202406190944.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-b47687c-202406190944.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-b47687c-202406190944.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6a74640f9f5e04c2e114a4e3dc1e1689a6baf046","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-b47687c-202406190944.0.tgz","fileCount":331,"integrity":"sha512-Xo14iJOuPvzmCP+qWlixNK86vQLtlQ2593L+kNyb3zQCokXx6QVzBcbOVQRSAjwYQaAjQRdvGw1BcMctOdGjLw==","signatures":[{"sig":"MEQCIEB8qrcNNKsUStPIbdrMrGa41lk0yHTd6MhpoMa2bytpAiAm6A9dxZUppvSckTEHWkhzfsKAk7HqnyfOXPhxbpL4HQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7379661},"engines":{"node":">=18.x"},"gitHead":"b47687c06cc37edd5313e6c1fe1cf2b281ba041f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-b47687c-202406190944.0_1718790348682_0.9527384319388292","host":"s3://npm-registry-packages"}},"2.5.1-a04496a-202406191009.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-a04496a-202406191009.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-a04496a-202406191009.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"366bc7ed5a7737a69f465a2b485c9ab84c9b8eeb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-a04496a-202406191009.0.tgz","fileCount":331,"integrity":"sha512-gvk/yRUhPOhVa+VMfeRa7vC88XiGbi5SARxJONkEWaT1qwv8ronMDxQ+LTOLmy7946Dc28WWaEaXArtfZXc+yA==","signatures":[{"sig":"MEQCIBkp9r7ApjdrUfvKFrXsSKH1JNDCYFuGVYHh17iy8n4gAiBZfxkwnaE7Tibu/KE7jtv2uLEYNS8ftes36VTGij6w8Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7379662},"engines":{"node":">=18.x"},"gitHead":"a04496aff1662cd3965d361975cff3a197f398e1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-a04496a-202406191009.0_1718791834901_0.26471915953967895","host":"s3://npm-registry-packages"}},"2.5.1-f81f4bd-202406191025.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-f81f4bd-202406191025.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-f81f4bd-202406191025.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8c56c61721bdd70928badc5aedf4720fe4836bf0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-f81f4bd-202406191025.0.tgz","fileCount":331,"integrity":"sha512-xhFCMYJZEBGxgUnb0OjOW0ONj3lFv4eefWjxOMdphiwvKYkEFxTqqbjfAUwzPWPvsSYrIbQjiuRD7qwRaAsW2A==","signatures":[{"sig":"MEQCIH3IqEf+DhyEgpdFZQO6OMDD0jD5B1gmkrUe35YWO4hCAiAXpFVATCNvto4U16bUTNB3eVwi0ty9wWQJxx7tCoMINQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7379662},"engines":{"node":">=18.x"},"gitHead":"f81f4bd0db112e21b5a875fc780f2eb597c7eb62","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-f81f4bd-202406191025.0_1718792778527_0.10741985402575738","host":"s3://npm-registry-packages"}},"2.5.1-60e704a-202406200842.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-60e704a-202406200842.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-60e704a-202406200842.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"37c099a3e3c00d6aa96e58239c6b6e79e7411a34","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-60e704a-202406200842.0.tgz","fileCount":331,"integrity":"sha512-5Yg34ATYrvNKfWj3xgGbsvb6DQmhXy2yWrLliv3rUc9dy/LiB/cDvjyfzazgrhZxvRdohANf7m/qKdD7+U8mfw==","signatures":[{"sig":"MEUCIBUVc+/l0kEfS0ijIL/KkIq5ItYY6gUBfoV62jT3gf/oAiEAuxeZXCJs7QG2qb1mqkhsXnHmjfTlAWR+FgPTukACpb4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7389391},"engines":{"node":">=18.x"},"gitHead":"60e704a81f811cd29bd069e21b345f4d4d08c86e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-60e704a-202406200842.0_1718873040372_0.18065325045806113","host":"s3://npm-registry-packages"}},"2.5.1-6fa45cb-202406201015.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-6fa45cb-202406201015.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-6fa45cb-202406201015.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"17928ef907b74dc5af95753ea115885d125d2e41","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-6fa45cb-202406201015.0.tgz","fileCount":331,"integrity":"sha512-q6Zigu9Zf9NkQWcft+nFX4UXv8P9z3eqMPTIILM8VGtoguJE90Zu9whV7HUgh9ZpJPCTJBKz1yzMP19JvuswXA==","signatures":[{"sig":"MEQCIGq9Hsr1ZwCSVGeh8iztCYPnFzEZd/qkQV8pvgcXi/LGAiBJnwe0QUpoWo8xrdRTY/K2B2IXIalywhROYIlefIF9kg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7389603},"engines":{"node":">=18.x"},"gitHead":"6fa45cbe1f993e7140c71ac348e446c44e6814f8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-6fa45cb-202406201015.0_1718878588915_0.9509182948468624","host":"s3://npm-registry-packages"}},"2.5.1-edf11c8-202406201518.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-edf11c8-202406201518.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-edf11c8-202406201518.0","homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a32aa24b7832082d65ec139d19bf04026e0b56bc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-edf11c8-202406201518.0.tgz","fileCount":331,"integrity":"sha512-OxUzOmj/Ev8I4NyWXPWNqBjZX+ZZ1tdLGTd9xy97NJnGA3gZoRjUrzeIZ9C84pGdYpsi6zaYJdoXGEYPU02MGA==","signatures":[{"sig":"MEUCIFJYfihXVfP+BGi5z82iMEsjhCPmqEkLUbg7I/LFCZHDAiEAtOmnEKKTZV/YiGpm94+92eFLdAOapNn5cMvAha5JIwI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7389953},"engines":{"node":">=18.x"},"gitHead":"edf11c8f5a37cdfacdb06b420197810d5c413626","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-edf11c8-202406201518.0_1718896778854_0.861491559017006","host":"s3://npm-registry-packages"}},"2.5.1-f72eeea-202406211004.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-f72eeea-202406211004.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-f72eeea-202406211004.0","homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"85bc75d34f9ac238f28dd01c20bab1fde98f5c68","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-f72eeea-202406211004.0.tgz","fileCount":331,"integrity":"sha512-SNSQCk2tFRntbjTTYPojAZMyrnkdVrP+uMakzZfeqkjnU+TAb6ZiItj5veeRbFjlSRX2MzmD9zjNEjyJuoG+dg==","signatures":[{"sig":"MEQCIDlG7u7IMsGK6NG6q1Qd0FFO0jvvkAkQscZ3OViLc6zOAiAwEzTm1FOI3ACn9OGfLkmUKyfYwFQEeVZ3K2aHtNMr/w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7389953},"engines":{"node":">=18.x"},"gitHead":"f72eeea05af9d4f8a0c4f17f90df3391001245d8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-f72eeea-202406211004.0_1718964318028_0.5986245933343926","host":"s3://npm-registry-packages"}},"2.5.1-f72eeea-202406211039.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-f72eeea-202406211039.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-f72eeea-202406211039.0","homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6033b1e5b8dccc30f479e5d6de957e7571e87394","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-f72eeea-202406211039.0.tgz","fileCount":331,"integrity":"sha512-CbQHAay/nweD4v9N7+AIiXg6AA2nSO4qjPaGb014UE62tc2XvggWoxn7OKAQeUhVa4b96hhry9N8HHkQOic5vg==","signatures":[{"sig":"MEUCIQCpNdFpt9MHrCKwi/JYJHwsCHEBxrYwv1pr1Fg6RuzAKgIge/wmoPm6oU56tqCuNXQBRrhW+dMT1WHz/2ggtZsMA6U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7389953},"engines":{"node":">=18.x"},"gitHead":"f72eeea05af9d4f8a0c4f17f90df3391001245d8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-f72eeea-202406211039.0_1718966437668_0.4814661039250514","host":"s3://npm-registry-packages"}},"2.5.1-94e85f9-202406211417.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-94e85f9-202406211417.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-94e85f9-202406211417.0","homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e49f50a789669bff5d05c42953f43807e70fb3ed","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-94e85f9-202406211417.0.tgz","fileCount":331,"integrity":"sha512-Hw+rRud5y/YSEuBB6NRVPquiUYZW8ae4QDeZlRizBILvmBZoEm1jKfyJ374AVZIYG2vDBq2aNkS/QTVkdG62JQ==","signatures":[{"sig":"MEUCIFOEoyWj2AjrsJ/Gpa2SXxevbMHf9oVRAQJarYf1db3NAiEAoupCY4ST1tCvgerbAzJVeAxUeT5UkNHcHAFjSdc/xsw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7389952},"engines":{"node":">=18.x"},"gitHead":"94e85f948e5964d3390630d2d347d18d418543d7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-94e85f9-202406211417.0_1718979518001_0.2678649293597948","host":"s3://npm-registry-packages"}},"2.5.1-2be10f1-202406211622.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-2be10f1-202406211622.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-2be10f1-202406211622.0","homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b292c3b35205bb642575aaa881d8871d672d2472","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-2be10f1-202406211622.0.tgz","fileCount":331,"integrity":"sha512-aubMy8exagik994A2nCnOef2fC1RS6c5Hlhk9bfVrsnicNdh09vPpU/MyDLjRlXfSa28CQs/ui4sdF6408TmtQ==","signatures":[{"sig":"MEUCIQDmvq7wm0T/VrpcEzwPKpi5s9b6VtXqT85CoH3fx72TjAIgZVAougAKZqIl9Qg4fRYSHniwwog2bh1hjm/E5PV5ep0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7389952},"engines":{"node":">=18.x"},"gitHead":"2be10f1e1902306e94d62c88bd19f0b6b67a016b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-2be10f1-202406211622.0_1718987007816_0.3937545086922578","host":"s3://npm-registry-packages"}},"2.5.1-bfbe907-202406211723.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-bfbe907-202406211723.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-bfbe907-202406211723.0","homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7dcaef2daeeb03d469fcaba739beeb1ddc405a45","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-bfbe907-202406211723.0.tgz","fileCount":331,"integrity":"sha512-2rbelLPQTG27AfanhywiaOTvOX4v2fEiCVt+5+oGIgwZpwpGDp08l/AVmVBIQx/cZj43PY8roKNbfNYfszGUiA==","signatures":[{"sig":"MEUCIQDC5MMzSFXM7bq5/DoPGqUY5mEtMVymScW7VknHZyBc9wIgN8ar4h5cWoxJVwsYmU+XN+ODF8fWIe6CyhLVPzpOP8M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7391113},"engines":{"node":">=18.x"},"gitHead":"bfbe907af2de041a34fde95376ec29962ba9118b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-bfbe907-202406211723.0_1718990653641_0.23272494498714957","host":"s3://npm-registry-packages"}},"2.5.1-bfbe907-202406211725.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-bfbe907-202406211725.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-bfbe907-202406211725.0","homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"82d8f5911d4306da23f8884a70051fdb7e2e5936","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-bfbe907-202406211725.0.tgz","fileCount":331,"integrity":"sha512-pWzjMaxTGymh3yTytFzYHlzmR10u1efdXLKUuSIjkhnm5FobfjUxqYSLJujl0+xatM5qBvqyfelg5B7tZ8fFig==","signatures":[{"sig":"MEYCIQC/RcLyUbakWlbfwfuY81uBladehJl4//XGRvTGysjhIQIhAJakqehQ6sv8hn4+Vi/Y4OQd7Q4cgsX9JYsbFAgPWH2n","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7391113},"engines":{"node":">=18.x"},"gitHead":"bfbe907af2de041a34fde95376ec29962ba9118b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-bfbe907-202406211725.0_1718990768695_0.3868135549641041","host":"s3://npm-registry-packages"}},"2.5.1-a0ea7f0-202406231824.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-a0ea7f0-202406231824.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-a0ea7f0-202406231824.0","homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"539499de09812408def1be462dbe2156ebff4e5a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-a0ea7f0-202406231824.0.tgz","fileCount":331,"integrity":"sha512-D+Jbi5JmJDNdm/UNyB6K70ftxyznncry926XpgKb3zsL1L1AIRoyp3V4g+jLF9hZg1wHIEfJvqo2zuY9x/CKWQ==","signatures":[{"sig":"MEUCIGwzHqAs6OEoHXrruRGqxVHCdGCaNX84whA8P4eAhZSoAiEAwi5S8YpS4jGmATlvG3Zz5rav7aBcG2HU3Bb3DFkueyQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7391113},"engines":{"node":">=18.x"},"gitHead":"a0ea7f06dc6f40d2e0813ac6d293aa8311d13679","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-a0ea7f0-202406231824.0_1719167141665_0.7342837742659718","host":"s3://npm-registry-packages"}},"2.5.1-9454799-202406261347.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-9454799-202406261347.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-9454799-202406261347.0","homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"af351707d3690d9ce7a3478a51c22c8a0ab25a3b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-9454799-202406261347.0.tgz","fileCount":331,"integrity":"sha512-n7v8LEcr0nCuFZeku8aorLW9/UFp+iFH6GqSJjZ4P6SzkF5FhRy5NQaHUXfoejj5IM7v2l6v9Dcr3AAW8KTiUg==","signatures":[{"sig":"MEQCIB7ds2L6qthpg+a2ECmiGzmVNK2D0Xr7R47AYvok/VtLAiAl7c2fLK3X/+XU1nPPuHZUMK1Y8DBqASiiRkwIzo3TVA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7395255},"engines":{"node":">=18.x"},"gitHead":"94547991930c6f90896565e6dcf8a9506a43a356","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-9454799-202406261347.0_1719409699582_0.05225361542380891","host":"s3://npm-registry-packages"}},"2.5.1-df2b0f1-202406280804.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-df2b0f1-202406280804.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-df2b0f1-202406280804.0","homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8a129fcab4f4dc44c7f3d0f63914d251ce1ee4e6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-df2b0f1-202406280804.0.tgz","fileCount":331,"integrity":"sha512-zoHFV3MB0e3+cbvgMfz/41bzMcKoFvykUzzh9CK9ZcOETlvhpxdrw9paeCWYgjktOxl+5xfIDuT0oy30nplBIg==","signatures":[{"sig":"MEUCIHOc8HsI2eTb6gCgpTwzWmUYAHMO6lMwZIMXQqm6CGBSAiEA2F5gbr7wq+H7Ge1MVHjPpXduGHssEU5kVXhYMFGtfqs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7402029},"engines":{"node":">=18.x"},"gitHead":"df2b0f18e80d79e5568cee086d0cd66e7781e080","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-df2b0f1-202406280804.0_1719561911647_0.4560954887089401","host":"s3://npm-registry-packages"}},"2.5.1-df2b0f1-202406280842.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-df2b0f1-202406280842.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-df2b0f1-202406280842.0","homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5a7cd8042db5978c63844bdacc8c949bfb5dc9c0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-df2b0f1-202406280842.0.tgz","fileCount":331,"integrity":"sha512-5a4o0iee4VHmHN/tXMbf3OkHogBCDAJoO/hgNQod2xoRh/CqgGdiSXyP/dTQ2dJYqvseu/PuMv1JfqWhsz/X9A==","signatures":[{"sig":"MEQCIFuJVlKdePoINIwlJga7vwvW8KcDvEMW2WY6geuJ0ErTAiBsL4beeYIzRSvO6IPTLia/mOb3ec69kqZB9uFbvFuqqg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7402029},"engines":{"node":">=18.x"},"gitHead":"df2b0f18e80d79e5568cee086d0cd66e7781e080","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-df2b0f1-202406280842.0_1719564229684_0.498973769883023","host":"s3://npm-registry-packages"}},"2.5.1-4e56144-202406281047.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-4e56144-202406281047.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-4e56144-202406281047.0","homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"96dc414fd9b66bf7ddc3f9e9aec16c7e1d27c86b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-4e56144-202406281047.0.tgz","fileCount":331,"integrity":"sha512-4kG2lFd1v9z1AWhkhL78kOKp0GUBx5MbUPxShLwsHhPIuDZgX0Vc8JkxCz9mApkiuQ8u6rmkjk8h/IGMFtSdsQ==","signatures":[{"sig":"MEUCIQCVqOixq0aT91V3BuP2sh76umTijEiNhtLGzbv7Mo/6NAIgECVbSbGK5NduwWzrYVM4bK1ItVxqDOJUuQbFhHV27dk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7402062},"engines":{"node":">=18.x"},"gitHead":"4e56144641a0f97dc6a7f6b3a09c5281fb6b5219","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-4e56144-202406281047.0_1719571701706_0.3507385326590504","host":"s3://npm-registry-packages"}},"2.5.1-357ecd6-202406281502.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-357ecd6-202406281502.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-357ecd6-202406281502.0","homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5786b225ab12ffc96f044d6cd9007848520db821","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-357ecd6-202406281502.0.tgz","fileCount":331,"integrity":"sha512-W5iqhnFBmkbVPWsZz/0e+p7MFkvIhZTgQfI0NPDIv09kQ/FtF4P0bRZXTCrwLuhxI4OyZxPW2dLZOwbI3qlLUw==","signatures":[{"sig":"MEYCIQCvG2YxImDcDJI2NksSnGRNPWvM57y4z3z0ENqinZdacgIhANM+pY+Jr9/M0F1sbbLzk/o+s/uAeHOFicNmVljhVbKZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7404562},"engines":{"node":">=18.x"},"gitHead":"357ecd6c1a33ca1fd1850447d9e280905f4cf770","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-357ecd6-202406281502.0_1719587026758_0.15208328922394143","host":"s3://npm-registry-packages"}},"2.5.1-dfc4e5a-202407010909.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-dfc4e5a-202407010909.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-dfc4e5a-202407010909.0","homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ffc005eda49cb34a0f7ecbc52afadad8d0fe7759","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-dfc4e5a-202407010909.0.tgz","fileCount":331,"integrity":"sha512-iCcFun1fTWeBNiaKakw8bAQ4F6CqESiKwtimZfF2U2TwaeUkos10Oqr7kU2V11l+aN0QcPGzReWGO/wikGzjgg==","signatures":[{"sig":"MEQCIDmGWHrwGuqupcM3AYwFWUdDDckpLVJrtqtf+awheERcAiANFpI+a0szr2I5GVgjLM9pE/rGwYZ9UOgusUl65l37eQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7404566},"engines":{"node":">=18.x"},"gitHead":"dfc4e5ac23a564f5397a26e74b7b3da034225168","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-dfc4e5a-202407010909.0_1719825027870_0.9510309102147683","host":"s3://npm-registry-packages"}},"2.5.1-42e8c15-202407011226.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-42e8c15-202407011226.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-42e8c15-202407011226.0","homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bdb3cf729af35d3d779b080689d753c3b0712c80","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-42e8c15-202407011226.0.tgz","fileCount":331,"integrity":"sha512-s3TMt4he+KgzZeVqwsa0xxHV65TMayy/UxhMqyM+V742G4C2s2mkhQDaVynAm0UI+vgmliww2oO6oab8Cic4VA==","signatures":[{"sig":"MEYCIQC8tNH9PjTTLgzKyfr3t2r18LHZImkAWthqY+v1cBDhcQIhANHw5Vl8QiYLb4IxRI9WJNeH4rYirZ8JFl2sMjb0UEzp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7404566},"engines":{"node":">=18.x"},"gitHead":"42e8c156ff259a9e42803b9965aff4af57244396","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-42e8c15-202407011226.0_1719836849240_0.785677614695055","host":"s3://npm-registry-packages"}},"2.5.1-42e8c15-202407020856.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-42e8c15-202407020856.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-42e8c15-202407020856.0","homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6b72e388c6f154a534fb4d0217df0cde324e04dd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-42e8c15-202407020856.0.tgz","fileCount":331,"integrity":"sha512-JYMD83qTUo0feLA2LXQeVUVXgL+PoSxqq94gQW5E2rMthZh2koQdJRvd9N08zq6XJg9OfmDmxufijnF9ofq22A==","signatures":[{"sig":"MEUCIQCbGl5QihWXM5En7dID5+5AvY3m6nANpXFEjrs/l2J2bQIgK6ELqBtPjr3a4IJngotfr+M1+RNwnkdv4L0tMsQ44qI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7404566},"engines":{"node":">=18.x"},"gitHead":"42e8c156ff259a9e42803b9965aff4af57244396","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-42e8c15-202407020856.0_1719910667451_0.03713814260356707","host":"s3://npm-registry-packages"}},"2.5.1-c03fe4f-202407030954.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-c03fe4f-202407030954.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-c03fe4f-202407030954.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0bfa0cde74dc50e953784123e3f4d13f90ae2125","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-c03fe4f-202407030954.0.tgz","fileCount":331,"integrity":"sha512-R+4S4X2vzW8JS8k8BcRNo01OcYkw24bgW7wiw2lrtDrdXt0/wnNBBr3vH2eMzEC+dWB5mXVzqVOC4R7ytWtyuA==","signatures":[{"sig":"MEUCIFVqJuC9BzqhSnIvaNKcq8xdlKtoyTrECMnmXYeCJcbWAiEAiFLWXjeQXpZ8Njl+YBk9uHcyYrH/YypYsBnQtxv429Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7421468},"engines":{"node":">=18.x"},"gitHead":"c03fe4f05d54303f4046563c38693dc3948050fd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-c03fe4f-202407030954.0_1720000521318_0.9130284920865004","host":"s3://npm-registry-packages"}},"2.5.1-c03fe4f-202407030959.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-c03fe4f-202407030959.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-c03fe4f-202407030959.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d666dda1f48ca6a9913ac92a1d5dd35965963a48","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-c03fe4f-202407030959.0.tgz","fileCount":331,"integrity":"sha512-xaNhoFPblP4BI5jAwGuI/P0c27cKY8dxEb7J/Dx+yfDqs8Ub79OgurjjsXzSQwg4WISrf4I6UJd1DcLEGiv2Xw==","signatures":[{"sig":"MEUCIQDAti2cptCDRwdvDPEivyC4feClLWVdQInkoK7UIyR1AQIgUPQUzM5bOS2escbX4WjL5XoBYGdsFx3PVvY1irxeeA4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7421468},"engines":{"node":">=18.x"},"gitHead":"c03fe4f05d54303f4046563c38693dc3948050fd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-c03fe4f-202407030959.0_1720000845437_0.9867774756501111","host":"s3://npm-registry-packages"}},"2.5.1-72923d8-202407031217.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-72923d8-202407031217.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-72923d8-202407031217.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b9b5a2166aaecdc25bf317fed3352ee7068e1f22","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-72923d8-202407031217.0.tgz","fileCount":331,"integrity":"sha512-DWFNCFMrVhPQT17h7D8em6JffhLsU4D7eX7Ry6cS/FulLCR6s1LJ8dROyStlWmT9uvqGOXAilwDbICSueT5EVQ==","signatures":[{"sig":"MEUCIQDqKFCqDPBI7OGczfQ32Zp6kujLiznnmioJZCO1Yy1zFgIgLgr00TTAOlqn5VTtCV26TVOvj3GhXNBDIXp2Iiu6gtw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7418548},"engines":{"node":">=18.x"},"gitHead":"72923d88515d581ba4238daf40575f50b66f0f54","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-72923d8-202407031217.0_1720009096918_0.7166737002866392","host":"s3://npm-registry-packages"}},"2.5.1-2ee732c-202407031235.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-2ee732c-202407031235.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-2ee732c-202407031235.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bd764ae9acb77681b59a25d855515aab631ffa47","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-2ee732c-202407031235.0.tgz","fileCount":332,"integrity":"sha512-oCaRe3bmh9ls0y168qITQgQ/QaQiI+8t8Iiw/SqSZJLRFil36PKTY2h2vx9+QNruJIO+iIu6S3Q9sunKTnWrMA==","signatures":[{"sig":"MEUCIFd05fqTJaBc6iq7xJ84LsqBMR3PeLWlS0nTfNXcO1D6AiEA+Xw7rbT5pKKm3VYHBKt3TQTQrr0x4c2ma0bCADS4FPc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7422132},"engines":{"node":">=18.x"},"gitHead":"2ee732ca0e292d39f8b3baf6aa05f06c066b6bd3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-2ee732c-202407031235.0_1720010203974_0.4958843548689298","host":"s3://npm-registry-packages"}},"2.5.1-7afa1eb-202407031419.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-7afa1eb-202407031419.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-7afa1eb-202407031419.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4050623700f0aab9b6745b266ef85bf74856a8fd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-7afa1eb-202407031419.0.tgz","fileCount":332,"integrity":"sha512-8NJU+K+6Gx3unJKXN/NxTSU4ecdumYYGX5mFT41x0WLGgvqLmHuoMCbhEy3peZ8+kkTARZyRhP55QHNYJabMLw==","signatures":[{"sig":"MEUCIFOCOPkGFA9PGv7jrfYnwWZC2wQUM//5l18R55hOpAJMAiEAnVFlQ1K+g6EABQbIhtF5CJpP2W/KXExihLJa85hie80=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7422133},"engines":{"node":">=18.x"},"gitHead":"7afa1eb80144862fd367584a2f80d4c2c72db971","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-7afa1eb-202407031419.0_1720016474460_0.6417952792354602","host":"s3://npm-registry-packages"}},"2.5.1-b4a2b6e-202407031534.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-b4a2b6e-202407031534.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-b4a2b6e-202407031534.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"261b41f72edbf479e291b002f41ac4916b00a007","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-b4a2b6e-202407031534.0.tgz","fileCount":332,"integrity":"sha512-J9yOaCijASRuGFiPDSgs31pSCcsaq/FNGaQdCWa6n3+LcrPPL5kj9Ohkq3zyYCcDC0goImDH6qFgs9ERjRtJmA==","signatures":[{"sig":"MEYCIQDn/CzqXSQatVSdrtO4BkRqRGnFOJYGzFYtudQzcGAaMQIhAJSpY5wES/hJo2TesrQhjIoBLL+eLV0np0QmUAyCExge","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7423602},"engines":{"node":">=18.x"},"gitHead":"b4a2b6eeb70ecb13827083afbfb1c654dc20becb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-b4a2b6e-202407031534.0_1720020927619_0.4713108066283367","host":"s3://npm-registry-packages"}},"2.5.1-698d94c-202407031546.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-698d94c-202407031546.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-698d94c-202407031546.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a94d718dba2f38f56978074bc08da09bbdf61703","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-698d94c-202407031546.0.tgz","fileCount":332,"integrity":"sha512-iDt0F5ewdypZOuzJeUzgX1fhQAKP0Jci1qtI9pLH7aOiOV3g9MZ1PrndfhcfK1m5JHDZu2EaNNSpH9IBmSp89A==","signatures":[{"sig":"MEUCIQCguG6kju0JSqXHJhKKYhN+b9N3+BnCMeR22P/2aujMZAIgHkY4eBb/8kIhbVFn6EHl/I8M9q0R1lqkPHAAXyMwezA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7423648},"engines":{"node":">=18.x"},"gitHead":"698d94c5c00403239df257ae748905b661a0de24","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-698d94c-202407031546.0_1720021660896_0.4802854022789309","host":"s3://npm-registry-packages"}},"2.5.1-698d94c-202407031613.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-698d94c-202407031613.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-698d94c-202407031613.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"75bd44267e0ad9e992c4fc5565d5ec0ac5fa106e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-698d94c-202407031613.0.tgz","fileCount":332,"integrity":"sha512-+NziXoZFfalG9Jl7qMzrQWVYgZ11+PfWM7fBkINV0unkaucNHeCniL89wKllKG15Wf6Kz8JhEYpE9zDEZckj2Q==","signatures":[{"sig":"MEUCIEBjTu4l8gyguzB7CkYKQtZNV8lsR7HJWSoa2+LAAFHeAiEAojkjgrHqxFNgRVQ3DplqwDDgaq4BUzcIFT7ULo98Tfc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7423648},"engines":{"node":">=18.x"},"gitHead":"698d94c5c00403239df257ae748905b661a0de24","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-698d94c-202407031613.0_1720023291160_0.28731672640794415","host":"s3://npm-registry-packages"}},"2.5.1-698d94c-202407031620.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-698d94c-202407031620.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-698d94c-202407031620.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ad6f994cc07540a2d7ebbcf2690bbadc3dc89b47","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-698d94c-202407031620.0.tgz","fileCount":332,"integrity":"sha512-yjPfy8CEm74DGRVrsQYM6k7Nq9r9I2BJUAs8oGzItzhpJCUVgiZJk8sta2BuS5eIYAVQkygMmqmzvkigB71vUA==","signatures":[{"sig":"MEUCIDVas7p02C0px1ScS95a/S6avLCRNLS5vM1aUrwkC12VAiEAilpn8GvOlKB64MTS9hJILxyWU+UOtoluXiNm8uneRhc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7423648},"engines":{"node":">=18.x"},"gitHead":"698d94c5c00403239df257ae748905b661a0de24","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-698d94c-202407031620.0_1720023707939_0.3728695315256676","host":"s3://npm-registry-packages"}},"2.5.1-a59a144-202407031654.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-a59a144-202407031654.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-a59a144-202407031654.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ecc5202c7abccf159fb1d77cc86be16d9234170a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-a59a144-202407031654.0.tgz","fileCount":332,"integrity":"sha512-EpHxBspmQY8OzhhFwV5P8sN29jHe72edTSJ4jV5e73Ui/9BuQCFqQP0ntnNJiaHElVPGYcj1Bs6JBCcxUymjBg==","signatures":[{"sig":"MEUCIQCAmuKV1peu5g5wkYroOOj9ipL+snF0g5ZNSR44xBEv3wIgRkKJUAsArnQfsJ1MtgEQDwILFDcJsNSrn8RanfI9J78=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7448842},"engines":{"node":">=18.x"},"gitHead":"a59a144f045190081d92960fc6f47882b905e9f7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-a59a144-202407031654.0_1720025725025_0.37996297434562276","host":"s3://npm-registry-packages"}},"2.5.1-a59a144-202407040814.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-a59a144-202407040814.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-a59a144-202407040814.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"94b7902d1d0668ae48ad31028df46438f81dc010","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-a59a144-202407040814.0.tgz","fileCount":332,"integrity":"sha512-Styb4OjWKeJgNpC92ag2M/KILyedamN9xCK9RJTwRXhcNm4Nmq/2tKgsgtH11QyRZsX8ixC5wLfIb363loclog==","signatures":[{"sig":"MEUCIQDXfAWwm9f5hB7ndiL6oOjFCqNqdwYxiae2EUQG8ponaQIgKBE8mL/iba4fz8+O0yGNp2LTr1XHdkOymMg2S8UuqCg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7448842},"engines":{"node":">=18.x"},"gitHead":"a59a144f045190081d92960fc6f47882b905e9f7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-a59a144-202407040814.0_1720080971652_0.5969621537418399","host":"s3://npm-registry-packages"}},"2.5.1-c462ac1-202407040849.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-c462ac1-202407040849.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-c462ac1-202407040849.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"59efc6c343c59663cf3addb418b6807fbf863a61","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-c462ac1-202407040849.0.tgz","fileCount":332,"integrity":"sha512-BX3pnLFmd8812L7xQbXowAELQPdggTRdYDLboiPvYK/ZhCDKnsW9bdjq8zCsMY6342T1xPkUKj//yaJC04vkZw==","signatures":[{"sig":"MEUCIQCOcIHUr41x76QwC2Oa8vmu9mAp6QXjSBLk22P1zV9CgAIgbUUjWWRaABMeYJTBVA+DpjYEb0s1rrOFJZ/oDlIl5kA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7449052},"engines":{"node":">=18.x"},"gitHead":"c462ac1bc627a32e61266a9a9b031bf94f53ab16","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-c462ac1-202407040849.0_1720083044761_0.3213483416552749","host":"s3://npm-registry-packages"}},"2.5.1-c462ac1-202407040908.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-c462ac1-202407040908.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-c462ac1-202407040908.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"47bd48bd457322e1c14799c68ba9e7d52b7a48d6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-c462ac1-202407040908.0.tgz","fileCount":332,"integrity":"sha512-hsQY1ttma0ZXh6GZY7RsyXXaLtDcpK1kzbj+8T0iZ0ycHbwz5nZRj2DobsNh3aRqCIrdM7sDbRnKDHOhn9G4iQ==","signatures":[{"sig":"MEUCIDr4OPz9i4uMiJc21//QH973tLULIVifjZUx34xa007EAiEAplLf3PD6sC4+A4k2i9HXYkF1ppOPJzT2aaiF037UhoM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7449052},"engines":{"node":">=18.x"},"gitHead":"c462ac1bc627a32e61266a9a9b031bf94f53ab16","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-c462ac1-202407040908.0_1720084196401_0.1614512814040523","host":"s3://npm-registry-packages"}},"2.5.1-e86adb9-202407041014.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-e86adb9-202407041014.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-e86adb9-202407041014.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"49b3ba4105f39d479799ff1968277dfb33e5919e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-e86adb9-202407041014.0.tgz","fileCount":332,"integrity":"sha512-xlId0bT5LnhKqOVAIoQrA78Tu8xvHQk7Yrge7Rb0KzIzsF+pWUdGNlJ4sf+aR/f3+4jrpzeOc8BlgjIIUi1rVg==","signatures":[{"sig":"MEUCIQDorV26A8l9TwYvIxs3EQRuhtxOIYu/oQxqg4sAtPpuwgIgdIPlYc/LAbKJO1RTCyEnGMw9qUwrPiQKSio66tDbTzA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7449054},"engines":{"node":">=18.x"},"gitHead":"e86adb9f9ff3d2fc5386302029e4452926e48c8f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-e86adb9-202407041014.0_1720088116518_0.20032045690711642","host":"s3://npm-registry-packages"}},"2.5.1-e86adb9-202407041024.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-e86adb9-202407041024.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-e86adb9-202407041024.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"17beb2b4aa649725c3713486d896596b9d1f2ac5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-e86adb9-202407041024.0.tgz","fileCount":332,"integrity":"sha512-ehQdJ8bfb0Yl9LD+LHrE9lca2jdiZTbqOFbyQ8YkqOZtDzeY5W26RZ16ENqpdLVfhYdvHonC2+SKLXTRkM+EAg==","signatures":[{"sig":"MEYCIQCOZLY0OJWzeVOiHzz8IHUV0SKZr0XysNQmHg6pMEwOywIhAPV+asRn/mwQMd7ALq0A/RM0ElEesSZ3tcwVFPJlX3eQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7449054},"engines":{"node":">=18.x"},"gitHead":"e86adb9f9ff3d2fc5386302029e4452926e48c8f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-e86adb9-202407041024.0_1720088760491_0.6002885581840978","host":"s3://npm-registry-packages"}},"2.5.1-e86adb9-202407041026.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-e86adb9-202407041026.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-e86adb9-202407041026.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8620b2e02ed3edecd21e27996fdc26163afdace6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-e86adb9-202407041026.0.tgz","fileCount":332,"integrity":"sha512-SsenLgZKmzI8968FumZBpyDAjeU0SNywxeWuNnHbCq4iPcQjVIDcmZw8urFEBYghsc9xZk0i9QHllCFmVzXCwA==","signatures":[{"sig":"MEYCIQCOOZ+4E0pFpE1k7AbhtqtXNvSz0tnzqzN1mRW3d6sUtAIhAIyi6rPaVr2IkcPtNOZDu4mu3LCdh9iB+xW/mC1sgeEM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7449054},"engines":{"node":">=18.x"},"gitHead":"e86adb9f9ff3d2fc5386302029e4452926e48c8f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-e86adb9-202407041026.0_1720088883907_0.6418582979327372","host":"s3://npm-registry-packages"}},"2.5.1-76812fb-202407041257.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-76812fb-202407041257.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-76812fb-202407041257.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5b644eb56473e323b1f92d11bf48ffbb0db75150","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-76812fb-202407041257.0.tgz","fileCount":332,"integrity":"sha512-u+4d1orfgslRVAA7lactDOu6nphnIYSgNJJliz9SvCcseKOnn6JDVk1elITkqolD+BBBkgKQllPqIBU+qWlMnQ==","signatures":[{"sig":"MEYCIQCiXxNsJ8rocQh7WAMj0x3PNQ3cwweYa9JO/goDwPiDQAIhAOjlwmA907dCLN+5iJvp4tfl+DQpWkbrTOOV7Vx/7chH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7450302},"engines":{"node":">=18.x"},"gitHead":"76812fb58c1962b3e389c2a12609be9f68837885","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-76812fb-202407041257.0_1720097943341_0.7081680500896825","host":"s3://npm-registry-packages"}},"2.5.1-deaed55-202407041302.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-deaed55-202407041302.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-deaed55-202407041302.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b252c5173e06cf92fec5655b247eba54bdeb7941","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-deaed55-202407041302.0.tgz","fileCount":332,"integrity":"sha512-/MJUTNo/MSM9O/HLy44jRFsG0OTVrEPsTggRQs2kgMmDTYK/BzIXeiBEEEoRCJT+V6Tskk8qhWjbTHYvcB1XGw==","signatures":[{"sig":"MEUCIQDcxJS4+ZfHviJN6MZwQQR1LskFzBuXezffpr1SSr7uAQIgasDkzh+I7UwYdRSBpGgoS/5mXIPsIk/t3XIcfhHk51E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7450302},"engines":{"node":">=18.x"},"gitHead":"deaed5578431f8589ddc1970a0c5cfdc91bf7e54","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-deaed55-202407041302.0_1720098205005_0.09799183846673243","host":"s3://npm-registry-packages"}},"2.5.1-deaed55-202407041305.0":{"name":"@flowfuse/flowfuse","version":"2.5.1-deaed55-202407041305.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.5.1-deaed55-202407041305.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"695733707a1af19cf028874cdc9e0b9ebf3a8c32","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.5.1-deaed55-202407041305.0.tgz","fileCount":332,"integrity":"sha512-HLzUU02JiWSDhF/eLmmzFu/ejkgYRoXG85azwuM1/sS+yq5dLwGfNy8Gck3EL0WdzLMX+5X0HYz+T5TaWK/ZGQ==","signatures":[{"sig":"MEUCIAcc8xZCdPdTeYnX96RSDEEh3OIaHOIeEZtdYM3qSZceAiEA0lX0X5GUfu0Lt3Wy0hQoX9bI9lFBSV4EAp+osj9MRR0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7450302},"engines":{"node":">=18.x"},"gitHead":"deaed5578431f8589ddc1970a0c5cfdc91bf7e54","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.5.1-deaed55-202407041305.0_1720098375162_0.7121789671897929","host":"s3://npm-registry-packages"}},"2.6.0":{"name":"@flowfuse/flowfuse","version":"2.6.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8edb1957d4a49da0915942b9332ae1c7ef700d2e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.0.tgz","fileCount":330,"integrity":"sha512-WpzN4ZosZF0ViIU4eF2F1PzAssdSqtQjou3360NF1NsTDa5IhJRjFe/8wzUc5/VrAiIMmVv35rEb6dxIx9e8Ow==","signatures":[{"sig":"MEQCIArM25RIx88LuHNiKQOyw83r2txTz3hFgOxZxjNko5+yAiAiJIn/0/b+oDGHjSD76ZR84ioPxltdb62f7+DprO1J6Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7446094},"engines":{"node":">=18.x"},"gitHead":"f8ced67b60e5a569164f9191a32d6063c76b2eb7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.6.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.0_1720098500249_0.7447862801557077","host":"s3://npm-registry-packages"}},"2.6.1-f8ced67-202407041315.0":{"name":"@flowfuse/flowfuse","version":"2.6.1-f8ced67-202407041315.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.1-f8ced67-202407041315.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2b2ec32fd91c8c2dc6110f605be9851b63e6fe5f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.1-f8ced67-202407041315.0.tgz","fileCount":332,"integrity":"sha512-HB83EB/qxhsHZtaC0jE1LbKmSMVluabnFoDkcH4bEP8a9QrVkenx28Yx+yGODc5DVQOLrOr1plx2dXDq4Q2sbg==","signatures":[{"sig":"MEUCIDvRp/Rz0j1X1dViJ6NKXVofFJWQrQGUIF3FRyqsPjcaAiEAoqLIh+LWibPyrcss3ReTwRhsww77YRVmNrHc0D4rMro=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7453748},"engines":{"node":">=18.x"},"gitHead":"f8ced67b60e5a569164f9191a32d6063c76b2eb7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.1-f8ced67-202407041315.0_1720099014524_0.353914895110091","host":"s3://npm-registry-packages"}},"2.6.1-6ce260b-202407051018.0":{"name":"@flowfuse/flowfuse","version":"2.6.1-6ce260b-202407051018.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.1-6ce260b-202407051018.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b5c637d1103e6ee8eee371882c73390bd4ecf4ae","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.1-6ce260b-202407051018.0.tgz","fileCount":332,"integrity":"sha512-PEM8M5t4ILVX5ncNf//FCYqcnTAWRa+O6s4L1CGXpsM3C+XIQ00uMQY50Rj7ROaaPSvSAs4dU/uRqrPalsAI2Q==","signatures":[{"sig":"MEYCIQDO7tunfBE7AKFhsW/bx7jLKJ1OHS6DbFcmzE92szooRwIhAKfYj8QSex6ujhl4XJt/lZXfmK6+n2yH3sXbLXMzQ/+d","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7454400},"engines":{"node":">=18.x"},"gitHead":"6ce260b7c299e2786b54601f24eb8ff3dd5d0b1c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.1-6ce260b-202407051018.0_1720174803315_0.42470549007440894","host":"s3://npm-registry-packages"}},"2.6.1-3cca0bf-202407051241.0":{"name":"@flowfuse/flowfuse","version":"2.6.1-3cca0bf-202407051241.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.1-3cca0bf-202407051241.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6ea23aded81eb40ed841859b1d87d08328b4d868","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.1-3cca0bf-202407051241.0.tgz","fileCount":333,"integrity":"sha512-DEGlLAYuaAEkcvTDgDM7+kvHHhMTCdO7J5jN+l3YjCYZUQmKZ2UDnrMQElCO0SXrb1dncE6eUdwHphsY5EnQEg==","signatures":[{"sig":"MEYCIQC0mjoQG0qIx7sJoStjlr2oVIBKPF9LR2MHSscmnPQL5gIhALpKJ4DuMuGiYA+VwU5jmiRRrtYUjoP6Ej5OWYzectYM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7463154},"engines":{"node":">=18.x"},"gitHead":"3cca0bf1004e7b2ab7d84c9b96bbe9d3b41e8df5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.1-3cca0bf-202407051241.0_1720183348851_0.9140292289413452","host":"s3://npm-registry-packages"}},"2.6.1-4c9b55e-202407051400.0":{"name":"@flowfuse/flowfuse","version":"2.6.1-4c9b55e-202407051400.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.1-4c9b55e-202407051400.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0c82d422085880cabd3eea3c2e1a7fa3bdda6375","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.1-4c9b55e-202407051400.0.tgz","fileCount":333,"integrity":"sha512-1Z4stM6vM1Xq0H1bBL1bAnt7517V6VQtSXBVEGcdR01nf4Z/jYvmVkw+gHI4zx+be/Ype+IBNfJt+F+VJ48LVQ==","signatures":[{"sig":"MEQCIE3ZodLqHKkxu4dZhCyXcJ06CqOj1RuBHTGjQha3Wmc+AiBt45PYafYXZ8Zqyk52q/6Na4iDW2sAiikOSrc5LDhl7Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7464400},"engines":{"node":">=18.x"},"gitHead":"4c9b55e9dcfd37ddfe5b34401ff29dc3bd82480e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.1-4c9b55e-202407051400.0_1720188109835_0.31196598897295913","host":"s3://npm-registry-packages"}},"2.6.1-1e8ce36-202407051601.0":{"name":"@flowfuse/flowfuse","version":"2.6.1-1e8ce36-202407051601.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.1-1e8ce36-202407051601.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a389a66b548eb5f29920318470276740bde699be","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.1-1e8ce36-202407051601.0.tgz","fileCount":333,"integrity":"sha512-QOyT+CNRrTv4yk8P2C/zdkOyfPgjWmPUAYt+/BM7a2HTwpdbgLaLuZthn6pyiECfgf6eMz0UCPUA2IwUqWEFoQ==","signatures":[{"sig":"MEUCIQCM6WyStP9+qB/tFbPKC7YIT4cajm3gO5Tg/BK2R7RgxQIgPDi+KWIF8qvJj7V4sUX33fV7n0voE0Ifv+mE3ec1clA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7464076},"engines":{"node":">=18.x"},"gitHead":"1e8ce3601128a3701ce08fc21228e3d1ffebe77b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.1-1e8ce36-202407051601.0_1720195387720_0.5515111749950317","host":"s3://npm-registry-packages"}},"2.6.1-fe1a77e-202407060752.0":{"name":"@flowfuse/flowfuse","version":"2.6.1-fe1a77e-202407060752.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.1-fe1a77e-202407060752.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e38539b490bef9552c75b28dbc1908aa4aaa676d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.1-fe1a77e-202407060752.0.tgz","fileCount":333,"integrity":"sha512-LRuKDXdh545s3Tuj3ChtiCE2DdgTdeu7nKlBDtkci/uZjTKQNKD8w10OtYPcSgwy/m8j6EEe/x4EoJ1JXqIAug==","signatures":[{"sig":"MEQCIBRePxpQmftbBA7PU8c+idNEd55zCK6Je0bHqpphROL0AiB1yCVPk/obIN5GpnpfDIUxerDuTtGiYRR40BBEu1teAA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7464076},"engines":{"node":">=18.x"},"gitHead":"fe1a77efcea43df9f4caf8665e5e49f2073f49fd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.1-fe1a77e-202407060752.0_1720252430452_0.14597121578183403","host":"s3://npm-registry-packages"}},"2.6.1":{"name":"@flowfuse/flowfuse","version":"2.6.1","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.1","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"072145cfd2dc584201759d0f878eac7cf2dbe318","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.1.tgz","fileCount":333,"integrity":"sha512-16HtOzXUHJYJfwsdHfx6ZL7+jaO6NxuyhKVvJFiz2cgr/2O3sXfmnJ4N56JZvMZ6vdvWF9oV7CzaFyfwn/tyJw==","signatures":[{"sig":"MEYCIQC06I4BONfSNWr2G8rmEbmCEiv5VoDP4fKqzvbGnzvDGwIhAJlnt1lEkDO6/3KoHfaGW4syehXlV2Uz4LAaz2nME3lc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7462470},"engines":{"node":">=18.x"},"gitHead":"2d588f807e0d41bd9c57ea5ffe93941da39f9dea","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.6.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.1_1720253427862_0.7585968872164204","host":"s3://npm-registry-packages"}},"2.6.2-2d588f8-202407060818.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-2d588f8-202407060818.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-2d588f8-202407060818.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"507e175851bea8d05b787c330595094dfbfb5df8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-2d588f8-202407060818.0.tgz","fileCount":333,"integrity":"sha512-0Kgkui5K5ZC2QLGwkzCJaUci4g3xYB/PguWJjzmbYBjMMiiS+97Utmr1SeBOPbMmJweOGq6SBuoPoh6rNjXFqQ==","signatures":[{"sig":"MEYCIQDWnqDU6OO2l45E9QGAw1/PpHHLggpkeohkLq7tTdhPBAIhAJuvbyMwOLnkoWiQC4M4P86hJEf9N+CJhfRKJZzmy6cl","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7464459},"engines":{"node":">=18.x"},"gitHead":"2d588f807e0d41bd9c57ea5ffe93941da39f9dea","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-2d588f8-202407060818.0_1720253955095_0.5615912976403139","host":"s3://npm-registry-packages"}},"2.6.2-b9d682f-202407081252.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-b9d682f-202407081252.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-b9d682f-202407081252.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ae21fb4993fcc1c00c50646f54008abd36eaec7b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-b9d682f-202407081252.0.tgz","fileCount":333,"integrity":"sha512-33UPTV7MnaBYFDEBuot19pVhyr1W+sR7JsSr6jyi+IZ2vgdQSGDQeB9EhMqHHugy4yN8bvBzBa1Ncq5E30i3Yw==","signatures":[{"sig":"MEQCIFw3pVAE8Vr/fkvVGl04j51o87dMWpzpWkuq3x9E7Rx+AiAu+VUmGPTXsdcpqfiH1cZtoP26Ib2BcTwyBV0RnWlx+A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7464459},"engines":{"node":">=18.x"},"gitHead":"b9d682f71671d3f7e38568133b505187a93381b3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-b9d682f-202407081252.0_1720443191567_0.9345418908083396","host":"s3://npm-registry-packages"}},"2.6.2-42f2656-202407081327.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-42f2656-202407081327.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-42f2656-202407081327.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ee6f7f543a8479dcdc97351bab4d70ea352f3b42","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-42f2656-202407081327.0.tgz","fileCount":333,"integrity":"sha512-MLrMMleiPeRAUbV2iHZgndrAiBzklEkTAbjTcw9gCcEtVUDuUS43k4sQrovtrcK3YIc5U7psOrR4U6hyr4zuSQ==","signatures":[{"sig":"MEUCIQDcKCFGyPBaNkpk2rWkGTnDQrrYZTI3jk5C3ZfRW1KOKAIgF9vJYxqEyEpEhPqhihKzgdyMCEaeRdKcBBWu9SNT90g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7464459},"engines":{"node":">=18.x"},"gitHead":"42f26568f88b5ead50a226af667070ccb81e42e2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-42f2656-202407081327.0_1720445298446_0.570019064701383","host":"s3://npm-registry-packages"}},"2.6.2-42f2656-202407081343.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-42f2656-202407081343.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-42f2656-202407081343.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c297290c9cbc6d4a325ce45b1ca15cdf78b5d844","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-42f2656-202407081343.0.tgz","fileCount":333,"integrity":"sha512-xzZOb3Q43WaNxt3QLu7jOqiryuJSiP/teY0Muwk1EOn5W1TG0A2bWhSnNYtp5eGmrkNNmC2uXF/aiqzJp6Ioxw==","signatures":[{"sig":"MEYCIQCu/dXCXL/+3o3L3Xe/a6eB5Rh9IWEPITh+JLGK0URWhQIhAIJOOY5OS/jswcgLp5WaQR0RzcxMtp3MsV0Qj+tYkHgI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7464459},"engines":{"node":">=18.x"},"gitHead":"42f26568f88b5ead50a226af667070ccb81e42e2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-42f2656-202407081343.0_1720446276813_0.11436209923209395","host":"s3://npm-registry-packages"}},"2.6.2-42f2656-202407081351.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-42f2656-202407081351.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-42f2656-202407081351.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"49a25dd18de87e61c5f0120d39e784f1b4e16c57","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-42f2656-202407081351.0.tgz","fileCount":333,"integrity":"sha512-aTwfoI1QIVRH/IpmKDMNLz92D9MvquKtbIa966MFRF/mheR1marqRLIgo0rjRsaVa96i0WgZc4K18dJaczr0KQ==","signatures":[{"sig":"MEUCIFDArnPE53UYHKioF0uJrd8DVdQEV7DAANyblEwl8XvLAiEA/HaS/b867KTtMWwP307D1NhlqjeYREg6fc28kMmwt0Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7464459},"engines":{"node":">=18.x"},"gitHead":"42f26568f88b5ead50a226af667070ccb81e42e2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-42f2656-202407081351.0_1720446778253_0.8052467650553607","host":"s3://npm-registry-packages"}},"2.6.2-42f2656-202407081401.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-42f2656-202407081401.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-42f2656-202407081401.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"78042ab110c7b50de8dde72b70fcf1c7366321ff","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-42f2656-202407081401.0.tgz","fileCount":333,"integrity":"sha512-z/VCozKBtaE3YNzgAa1We0CeT2TccD3krqFZP608bzqzzaODasEgT9XK5P1xYG39prvb7jldpUnqv7cneoKcwQ==","signatures":[{"sig":"MEUCIQCBuv3qGOP1Ck6dIOjPMESdMbOlTcxSB+aEh2oiW8ypxwIgJ3XvaVkQrtoNUBOkklESLWq182O1I+NCU8qOQ3KtjTI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7464459},"engines":{"node":">=18.x"},"gitHead":"42f26568f88b5ead50a226af667070ccb81e42e2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-42f2656-202407081401.0_1720447341801_0.7581386312741691","host":"s3://npm-registry-packages"}},"2.6.2-42f2656-202407081405.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-42f2656-202407081405.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-42f2656-202407081405.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ec0856fbba8ea06a5d086906ba6ec44f7399d195","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-42f2656-202407081405.0.tgz","fileCount":333,"integrity":"sha512-4+IUY5u8HHpnd2r0wtBYFbhi8Qa0hDgwey6uSZPhIOphOuXqMn66/DR3XjWYF/S/JnPTqkzTN0RjdqwlvsA2Lg==","signatures":[{"sig":"MEQCIHXmR/kYHjysThgzdl8OeglRkjdOwuNPedoNoJ27t63IAiA2yIRdU1DWWUdsXnpBOMtSaD0gnKE0LWYx028wMTdJdg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7464459},"engines":{"node":">=18.x"},"gitHead":"42f26568f88b5ead50a226af667070ccb81e42e2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-42f2656-202407081405.0_1720447605102_0.8442039285832463","host":"s3://npm-registry-packages"}},"2.6.2-42f2656-202407081413.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-42f2656-202407081413.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-42f2656-202407081413.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c6bf34d2b0c0a79d055a3cf5cf1df39317655d87","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-42f2656-202407081413.0.tgz","fileCount":333,"integrity":"sha512-fv5XfUCzfD2iibOYPo7rrSxOOsu+Ve2T+P2p1nD5AJOgGjW1FS/x50rW3ST6gjdf8UeMN2Pt6hIL+XUshAiRog==","signatures":[{"sig":"MEUCIBBIfehfx/VjG7iYnemHFHhV2TeA3EgMUKafLh2NPN9PAiEA88MHh30W6McVkmMd6wLXd8MXdNG8Q8Qx7NnJEf+BvsM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7464459},"engines":{"node":">=18.x"},"gitHead":"42f26568f88b5ead50a226af667070ccb81e42e2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-42f2656-202407081413.0_1720448053676_0.7847104764746307","host":"s3://npm-registry-packages"}},"2.6.2-42f2656-202407081416.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-42f2656-202407081416.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-42f2656-202407081416.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"97c0054f4a24bda004ad27da679956a49f1b64a4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-42f2656-202407081416.0.tgz","fileCount":333,"integrity":"sha512-6QEKUk8W+/OTrq++WBiGJlxkKgASifByMFSDhn/aCEjGDRGZ77gWG8a3uR0pw0VVzzpE95yLmgEvIySN+W4O9Q==","signatures":[{"sig":"MEQCIBOm1C4JXheUhPfSNUgIQLb6oKiYjXJu6sbm6MaBGTkoAiBhNWtU85x/tbK2+4+oD7QtOQ3o5hUyV8oqYMoPQIL/2A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7464459},"engines":{"node":">=18.x"},"gitHead":"42f26568f88b5ead50a226af667070ccb81e42e2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-42f2656-202407081416.0_1720448242699_0.049472865357880424","host":"s3://npm-registry-packages"}},"2.6.2-d4aade9-202407081454.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-d4aade9-202407081454.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-d4aade9-202407081454.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d5608fa018f49a5c5f403a73e3f353dca873f019","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-d4aade9-202407081454.0.tgz","fileCount":333,"integrity":"sha512-KRPQgacLy6k7DwR7LqDVOSmxgEE1Rf/FA29AmahjZKAgKdkaJ/gf2Ku45NNrxSSh6KYiFGjUUbpZFV1RywSdGw==","signatures":[{"sig":"MEQCICF21VW/fLRzlywu9gA2LG/c8e17A3SghILBIw+FNBi9AiALKg8yE9BpHUYmxoEd8R3PfU/2kZGbk6S7lNiLnr5Nqg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7464868},"engines":{"node":">=18.x"},"gitHead":"d4aade9720295e470f719924990909aa8a845a02","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-d4aade9-202407081454.0_1720450540110_0.05470413509030103","host":"s3://npm-registry-packages"}},"2.6.2-d4aade9-202407081501.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-d4aade9-202407081501.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-d4aade9-202407081501.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fe3561badf90abd10dbaa2a666155c983335c4b6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-d4aade9-202407081501.0.tgz","fileCount":333,"integrity":"sha512-Qj/FIKFZ+OF0MgQFO37vrV7QZ6fceqxByvi3KCiQfA1gfCEavgEVLY4sHh3qJykASFkkZnoxDAjFlcmoezvCPA==","signatures":[{"sig":"MEQCIAJ9PH2TugdtNxrNkBGSiTUvmeN/JBuGXHcZ1j5+NzNbAiBHGUDP2IVo+XvdNpPmEJ72BxOYntRWNcZUO/43NPo42w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7464868},"engines":{"node":">=18.x"},"gitHead":"d4aade9720295e470f719924990909aa8a845a02","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-d4aade9-202407081501.0_1720450950348_0.6537215944003327","host":"s3://npm-registry-packages"}},"2.6.2-318734d-202407081539.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-318734d-202407081539.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-318734d-202407081539.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ba8caae80c96952ca4980ae91bf2f59732680a8c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-318734d-202407081539.0.tgz","fileCount":333,"integrity":"sha512-a2k1XaLueppZEeTsiucY3ENH+aJvUs8m3JmLcU62CzEVnFlOVx/wp1qI8wM5CzA3wimRrOvKQDRNgTbEBN8PPQ==","signatures":[{"sig":"MEUCIQDsmwe/igRzLUhRFIF1TpLo8xnq0XBNHtxcDE1c9f3DaQIgYZro1ee5LUJ+B9OxFMqRwBW11oWpDeCmtSOt/nt9LOE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7464868},"engines":{"node":">=18.x"},"gitHead":"318734dbe26956b677d95a0302e897ab5b2b854b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-318734d-202407081539.0_1720453223887_0.31559213260913843","host":"s3://npm-registry-packages"}},"2.6.2-318734d-202407081557.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-318734d-202407081557.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-318734d-202407081557.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"daad0a3a18d1ba7dbed6f0b4f8fcb0f32d7074fc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-318734d-202407081557.0.tgz","fileCount":333,"integrity":"sha512-BK0DbGcGP99kNa7pjQ71/l0obDBjYt2LsjhDqrHYQYPeiCRscec6q0efpO/oeyXl7xVMrSiLbZQfB68lDrlamg==","signatures":[{"sig":"MEQCIHAXR/j9b3LgKJFvVmmU/AV8sbG3Wl9wy1EOkYxFYw1tAiAqr8LoomVQ5zF2FGdRe463kJgJCglQKXucL9vyxOkOrQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7464868},"engines":{"node":">=18.x"},"gitHead":"318734dbe26956b677d95a0302e897ab5b2b854b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-318734d-202407081557.0_1720454313644_0.7783522314031901","host":"s3://npm-registry-packages"}},"2.6.2-7492640-202407081624.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-7492640-202407081624.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-7492640-202407081624.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"01929f7ac96d8b629ded61283ae44f9398132cfa","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-7492640-202407081624.0.tgz","fileCount":333,"integrity":"sha512-6Kwe+m/KdEChF4O7Cc7ybW+jE8gShG8NzKi5SK5HX+Nvu63brgb5CAvdQqENvSmfwxuiyFg38FiaerC60Fjveg==","signatures":[{"sig":"MEUCIAgKUZkWa/ro6yPu2XZyA465A3dbF/dJk8TnKF+jxg4lAiEAo8F2wZyKY2nupM5E2NNlHlFevMUL8sH/p4SPvg59xxY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7464868},"engines":{"node":">=18.x"},"gitHead":"749264049df29aa6bf633ab590c4626898134679","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-7492640-202407081624.0_1720455948094_0.9509510567512973","host":"s3://npm-registry-packages"}},"2.6.2-5d91f5b-202407090819.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-5d91f5b-202407090819.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-5d91f5b-202407090819.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5454044a3aca688f8def3aec66b3c67c210d8c4d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-5d91f5b-202407090819.0.tgz","fileCount":333,"integrity":"sha512-Lvs6x/iY1ktjyVSL7oMwfL9VKhtE3PoVFdO+BXLOyQO9p/+TQBGMQlsLRG4atTWkuCG1EDmaH1zf9zsV8OyrVQ==","signatures":[{"sig":"MEUCIBpiDGFxIMk9CyJNt8OphQx8YDREVp7emB21f5oskGfZAiEA+i0xUYyFFx9xQ4x9TD/hNthy77DvATEJ1hVqAVSZDDY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7464868},"engines":{"node":">=18.x"},"gitHead":"5d91f5bf674cb7235613937db91e173c0e46b356","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-5d91f5b-202407090819.0_1720513249184_0.15468498895121408","host":"s3://npm-registry-packages"}},"2.6.2-7028ebf-202407090827.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-7028ebf-202407090827.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-7028ebf-202407090827.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d3ff8da9c9068dc8a5ac3664119c7b2409948cce","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-7028ebf-202407090827.0.tgz","fileCount":333,"integrity":"sha512-5XoR+/rGvcT6XyQSNW/WBskaEo0nhlcwlg82UrM9CT3UssBM95EI7TY8mBYaJVnZRDLc9thabiS28RLEnzku4Q==","signatures":[{"sig":"MEQCIH8rdnA1nQuJaPSpSjTy6n/rjl0pvkiqMBEBFx7aGqOpAiAj0YXxBwoEz6O5Dhg8F3U2G6q4p5kg7uk2Vrfuo39ZRA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7464868},"engines":{"node":">=18.x"},"gitHead":"7028ebf14a62b9fc39d399507d36af0a2f976c62","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-7028ebf-202407090827.0_1720513716850_0.8606394375767878","host":"s3://npm-registry-packages"}},"2.6.2-893e9d6-202407090901.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-893e9d6-202407090901.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-893e9d6-202407090901.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9e4adcc86d37772f5b0b960d05f89785324003f9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-893e9d6-202407090901.0.tgz","fileCount":333,"integrity":"sha512-kV4YEu95D+yyPDCUMJkaQUu73amxpQAZonFwGwL2V1IJQhYTDGZMqPGD3lDuKsMVMbXHkwrqzLN02+S4dI8WZA==","signatures":[{"sig":"MEQCIH66WQtoZ9cPERxnDBEaXr7Pm96EVc/g/nQy2hoXxqWXAiB7wf/aPp447eq4Jjs9Sd47NPuU4QPYkYl1EmQu39pQkw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7464858},"engines":{"node":">=18.x"},"gitHead":"893e9d68d6107afc4a017a4a276ce0f71c35d66c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-893e9d6-202407090901.0_1720515731431_0.7313887347758514","host":"s3://npm-registry-packages"}},"2.6.2-b832636-202407091001.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-b832636-202407091001.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-b832636-202407091001.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"17dfce02575e6922c356a68cb44a6744b75e4308","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-b832636-202407091001.0.tgz","fileCount":333,"integrity":"sha512-ZZEeWFfVyU7IQERiL7VRWZ/IRTMwsG/4SzIo+zjzVxv6FIqE6WOK0Kr/KzBrcvIciVIzhfa43ACs6F+NQVeUYA==","signatures":[{"sig":"MEQCIFbkW6TdUp3o1mj+vonE8NNjOLJhwxkdslMpnN1JR9NIAiAMhwS+VY5vxIi2cZQYyj8YGHiZ7xVFWe6L6oDw3jqfFQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7464858},"engines":{"node":">=18.x"},"gitHead":"b832636eaebdd00494519efd1179c883d2e9c9b0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-b832636-202407091001.0_1720519389277_0.14998983027630097","host":"s3://npm-registry-packages"}},"2.6.2-8718b1d-202407091136.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-8718b1d-202407091136.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-8718b1d-202407091136.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f6eb3be5f2d906c923ca25ed1b521f5ee85b2cf0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-8718b1d-202407091136.0.tgz","fileCount":333,"integrity":"sha512-QJfvCtP0WDMvt6t5heftUnmRMDtFfkMLWMxou53EuCg+7vrrZV9UcMkaSTx2fVYvKNx5vO+kiQPRNtdQ/v6AjA==","signatures":[{"sig":"MEYCIQCRydwxm/+df6jiRnT8YlusSYQAdpxNIGWHH69Rb+tukgIhAJ4DYs1YKjIRgRYGdEML2pSdY4r7Oq5nuoBin5N3JjXR","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7466636},"engines":{"node":">=18.x"},"gitHead":"8718b1d9dce27d9c75409adf097f27c0bbf2b148","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"8.19.4","description":"An open source low-code development platform","directories":{},"_nodeVersion":"16.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-8718b1d-202407091136.0_1720525032013_0.9202021131918576","host":"s3://npm-registry-packages"}},"2.6.2-2cbaeb8-202407091520.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-2cbaeb8-202407091520.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-2cbaeb8-202407091520.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5f9edbcdb8ef0f049f8d8ca281a6523cc4ddaead","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-2cbaeb8-202407091520.0.tgz","fileCount":333,"integrity":"sha512-ErUqvjIhiGhjDEIP9Klptrg3C2idzTV0HQ5VTTBQIg5Z/5SowISTm/tFqdkiEI/Fb3O22JkhdkTAqz8LPBpYsQ==","signatures":[{"sig":"MEUCIDjnJSMU7jcA5jaYpzfyt6JAbgIVMS18dyoYqeEV2UiNAiEAilOV82LT+myuaPrNlNZd8S8joztNsAkQA+mwmQOghXk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7466636},"engines":{"node":">=18.x"},"gitHead":"2cbaeb8764b2a0d18b306bff92a51f45e671bfd5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-2cbaeb8-202407091520.0_1720538508029_0.2705628887734095","host":"s3://npm-registry-packages"}},"2.6.2-3dc892a-202407100821.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-3dc892a-202407100821.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-3dc892a-202407100821.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fc76be1de2ef96a45fca876a280af84ae56df896","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-3dc892a-202407100821.0.tgz","fileCount":333,"integrity":"sha512-2CtfbLZxZyhjkPQMAAKhSGqZCJtSiVZgnLbG0kJg3zg5L4dKmBuPD1FG6ygmWhsWHURgDrHgkBpDHAS1M6i/6w==","signatures":[{"sig":"MEUCIQDfy+TW/YE9gRKXWHHa+aMR6viS0p+FjhQwY4Pyc/tykAIgfxK0TviMyNrosNdH712p9QJb4axIObNan4kPrSTrWXA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7466777},"engines":{"node":">=18.x"},"gitHead":"3dc892abec5eea706ba0e4ec807d1add3cd37940","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-3dc892a-202407100821.0_1720599738478_0.5812996619762474","host":"s3://npm-registry-packages"}},"2.6.2-3dc892a-202407100825.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-3dc892a-202407100825.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-3dc892a-202407100825.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"76c82677154a0c8f728fdd07547faf28c1dbfc12","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-3dc892a-202407100825.0.tgz","fileCount":333,"integrity":"sha512-syE+WpdqUuikJphMFsubAwA99xbxIc3L1F89Y6j8NDbXEv3a+aSy42INEJaVinyasp4hQdUG6jAvSFR8RSlXCw==","signatures":[{"sig":"MEYCIQCR1TsZAaiEeBpRte3njBbgDZ8E7o7Om3u0AtX++8TXugIhAMb3aPHiAsPIyswmakuOanY5s334nakB6QD5OwBnLZAr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7466777},"engines":{"node":">=18.x"},"gitHead":"3dc892abec5eea706ba0e4ec807d1add3cd37940","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-3dc892a-202407100825.0_1720599969842_0.7868336766536006","host":"s3://npm-registry-packages"}},"2.6.2-ec4247a-202407110909.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-ec4247a-202407110909.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-ec4247a-202407110909.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d3f55e756cf8222c28677634d6c8ae4c6d0a9660","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-ec4247a-202407110909.0.tgz","fileCount":333,"integrity":"sha512-rRbWGyzkYWQLYUMcQEKnRgLiT7ldFO4ALCKlkWrZ/y3kn+pEr3hDf1GXwgzOGw0TWhFLNxFVAE/VCiy+zG1X2Q==","signatures":[{"sig":"MEYCIQD0yAZuZN8h1/evXgrm6ADENUoDnP+uLYx50CVGrBAeYwIhAJEVaAJ8Ohnfwf8Z5qwQ794mY2NcmBgGSqUhPx7fa6IO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7469809},"engines":{"node":">=18.x"},"gitHead":"ec4247aec458ed0ceac4c5ee53cf085a59cc5026","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-ec4247a-202407110909.0_1720689021105_0.8818825772776298","host":"s3://npm-registry-packages"}},"2.6.2-ec4247a-202407110912.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-ec4247a-202407110912.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-ec4247a-202407110912.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e1b9d8dabed1dc7b7d9e551bea7a804506088773","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-ec4247a-202407110912.0.tgz","fileCount":333,"integrity":"sha512-KWAkPsw/CN+08n9HRzu5moNOgGuJxiH5dcrcqD+PC+6glu7s46iR7RLucBwXBQG5V/pcn3GNiL8gt/E6BOtqBQ==","signatures":[{"sig":"MEUCIF4+D07curuW184+EkuUDUL3H6wvAd+3cLYwRWFdLF/ZAiEAt5P6MsGNFefZ/9qUrOvDIhdsUdzFMz07lI+dR+GqM68=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7469809},"engines":{"node":">=18.x"},"gitHead":"ec4247aec458ed0ceac4c5ee53cf085a59cc5026","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-ec4247a-202407110912.0_1720689210328_0.4477277170015874","host":"s3://npm-registry-packages"}},"2.6.2-ed6cb31-202407111429.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-ed6cb31-202407111429.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-ed6cb31-202407111429.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d2b472badea5747f19fb28b1b71384dfb5fa2829","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-ed6cb31-202407111429.0.tgz","fileCount":333,"integrity":"sha512-etD1I0edKAF/RMrfuh53CrThf764XSvmtdH5+ebQdjVbDqcFV/4r4D2tRG2+CGX2mKERglQenZOQB0espESPUw==","signatures":[{"sig":"MEQCICrmdy/kN9PQ/d13m1D97B3UwjdIMSDo3fpzftvFEMzUAiBvBYd33chW86z1fmVJWSTAFCZAe14nl/w2ptfbj82xnQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7471855},"engines":{"node":">=18.x"},"gitHead":"ed6cb315053717003bf5d55e5a6ff16ee7ebe768","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-ed6cb31-202407111429.0_1720708227085_0.8731128437446984","host":"s3://npm-registry-packages"}},"2.6.2-ed6cb31-202407111504.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-ed6cb31-202407111504.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-ed6cb31-202407111504.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7916f0a167cbc52322363b2643945faa07234c6a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-ed6cb31-202407111504.0.tgz","fileCount":333,"integrity":"sha512-i6L8Q8h1mzG/3FYMono9bFBdCEpN3QR83gCLUa8Jvw4mG0ebYmQjR+neKnfBRu72GJsB+VuRvzb17UXXqm9jFg==","signatures":[{"sig":"MEYCIQD116IRIxiXmXNdkCWkiSaAEBldw+tElcNMJxYZpxY+SQIhAJvVeXnneOEVsPQdqdxBO2bVebcz49GKI4g0UuCHcaOa","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7471855},"engines":{"node":">=18.x"},"gitHead":"ed6cb315053717003bf5d55e5a6ff16ee7ebe768","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-ed6cb31-202407111504.0_1720710350348_0.968227586085624","host":"s3://npm-registry-packages"}},"2.6.2-ed6cb31-202407111510.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-ed6cb31-202407111510.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-ed6cb31-202407111510.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b5a65accfd86000aab649100079913c239116555","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-ed6cb31-202407111510.0.tgz","fileCount":333,"integrity":"sha512-nbH78IYNJvVPRBm70FftdfyFeWGewcGnBm1nnFi5SEoBZn6BRRa48FVDSeZZOknS1C0Zr9xUoo1wx60IVtUxdg==","signatures":[{"sig":"MEUCIGueKdwnNen5yLvw4i1UxMaVVmI2+xNf5XT+d0l3cYGoAiEAn/S3VKyfESIhTCNCZn/REolqY6KNmmLJQ1yDUOfeVPs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7471855},"engines":{"node":">=18.x"},"gitHead":"ed6cb315053717003bf5d55e5a6ff16ee7ebe768","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-ed6cb31-202407111510.0_1720710715154_0.7318954560510689","host":"s3://npm-registry-packages"}},"2.6.2-87cfe11-202407111657.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-87cfe11-202407111657.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-87cfe11-202407111657.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6fc5ddde9c798d415776d47c281a10962e906d5e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-87cfe11-202407111657.0.tgz","fileCount":333,"integrity":"sha512-oM5oMjzoe5Va/DaHOH79DjvB7T64vn4SPZ4sWgHLGzPkTYSJAOGkOv+Mp/AE/u27uUA1v99pWqdpkMqxPegsbA==","signatures":[{"sig":"MEUCIQC5soWVT9VUCwU7IDGCbVm3S3npCFum/akA6RvQwUlj2wIgCiUi4CoHhvkkpOvsVQFEZ4EKOJzQ4ipcnLcLi2U5aNM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7471882},"engines":{"node":">=18.x"},"gitHead":"87cfe11da83a42372535bdd2feb10aa9ba7b1183","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-87cfe11-202407111657.0_1720717087583_0.9684896677357868","host":"s3://npm-registry-packages"}},"2.6.2-b29c425-202407111804.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-b29c425-202407111804.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-b29c425-202407111804.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7a3a993e1e3d6fe1dbf7fea232103af7071619f6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-b29c425-202407111804.0.tgz","fileCount":333,"integrity":"sha512-lDfRKzbPUxntUFg9ytVsfzq7r/hIvn/k8kL+WBgpSfPVzIMTCrZMN9hpkH4MKt3m4/+fl37nVjO12EcFxlFNOA==","signatures":[{"sig":"MEQCIEGqvWAX9mEI8Qr0XpHnrgtVhWsyCf+VQ6CfzxwkwjWQAiBQWQtpAYxv4OSeWE6XavWoU7ik6EXHnvVMAXmF7VFW1w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7471882},"engines":{"node":">=18.x"},"gitHead":"b29c425cdb387bb4dba967c5639a20337b3fa5d7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-b29c425-202407111804.0_1720721145536_0.9779842251398905","host":"s3://npm-registry-packages"}},"2.6.2-2fb923c-202407111927.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-2fb923c-202407111927.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-2fb923c-202407111927.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"76d5240f783e3ea44661b1234c3512d71f38396e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-2fb923c-202407111927.0.tgz","fileCount":333,"integrity":"sha512-ZjYDQTL0zKrXFQ3SSu0RYf54Z4qc2942tPonENyQ0AUGDCkyqXW3kjAqy3vlDOJBcgmPY20yG0XAe4zV9I3J7g==","signatures":[{"sig":"MEYCIQDw2z/oOTz+ISm3StvClGcU5isxBKwIE5Cunl7+2tGfjQIhAK6pUYDOy/NHYJLOtDVjVkSMYG8FKZfGOsF9v32U3cKz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7474391},"engines":{"node":">=18.x"},"gitHead":"2fb923c81eb4ca8353b02c65fdfcaa1f53216380","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-2fb923c-202407111927.0_1720726139283_0.655518005164295","host":"s3://npm-registry-packages"}},"2.6.2-fc1a5dc-202407120919.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-fc1a5dc-202407120919.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-fc1a5dc-202407120919.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cbf4d125a72ef508348fd6f77c2a38373e030492","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-fc1a5dc-202407120919.0.tgz","fileCount":333,"integrity":"sha512-c4azQd94XirPhrOpMuxcYqZaSOqrlBtowR0AzxMYyZzjVLvsCh++SUL57fAq1JrihWbmsMqFIiVcYRCgFjaWwA==","signatures":[{"sig":"MEUCIGqwtwOckJ65I7W6VwO2MG8AdEXuwa2hook7hsoZLLqYAiEA3JB1xtLXtCIcn1NJHln3TBfL24NDrRIlEYLRKeEf81I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7475160},"engines":{"node":">=18.x"},"gitHead":"fc1a5dc126442c58ca1f01b3dfab87a74828504d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-fc1a5dc-202407120919.0_1720776048354_0.5833121623967803","host":"s3://npm-registry-packages"}},"2.6.2-539134f-202407121357.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-539134f-202407121357.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-539134f-202407121357.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3297d503de395782179c4cab5dc9a88129b43027","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-539134f-202407121357.0.tgz","fileCount":333,"integrity":"sha512-URvf2NyVEN1TKA0it2pXLsZImRuSHx7N3JeuaDadCz9Dwax66qvKCKu7bNibO2E3+LA7AxDlidQq6WHK72MImA==","signatures":[{"sig":"MEYCIQCdEG49IU1xloGMJ9px6fzlS2ciHXjlI+OwiJctnznC+AIhAIkiDlyNdMLnrkFITJRcL1bbvHyayn1SBSWB12Vbcg0Q","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7475828},"engines":{"node":">=18.x"},"gitHead":"539134f29b789c6d8e119b01fe5618a04f9e42bf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-539134f-202407121357.0_1720792685641_0.5106912744673884","host":"s3://npm-registry-packages"}},"2.6.2-1e997c4-202407150752.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-1e997c4-202407150752.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-1e997c4-202407150752.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9be58de3c6543845ed98d2f703e18ab1114bcf03","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-1e997c4-202407150752.0.tgz","fileCount":333,"integrity":"sha512-+6vlMuGXaeQsY8Oi+kpXtslX/fYZiO98Lz1kJscLXjBPcpX/SlFw7AI5TTxa07VUIWVqQTTH2GtUuFLEvxGQYA==","signatures":[{"sig":"MEYCIQCqhVwdQQtAdmsRh4f8LqJcVOupAf4pi9QoPJOPQG80JAIhAKN57jwmjFradwNDm5OYih7sy4cgX80z7LhrPjHJFyqC","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7476534},"engines":{"node":">=18.x"},"gitHead":"1e997c4357ba768722b54d347f9b7f3db55260db","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-1e997c4-202407150752.0_1721030014939_0.3813226836826342","host":"s3://npm-registry-packages"}},"2.6.2-10b7e1f-202407150959.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-10b7e1f-202407150959.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-10b7e1f-202407150959.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"aa17678c33c525d0072d2b5737d222a5f60fe6b3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-10b7e1f-202407150959.0.tgz","fileCount":333,"integrity":"sha512-ehR2DIl1mnAvQtGcwOiNFqTW6IBSLYZY9jCW0tfUZD901vRh/cpuhaX0W6ZttWLBnEHyZFW7O8MB0QEdFLJAdg==","signatures":[{"sig":"MEYCIQCviWMnc7tHtwTomSB8OvKnFAFlgW0TCPeXzY8MBV84WAIhAPysKmBXZW4mWS6Z3mgrTbxmn5OsSEnFNS4g/8nOdOEM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7476534},"engines":{"node":">=18.x"},"gitHead":"10b7e1f9f669274f0f7e6ec075c78aa9c7dbf24a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-10b7e1f-202407150959.0_1721037639715_0.8777978384896299","host":"s3://npm-registry-packages"}},"2.6.2-10b7e1f-202407151008.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-10b7e1f-202407151008.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-10b7e1f-202407151008.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3a5ecf6d23337182a8430402d037f6f55666c46e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-10b7e1f-202407151008.0.tgz","fileCount":333,"integrity":"sha512-SR6y8PFflfUM60HNIkROSNjUWj7OeSVTWCze8MZeZE38w1/aFmXjh5jP9Pp520X3P3mPjTIQ5KP0lxKoX0VNPQ==","signatures":[{"sig":"MEQCIDSD3VQYOxExpRtv6p+GJ5Z0szybVFzDDDlgDsqqRvfIAiArv2jlJC+l2tYZaS+7RwP9/K+j5yk/QYoVJ4ut6hyyzA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7476534},"engines":{"node":">=18.x"},"gitHead":"10b7e1f9f669274f0f7e6ec075c78aa9c7dbf24a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-10b7e1f-202407151008.0_1721038156238_0.7154128739295242","host":"s3://npm-registry-packages"}},"2.6.2-10b7e1f-202407151014.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-10b7e1f-202407151014.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-10b7e1f-202407151014.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5b3d8ef4aa374b02d7640803b787dd4fa7fd72c0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-10b7e1f-202407151014.0.tgz","fileCount":333,"integrity":"sha512-TIPjj+6TUFGNDT6/kWSo1MTQF4KcSI/tpo2l9f44skS+zJO1gdtx/V4AmvO1btduhy+zR9PK9IzA/dGGQxNKpw==","signatures":[{"sig":"MEQCIAu5WeNHyeiEtl9Xbj1PfRlMMZ5QyKEyPnu1it3tIkspAiBDiZffoa+/Y/UQqt+/tDTxdkjdkkYKEz8iCWmB5c6+yA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7476534},"engines":{"node":">=18.x"},"gitHead":"10b7e1f9f669274f0f7e6ec075c78aa9c7dbf24a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-10b7e1f-202407151014.0_1721038562707_0.1946691741781399","host":"s3://npm-registry-packages"}},"2.6.2-10b7e1f-202407151304.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-10b7e1f-202407151304.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-10b7e1f-202407151304.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1746def33cf243aca04d921881a3cbb7acdcecaf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-10b7e1f-202407151304.0.tgz","fileCount":333,"integrity":"sha512-HtCm7YaQJiK3ukT8W43AVWdJVo+NbYE8BPrmIVBxZsgRa9khzMU7dLoRRKSszUnxD8z/TL5zNnbyaYUOB4B1nA==","signatures":[{"sig":"MEQCIE4q7yoNxDIKharzgFsN5oaqPsvMgdhlBS9679Ar07a5AiBIRooAAG9zrzNBsQh8ZEfQka2YOQzve/7dOH1UIjaU9Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7476534},"engines":{"node":">=18.x"},"gitHead":"10b7e1f9f669274f0f7e6ec075c78aa9c7dbf24a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-10b7e1f-202407151304.0_1721048733344_0.531326389322061","host":"s3://npm-registry-packages"}},"2.6.2-01934d5-202407151652.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-01934d5-202407151652.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-01934d5-202407151652.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2cd7158d86607f52a7cc798d5cdb587b54312a82","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-01934d5-202407151652.0.tgz","fileCount":333,"integrity":"sha512-ioyddAAwF4p0wPH04XTudj7an7WeDBvKG2bgo5kclLiOS9/WWzUfowDrO0bE1P+6sl2rGEG337Ynh+77gGxUCw==","signatures":[{"sig":"MEUCIQCpGEyroKXwxLy8yCp2HLIIPORTYM1lJsyLSgyeKsv5qQIgHh695Snn07jb49ORxPYwO0k9GZlGAfne9IakwpkE6og=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7478094},"engines":{"node":">=18.x"},"gitHead":"01934d5ade812fd133e12fc9f11f479eb00ba84e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-01934d5-202407151652.0_1721062386061_0.658946469275564","host":"s3://npm-registry-packages"}},"2.6.2-01934d5-202407160721.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-01934d5-202407160721.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-01934d5-202407160721.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"003dbafc1257456e3ef7705d697287c688596c10","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-01934d5-202407160721.0.tgz","fileCount":333,"integrity":"sha512-5GPHmDCKx1Y8HBjtsRz989hFrA1vt4IGK7/++kNoIFgi5vXtJ408m947jb7xFe9xmfQTcecWYEoCDcjx0gomfA==","signatures":[{"sig":"MEUCIQC1lxT4uD4ZZdHyt0uSua7WxZlnR8S7lYs0CPToX3ykMgIgOlN8tCTEDxU/nz+P8GSronH9R/WyIyFEJwE0RNIm7XM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7478094},"engines":{"node":">=18.x"},"gitHead":"01934d5ade812fd133e12fc9f11f479eb00ba84e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-01934d5-202407160721.0_1721114539529_0.19319025695723946","host":"s3://npm-registry-packages"}},"2.6.2-01934d5-202407161045.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-01934d5-202407161045.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-01934d5-202407161045.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c03faa2ec778c1045bf8b2cfcacbf39b9e56c1e6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-01934d5-202407161045.0.tgz","fileCount":333,"integrity":"sha512-0GxRUPkPCD6XqR9yUw5ZSYzEB0gzBnac9H1UOWnI41lJM6Kvr2UGip+++sH2Grf0K/0bVIF+AJYIvTko2A8wFQ==","signatures":[{"sig":"MEQCID04egwkugX5JFRb9PlrQUb1YZVR4IrPq7psqml6ehpIAiBK64EY5DU0BdRB2pBZU3u20CjhU83/PWlpRwW24MTsEA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7478094},"engines":{"node":">=18.x"},"gitHead":"01934d5ade812fd133e12fc9f11f479eb00ba84e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-01934d5-202407161045.0_1721126775621_0.19002223380749927","host":"s3://npm-registry-packages"}},"2.6.2-01934d5-202407161310.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-01934d5-202407161310.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-01934d5-202407161310.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8e9398aeb90aba7836f327492258bb9a13dda7c8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-01934d5-202407161310.0.tgz","fileCount":333,"integrity":"sha512-AZDpZ8IBX4RunaJMzt1FcWR6vC2sVVyvPA7hm8qCrBKJLCvh0KjNpZPAdxSB1nfSj/nA9oXssbgta/O0RdEYqQ==","signatures":[{"sig":"MEUCIF3bCjh74nWisfEVD6DvFCNbrOIgOCCDvrAYKQV+1azAAiEA1oc4F7+h63PKnxK3xuZaE6wOYYoMPVvWAvfn10Ajr94=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7478094},"engines":{"node":">=18.x"},"gitHead":"01934d5ade812fd133e12fc9f11f479eb00ba84e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-01934d5-202407161310.0_1721135517165_0.40629351391144763","host":"s3://npm-registry-packages"}},"2.6.2-01934d5-202407161342.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-01934d5-202407161342.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-01934d5-202407161342.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1b7bb0ca1093b8b601a58c8b420290258aa4edcd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-01934d5-202407161342.0.tgz","fileCount":333,"integrity":"sha512-eMIbqZQ11Z3zYAk76NdsNTVu32Dom+E0kC5BbVfGxjvHm/kFd0cBh01DZX/b2okL549M7uX1asuO9bzyNXq0RQ==","signatures":[{"sig":"MEUCIQDnb1+Rc0iWYgeOX9rWpzGJYIals5zeQZLgfy7G4fejtgIgegbkTGVIbyvDgJnTws2T68NCqOBl2nR0iiMXauQ8Yl8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7478094},"engines":{"node":">=18.x"},"gitHead":"01934d5ade812fd133e12fc9f11f479eb00ba84e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-01934d5-202407161342.0_1721137391243_0.16398758804880664","host":"s3://npm-registry-packages"}},"2.6.2-070c435-202407170856.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-070c435-202407170856.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-070c435-202407170856.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"22401dada82f22e675352c181180027bcf86042b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-070c435-202407170856.0.tgz","fileCount":333,"integrity":"sha512-EZUAKnDugPGuqG8S4OiuLN7ofm8yQ24vQUpJZlEHM156V7HheK7w6lbas8r2sSmphIxCHga5i/2aHij1rais5w==","signatures":[{"sig":"MEUCIQDEs10GGskqGB1zwIi9lzuaSwDQjCVppYt1/XFpSuDH5QIgV0vH2DpCGUgcQZV+JXVsIRk3qwrtBqf0jU+kdTkyyEc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7479545},"engines":{"node":">=18.x"},"gitHead":"070c4350535fbf1f548bbf27fbc207721f6ffdbf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-070c435-202407170856.0_1721206640265_0.7439560787132975","host":"s3://npm-registry-packages"}},"2.6.2-016eb09-202407170924.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-016eb09-202407170924.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-016eb09-202407170924.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"13162674eac4f8f338b577be84e064455570fe06","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-016eb09-202407170924.0.tgz","fileCount":333,"integrity":"sha512-sAf42KdPUkNglTzw+y5dCbVHwm/DAzesLqnp8y3f7Qaz1hsT6Kbav7C/PwxEzRdXPQ4PUOUXSp63SOOUniQmeg==","signatures":[{"sig":"MEYCIQCFPzkoiSXOqSlbE3XwLaqYSPsgHNSwCmkMHPxMdYJm9gIhAOs+nu/laq4BumYicqLx0Eh6DUnBRwooGRqe0G+6xWEE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7479849},"engines":{"node":">=18.x"},"gitHead":"016eb097a5b783d8a4f1e9a81caafd0d9128dfa9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-016eb09-202407170924.0_1721208343230_0.5471075249702253","host":"s3://npm-registry-packages"}},"2.6.2-1465065-202407171104.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-1465065-202407171104.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-1465065-202407171104.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"28c01f05286ce07010b262f7c356a9985da5ec3d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-1465065-202407171104.0.tgz","fileCount":333,"integrity":"sha512-AgkmJ2ZFDMi98pHOM3w9bEi2tAWpTkBY3KtrEAjGwU3gorsbVY59gleHMKsAAsH66b+irXK41hmG8hIgimIHRg==","signatures":[{"sig":"MEQCIFsB0L3R2BAWwf3yVkJz5gXYTC3ZF8Apg1FI99HetFK9AiBhHfEJL8y15Iv6xbj9yl/sXJSYHuMiqZsRJ+UNgj0E+A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7482013},"engines":{"node":">=18.x"},"gitHead":"14650652fe598c676527a74aa9410c41f746259d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-1465065-202407171104.0_1721214339064_0.22290760124733877","host":"s3://npm-registry-packages"}},"2.6.2-2b59b88-202407171313.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-2b59b88-202407171313.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-2b59b88-202407171313.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b380731ed631bfe654b2c4f720f8a6fa0455c608","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-2b59b88-202407171313.0.tgz","fileCount":333,"integrity":"sha512-7T1UzfLf+Q/RX+Hp5dk6lTgBRnPn9SIlckip88Y/AncZSNJ2cMM0Z6R9JKF5/rorxHu3g9jAXiKcyoVvKXt7mg==","signatures":[{"sig":"MEUCIBLijcZy0WxA4eJEO8Zk9162gpo/bCFZUYyRtCvX6ff9AiEAqOG79RA7gEv34spbYgDq0CJKrMSDdgoYsH53c5WceqU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7482287},"engines":{"node":">=18.x"},"gitHead":"2b59b88ce383e710d44530cbbb56222694a45c71","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-2b59b88-202407171313.0_1721222069472_0.48339046395942176","host":"s3://npm-registry-packages"}},"2.6.2-2b59b88-202407171320.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-2b59b88-202407171320.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-2b59b88-202407171320.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1eab6f08d4ac1404ebbcca4989870ce42939fba9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-2b59b88-202407171320.0.tgz","fileCount":333,"integrity":"sha512-XGpdizqtqXECSNGJI7aGRbmPMz1nnPN9NlnBpC0konoVPXs8G1IBl82To9PK0j4YLtO6530QCTGjQAPZ5jM9tw==","signatures":[{"sig":"MEUCIEW1p5X/pX5CVwRQruG8BO6kH/Zhol7Esm1zlhwmWZueAiEAiilWkzhgxtDh2t9ESocpZvgTNcdhNUmfyikaVbjcDQY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7482287},"engines":{"node":">=18.x"},"gitHead":"2b59b88ce383e710d44530cbbb56222694a45c71","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-2b59b88-202407171320.0_1721222511530_0.053674660227977844","host":"s3://npm-registry-packages"}},"2.6.2-9567425-202407171358.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-9567425-202407171358.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-9567425-202407171358.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d79aa32257d9675d3140db94885d032f1796fad7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-9567425-202407171358.0.tgz","fileCount":333,"integrity":"sha512-tmhkVzbHpyLLjhVQIF1RMCTWoE7XdUXftdSMYjPDEuQk4BcRTN5jI9D8v+nUWZnHtZ7GcxwK/i8EANireCm2fQ==","signatures":[{"sig":"MEUCIBww4nens+4r0JwjR9xTpd2IjM9J6yPZf+wxf5oyxJR4AiEA5Cp9WuEvxikrR1vBoW6nr4MR1/XISzdYAJyI1qqiPXs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7483742},"engines":{"node":">=18.x"},"gitHead":"9567425d75e46c9b5b043ebd2a9eacce3a2edf80","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-9567425-202407171358.0_1721224786759_0.09410781538776614","host":"s3://npm-registry-packages"}},"2.6.2-913b744-202407171447.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-913b744-202407171447.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-913b744-202407171447.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2cfec2e374d895c2d21778f736ac78a57c972faa","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-913b744-202407171447.0.tgz","fileCount":333,"integrity":"sha512-CwnYcrWQycXQu6bUOECydUplMMMMN3aOFVLP6R3JEvlZtmfBvT6k6tns/cRVaFdW4s9d/f3M7d+S4E2BAbHSvA==","signatures":[{"sig":"MEYCIQDvjscVDw8l6Wje209NtYH2vBlkAoiJZtPUKtXDB+9atgIhALwC6cMK/X0Dl8sSA9fJtGzP+EzGZBv8pcAquJP8rZx1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7483742},"engines":{"node":">=18.x"},"gitHead":"913b7442b1c93a9d9512b9444b91507bcf31d180","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-913b744-202407171447.0_1721227749940_0.9087033240026601","host":"s3://npm-registry-packages"}},"2.6.2-5a3c176-202407171509.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-5a3c176-202407171509.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-5a3c176-202407171509.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"afb72076d892dc5a594321041e24a3c20a2876a7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-5a3c176-202407171509.0.tgz","fileCount":333,"integrity":"sha512-oql8+Tnx9GdaDmXvF/SHyUPB3NBcSnxJjItDR+eZgNzmyPp7rJDAgBzqvCGXTsz8tzNfhvayMCnk4Pr8N16WVw==","signatures":[{"sig":"MEUCIQDHXCmd3S8qz0hS+NA1DMVdJGELVdheYsB19HyVxLVQAwIgMJU955ZCr4kYLkuGzs1D9CrpvCWV4TJLUHu4xvvSBqU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7483890},"engines":{"node":">=18.x"},"gitHead":"5a3c176300d566c761754557b41b1e034e2d22df","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-5a3c176-202407171509.0_1721229052171_0.5380268475669341","host":"s3://npm-registry-packages"}},"2.6.2-0a914ae-202407180838.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-0a914ae-202407180838.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-0a914ae-202407180838.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d6994e507b59e8abba1c5d3bd0fa966bace22174","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-0a914ae-202407180838.0.tgz","fileCount":332,"integrity":"sha512-OMQGUuyKYUTTn0eICQOCqKiXKBLdkCsv43Mx0WbKOAKSL4opv5XruE6aNImU5BrdCjOlffYOnHEy3IdSu3jAxQ==","signatures":[{"sig":"MEYCIQDTWniuJqyr+51VNQF8jeJ7gahdGhyed55mBUiyYarGEgIhAJX9psmi3DZD8VyjtBvwRMow02fDS+2mwgwKeA/LM8HO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7467846},"engines":{"node":">=18.x"},"gitHead":"0a914ae05c07225c8596bb3615a765509473f1c8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-0a914ae-202407180838.0_1721291958245_0.5713915244860466","host":"s3://npm-registry-packages"}},"2.6.2-34023c6-202407181109.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-34023c6-202407181109.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-34023c6-202407181109.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"85142542797b37cb32c3d28f3ce48df64e235924","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-34023c6-202407181109.0.tgz","fileCount":332,"integrity":"sha512-IOJrudSnCVYLyu9eWzNEoSI8s7T0ioDPwksRqmXkMCB/d0lmPbBY1nmmkzdoii7n42UHpjmLmgvxxZpYaMzESw==","signatures":[{"sig":"MEUCIQD7n9TsLq/3qchAFbabsnKKjI84YmXcERtjcXxYeB/KiQIgdqyozeqoTRWeXfFQt54bsG4N23BI8uBsq66n7Q7eSro=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7468020},"engines":{"node":">=18.x"},"gitHead":"34023c644fce99c14497f99c7adbe02760b683a7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-34023c6-202407181109.0_1721301038872_0.9291860637414044","host":"s3://npm-registry-packages"}},"2.6.2-fc4f09d-202407181135.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-fc4f09d-202407181135.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-fc4f09d-202407181135.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"151df4007f434a9637d941bcaee4fc7165ce28b2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-fc4f09d-202407181135.0.tgz","fileCount":332,"integrity":"sha512-x9Xij4OsB80nJ3ZAPaopXPd4yiW6AGrbNyObE7/+ZD3d+v8MeDRdr+hNTnQD9Ubvi5nefVRxxRtWTEvTpT64cg==","signatures":[{"sig":"MEQCIHJWAbG0xjq0/V6VH/9UECXS0mqoBLz/GfEJ2O5G+H4mAiAlHj5VZwaIpQ/dtTfBSK8Y57NvpT5tG32MqJYGdZ7Eew==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7468020},"engines":{"node":">=18.x"},"gitHead":"fc4f09da7e3cbfba0634734566aeda35a5b1d7c4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-fc4f09d-202407181135.0_1721302619270_0.9702569387288247","host":"s3://npm-registry-packages"}},"2.6.2-cf145da-202407190959.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-cf145da-202407190959.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-cf145da-202407190959.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"32eb168246d491b8e7c7116c0bcd785d3212bdb2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-cf145da-202407190959.0.tgz","fileCount":332,"integrity":"sha512-vZNzWAHMVONFa61x3CdUExh7H93hqdtf6rV5O0UePHDwqEw7iu7us6K9tgE08/3cqrmQp3jub6mpFFkauhzNKA==","signatures":[{"sig":"MEQCIG0SH/cpHntttf/mvluf9YJAEX6KX2JqJWzxUR7rXQG1AiBQ3f/t9ZXzNZS0pqu43IHA4sJN54I00ItXE3HDnltgDg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7468024},"engines":{"node":">=18.x"},"gitHead":"cf145da6ba9b28055266a535225910ab55fa25aa","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-cf145da-202407190959.0_1721383241534_0.4005938561325655","host":"s3://npm-registry-packages"}},"2.6.2-cf145da-202407191002.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-cf145da-202407191002.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-cf145da-202407191002.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"913478b81d5b8338b1f65a71cee61ccffad0f5d1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-cf145da-202407191002.0.tgz","fileCount":332,"integrity":"sha512-gjifPHllSNRb9AMSfTvfyZEzp4F7/OgSbllVlXpwlb0QfjOFI1sqpL8PnLM5KTk+0Ne3uD8qdlhEv0BhWQeITA==","signatures":[{"sig":"MEYCIQC/AWh0C1YKZPDM2oyXewM3vVinQYuaIETlR80L1+bfKwIhAPhFRxA9ovVUD8dVGmZj6pbzMslcLWug7g7xKzyc8Bdx","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7468024},"engines":{"node":">=18.x"},"gitHead":"cf145da6ba9b28055266a535225910ab55fa25aa","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-cf145da-202407191002.0_1721383405009_0.20926761296268515","host":"s3://npm-registry-packages"}},"2.6.2-abc5b7e-202407191039.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-abc5b7e-202407191039.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-abc5b7e-202407191039.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b9239ddee17f6f56cd18c264b0b539714e225ab8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-abc5b7e-202407191039.0.tgz","fileCount":332,"integrity":"sha512-dHSCNEXqIs8UvUOWHRDsujNzvSkyyyT8jYZh8rcDugtJFE9raUcndRUu0D0SUo9yjZn0wQq880Kujvc2EsaQmw==","signatures":[{"sig":"MEQCIC2Zbg6fTpRwC3gkbUgD1y0Cept7zgWrxueFXbHE5XXqAiBqAViSZB0kS0Du/4EfsUl1X3oDYm3tILDdErLg0cp4Rw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7468028},"engines":{"node":">=18.x"},"gitHead":"abc5b7e7700f00a1f7983124431d34800458f3f7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-abc5b7e-202407191039.0_1721385629449_0.9020029490789414","host":"s3://npm-registry-packages"}},"2.6.2-3e503fe-202407191054.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-3e503fe-202407191054.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-3e503fe-202407191054.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f18932d72ae5402e1539873480b3422577558daf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-3e503fe-202407191054.0.tgz","fileCount":332,"integrity":"sha512-oSpdZG4O6f/KAMltrGeEtYelxDMOHzC7HutbGv71TYsOEEe5wX4Ipr9m6+idQaja9uxiuejMgohhPTwpeUUUMQ==","signatures":[{"sig":"MEUCIQCYlgyGZE4hqnD18tGqC3hT4slmNk8HEky0VnNVVf486gIgKD8zPbsFna3H25Gvva9q7YoseDoX88QAVGRRqMW0aIk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7468169},"engines":{"node":">=18.x"},"gitHead":"3e503fe54b6b5ee8353e0ebd999a246ba75f0a28","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-3e503fe-202407191054.0_1721386543841_0.9692910989823356","host":"s3://npm-registry-packages"}},"2.6.2-168eb19-202407191245.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-168eb19-202407191245.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-168eb19-202407191245.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f49b40eecfe1b59b35ed2de2bd027365e81c0edf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-168eb19-202407191245.0.tgz","fileCount":332,"integrity":"sha512-W3CwcFde/GGX1n33C6xXuLSX7L8c/gUtau9lmF9WgwO0mokDqCwWikb+cWkK6OoFNp1lWQt6vYrQIpe7RyqRCQ==","signatures":[{"sig":"MEUCIQDAVZXRsZN5OnUDghC8KOeJVoDYpcPUCgZM7C3GnbXq1QIgBONzZcFdPzoOD0MVPxXen5e+cCNApe6gBP6muuAVCBo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7468231},"engines":{"node":">=18.x"},"gitHead":"168eb190eb6f6a56913d30e981319579690b97e3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-168eb19-202407191245.0_1721393188178_0.5104242672043284","host":"s3://npm-registry-packages"}},"2.6.2-940a813-202407191302.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-940a813-202407191302.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-940a813-202407191302.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0d08164e8454666dd5735a2701147da812744271","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-940a813-202407191302.0.tgz","fileCount":332,"integrity":"sha512-5lrk1k5YAEik8hBijpNf4VgZybUahvV6/y38nnXawmmgwPyhS2k1ZUpvGU9QZUv8LT9SnehZxVY74KSjbgDaMA==","signatures":[{"sig":"MEUCIQDrr7H8Uqkn7jgpynz2yVK7pg77ISESpeuEFWZLLmuU2gIgfpSF++dik1KirkQ5vQN2to3q66Ciow8N1JdVwXwlgWs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7480754},"engines":{"node":">=18.x"},"gitHead":"940a813c13e8b215dc7ed13d3c5e7c51ba713a6a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-940a813-202407191302.0_1721394213014_0.35778575223685993","host":"s3://npm-registry-packages"}},"2.6.2-da3a11e-202407220854.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-da3a11e-202407220854.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-da3a11e-202407220854.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9430e761e0bb747482ec660925e8b393cf21f373","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-da3a11e-202407220854.0.tgz","fileCount":332,"integrity":"sha512-ZxVSpfEfxmt8qBZcmmRRI/dtxfImOBqIfC6ROm8TYfYw9Z3K1aX2+3sShHgENLfXo74EMt/jfHrRwkf441VA0Q==","signatures":[{"sig":"MEUCIAriw+mMIIO7xlm/Pm8Bs7oX75bY4NG8c2PtOW8l1CZMAiEArDFP8slE2oow61YV0F6d3370WUdf6yKck6wuNYdQSY8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7480904},"engines":{"node":">=18.x"},"gitHead":"da3a11eb9823e1ace2f4fe849a1fb9cdd881dd9b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-da3a11e-202407220854.0_1721638502514_0.7206630006964303","host":"s3://npm-registry-packages"}},"2.6.2-e1cc16f-202407221125.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-e1cc16f-202407221125.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-e1cc16f-202407221125.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9a9c0cceeb4b1c03ff85e7fe312393958ffb4759","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-e1cc16f-202407221125.0.tgz","fileCount":332,"integrity":"sha512-OUhtJHTOYmUQhqwT/MavlxkM12X6cfLS320oeJevY2QM/AOxBc0fNg3gaojqRZomEAYGNs/nNr02ASAJPp8mSw==","signatures":[{"sig":"MEQCIGhvNNo78BJMz5zZpUVYznJ3XYKqci82nor8LWett/WrAiAIZlpl/uYRuvfiK0F7qgrTRrLVNd/p82P/398c/NT0Ww==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7484870},"engines":{"node":">=18.x"},"gitHead":"e1cc16fd1c9a62aed34d5edfffb9cbbf42802a3c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-e1cc16f-202407221125.0_1721647615151_0.831955167191829","host":"s3://npm-registry-packages"}},"2.6.2-a934275-202407221426.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-a934275-202407221426.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-a934275-202407221426.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"86220d70d0196d833f006cb9c69ec101d98ebb3a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-a934275-202407221426.0.tgz","fileCount":332,"integrity":"sha512-mPZWiPWaGnsTHOXHYCZ5aHVRwt4mSOTVPubQD0hcw/8fydBgM7TX3jCQ0sZ45mqmEGKUt/nlruZFgCfhNTDXIA==","signatures":[{"sig":"MEQCIC6rhb5yRsNMVRFLz4xgn4pyZUCREU88GVZxQ9LhEkaFAiA7lMEjQcZGqKLK7vNP9eTbNeMopkC6ToBQbK97hWuoXw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7485193},"engines":{"node":">=18.x"},"gitHead":"a934275d3cc25498634a3f1128676e0eea472c5f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-a934275-202407221426.0_1721658464427_0.8047750211876836","host":"s3://npm-registry-packages"}},"2.6.2-4258384-202407231431.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-4258384-202407231431.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-4258384-202407231431.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bd5dc62d66de8059ef7953dad442207f93c3bdd1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-4258384-202407231431.0.tgz","fileCount":332,"integrity":"sha512-yGK98CI2os3NdtAsWcC5rva8xGMfX4C0zUWcgCMyHjn5rXHvfezmkrQgsi4b2obLsHDg4ydbCghLPvrMf+7b7w==","signatures":[{"sig":"MEYCIQDLbCXUHDv/sb795KIUSd6eZBVGyZBwkqA98zsvJXWWyAIhAORyyFWGNUr0orfC317X4jk0+pZ8lyabkt420lXxEn9M","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7485215},"engines":{"node":">=18.x"},"gitHead":"4258384f39b610a1e89d18075f6a3926b8aa4976","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-4258384-202407231431.0_1721745166290_0.5181347943161918","host":"s3://npm-registry-packages"}},"2.6.2-3f397c3-202407240911.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-3f397c3-202407240911.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-3f397c3-202407240911.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2c9fc45e73a00b0848f3b78d353a6ceb014f256f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-3f397c3-202407240911.0.tgz","fileCount":332,"integrity":"sha512-o5cVl9UzKoavVxuVdF/WKQS+g7oPmn3Vv75syMQQaSOnzbPaLsuBbMrl6lql4SMQQr4DfY1VF5VL+HfE70LsGg==","signatures":[{"sig":"MEUCIQC5SnhYUp6Sxwn5C6gRYLA2naIZQhij/QxJAp3Upc267wIgfO+z1uRLh3lj4TajfRHx4IeEhNW89rk10PIL8Xtx4bs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7489643},"engines":{"node":">=18.x"},"gitHead":"3f397c38ec0536859e4a5a139861cf85a33756fe","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-3f397c3-202407240911.0_1721812391506_0.6253646948358926","host":"s3://npm-registry-packages"}},"2.6.2-0277dcd-202407241150.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-0277dcd-202407241150.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-0277dcd-202407241150.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7ae8671542cd438d7fddca018a35e0d2be23ec44","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-0277dcd-202407241150.0.tgz","fileCount":333,"integrity":"sha512-lVNTEd6EbUxfPdWTPY3VX1itnVh82f/BkX+uBVNSplORXC+wevmNgeT4nJp1FlPlARLvO85+Y0fn3PS+/xbn1Q==","signatures":[{"sig":"MEYCIQDGrS9McEXsKWGAUiohdNEc5jSXZCxPSuWJtW2iQG7IQgIhALc6dIP3kqc2qIuOF5BV1RlfJixEGPXpVrqQvICanrjp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7498343},"engines":{"node":">=18.x"},"gitHead":"0277dcd0a822fdfe4b6a326184edda3af50a6da3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-0277dcd-202407241150.0_1721821866820_0.8493299448954557","host":"s3://npm-registry-packages"}},"2.6.2-6ef2608-202407241308.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-6ef2608-202407241308.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-6ef2608-202407241308.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"888f1e2936224ee3aec6dd760b1bfcfa6dde6014","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-6ef2608-202407241308.0.tgz","fileCount":333,"integrity":"sha512-v0l/Rpm3BN5se1xwHBK4xoBBUonZgK7+8Tpusfp2qYBu5o9mLrS6NgRr7Z059mkojF88YnJHj6v0TaTjv/U6Ng==","signatures":[{"sig":"MEUCIQDIbqGyLQlHbV0K93l8QFULtqYiyw1u2KW5X1/FDfF5mgIgewcTCRoFiu2sg2egY0BR0bUvNqR7gITfc/17gfYf6cg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7507560},"engines":{"node":">=18.x"},"gitHead":"6ef2608db3c64232d8115f2c5c32e76576c10085","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-6ef2608-202407241308.0_1721826569583_0.7313531591658842","host":"s3://npm-registry-packages"}},"2.6.2-ff45876-202407241436.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-ff45876-202407241436.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-ff45876-202407241436.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"562cae32ddd820e3bc43742365b618af2298370a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-ff45876-202407241436.0.tgz","fileCount":333,"integrity":"sha512-tlzgFqNcfTwZ1VYoP2uc8kZKNRdquWJ5TPxdEq/KHscpfNIPNJKKbcXcOL2COgWdp1ljiC73GwFvlRjyRIaZMQ==","signatures":[{"sig":"MEYCIQDIldHW0wcLUH+jmYbxeswYmaY6hjs2zw8EdAJJW+v2pAIhANo1xyK781AGqJ5PkzfuUZ1HbN7ziighQBBHS39un+bg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7508514},"engines":{"node":">=18.x"},"gitHead":"ff458764cd76e8471e82e4fce1a7edad024626ba","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-ff45876-202407241436.0_1721831886446_0.5858670546953342","host":"s3://npm-registry-packages"}},"2.6.2-577de23-202407250848.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-577de23-202407250848.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-577de23-202407250848.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ea8fc58f123f72fee6e0b8e9d83110b726709c28","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-577de23-202407250848.0.tgz","fileCount":333,"integrity":"sha512-BbrQQlpnQgKKd84T0lboqAc5NaDclkblL4ppqAcdCdRY+Z/fh3RgJg03JHQie4xJvvGDfNME8d80co+vJvK7GQ==","signatures":[{"sig":"MEUCIGzdySTZnPXJMFLgLyesXobOLoh+WI5uyn72CHou9J3eAiEAnXl7iqObM3pu/Pv8VXJsJiVa9OmbjDrp47HSYhVnBP8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7508514},"engines":{"node":">=18.x"},"gitHead":"577de236c96a5cf877544875e22f029e390999ff","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-577de23-202407250848.0_1721897379338_0.08266970348158909","host":"s3://npm-registry-packages"}},"2.6.2-e066ed7-202407251019.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-e066ed7-202407251019.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-e066ed7-202407251019.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fffa0b1fbeec382061e47f799b90c74c8042ea99","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-e066ed7-202407251019.0.tgz","fileCount":333,"integrity":"sha512-jvvKyn16ilCuYeGEIL//uLO0qV6JS9UZ3LrHTPYAUFJdUGJCBY3NgZ2UY2HyrqUkJjh3zfhF42Y+r3Ldr95Qlg==","signatures":[{"sig":"MEYCIQCTqnVNETtkjrFtdgcarSZkfnRYllCZi1vo/rHEtThd0AIhAOoWq4Ve3aTt+V1kgDek+2W22zPBhDqXdY7OX84Br6U4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7507632},"engines":{"node":">=18.x"},"gitHead":"e066ed77ae8b4efd0e25a707d0e9da1681300d66","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-e066ed7-202407251019.0_1721902810709_0.4882397804050487","host":"s3://npm-registry-packages"}},"2.6.2-21f5398-202407251150.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-21f5398-202407251150.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-21f5398-202407251150.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0ea9fa9e871a3649e3e47402a79f28640abb6ccc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-21f5398-202407251150.0.tgz","fileCount":333,"integrity":"sha512-U/LzliieR1nANXYpx5lJkmWHvXtwL+jpw3C2vDEVZtB9triuQVDihmzAn9TdpaBOEir8FggV28HlmeqtAaWroQ==","signatures":[{"sig":"MEUCICypnTgHLOYOHXLnvwMHpZnFuqjPOSGCKfgkOilb9mg1AiEA2KNZEgjapM3OckjWrqGZ3OyCQYggS/LY79x+lMPy4jk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7508392},"engines":{"node":">=18.x"},"gitHead":"21f53988fafe7ed49eb759e167685854e4f3528f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-21f5398-202407251150.0_1721908306452_0.8153468440407745","host":"s3://npm-registry-packages"}},"2.6.2-0a16ddc-202407251224.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-0a16ddc-202407251224.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-0a16ddc-202407251224.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"02cfd2750abab9320857fae51117ef52d7c240cf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-0a16ddc-202407251224.0.tgz","fileCount":333,"integrity":"sha512-LjNKfPZlbHU1S5C8PIAJHrwE2zIVb5h1lc7EeC5Oaku//KkgbJkXURKelsZ8wo52gcSNzOJMZ53PPJqEQ6eSUw==","signatures":[{"sig":"MEUCIQDYK5Z6R7UI5QqflP5okz03Jw6UPbam5z/5i09qtzje0wIgDmTKlo+muKwVJE6eFOwibnd4haUbArJ+DHq9+V+gY0c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7509591},"engines":{"node":">=18.x"},"gitHead":"0a16ddc58fcae829b1c69fddfb7fce5600b2203b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-0a16ddc-202407251224.0_1721910330341_0.9108109196607415","host":"s3://npm-registry-packages"}},"2.6.2-2e4316a-202407251304.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-2e4316a-202407251304.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-2e4316a-202407251304.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"93e3b2e57ddabcaca115b6568038328680a3b588","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-2e4316a-202407251304.0.tgz","fileCount":333,"integrity":"sha512-qJlQHLYcwoJazI9vznISZ8RvggiX6MiJtknNkxxM8yx6n0U0h1EfvcRfJhpMBxSPYX4nLCu8QAXde8W+VRLFTQ==","signatures":[{"sig":"MEUCIFHN3bU2gzrcCm+mamFN0Vl5tf0eGJ7I0Eeq3Nptz0ZdAiEAwrs1DFU3bNZVqTrg4Hce3wjdcnNm9vZDI1YJK/zj7nY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7512103},"engines":{"node":">=18.x"},"gitHead":"2e4316a03d2f8b4bd2c62dcae3a7d9b67af54bb5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-2e4316a-202407251304.0_1721912741999_0.09054565297100625","host":"s3://npm-registry-packages"}},"2.6.2-ec1687d-202407251416.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-ec1687d-202407251416.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-ec1687d-202407251416.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a669b4faa7aad9c06ac73e9e084fa7503849fb4c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-ec1687d-202407251416.0.tgz","fileCount":333,"integrity":"sha512-xPqt4EUcUV6mazuebeAR1yRhMks9aDNbxFZQyko4Ib6gFAqpemWL2KFAvhfxIOZdn1IXvSlGiSTOT5pc+RnqDA==","signatures":[{"sig":"MEUCIHjS8fJntzNMotRR7ID3QQi58BdykZ8dk+SQLid5tS9hAiEAkcQU3U6deFvimg24FmkSHUGajRAAvrvAbZHCUAdc7js=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7512103},"engines":{"node":">=18.x"},"gitHead":"ec1687d60433e42a14e4b887569312bc3bd6c1a4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-ec1687d-202407251416.0_1721917052246_0.6676729224432167","host":"s3://npm-registry-packages"}},"2.6.2-ffeae89-202407251517.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-ffeae89-202407251517.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-ffeae89-202407251517.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8d1fa61814de6107a2eca88512c0daecb6cf33fd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-ffeae89-202407251517.0.tgz","fileCount":333,"integrity":"sha512-Oa1TGNeoF+GJjSJ9aQtzYJpq6wI7aSlGwWHu7QHttW/3cawxBoKifeR/2Ytu4jw/hex7QJpqX6G7vEtkzcKXNw==","signatures":[{"sig":"MEYCIQCfecfHHakE8/PUiGLY9lBwXe99ra/vCk6/b8ygVzFoyQIhALZs/VKf1CS8vaPz1zv+0/C5H008MFRBdZcbviLBdmqq","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7512103},"engines":{"node":">=18.x"},"gitHead":"ffeae89a6a8fca1ac7cf0c0bcb354b262f6920d4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-ffeae89-202407251517.0_1721920686883_0.7314885308201289","host":"s3://npm-registry-packages"}},"2.6.2-9e000e5-202407260814.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-9e000e5-202407260814.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-9e000e5-202407260814.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2c3ac9d169ae0180bdb6a3b095ff9671f335fe1f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-9e000e5-202407260814.0.tgz","fileCount":333,"integrity":"sha512-vEi7Qq99TwONtPoeu0LQVhhcPJLoFyaPsnpnIpn+9Nank+o/5BJ8hH5ez9chiKI/F0fFrlt8LXMjqYepqg2roQ==","signatures":[{"sig":"MEQCIHPuYQVi2+RSjxmETpc0P5ThR91/CLGFQQhp8I2/vt35AiApKi7+kGwN72kIUn2RAaMOfYXv7p+LI0IM4hkIQIxe0Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7519618},"engines":{"node":">=18.x"},"gitHead":"9e000e5b723b97d83c99947abb5c3d255b002be1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-9e000e5-202407260814.0_1721981724058_0.43119818684398736","host":"s3://npm-registry-packages"}},"2.6.2-9e000e5-202407260816.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-9e000e5-202407260816.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-9e000e5-202407260816.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3b802c84219f1c59dc3252dd688cb397ac73d85b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-9e000e5-202407260816.0.tgz","fileCount":333,"integrity":"sha512-uP9mUGwrk8JK3s0xRaFm6kVQLG4DlyQ1+AWR8WvCfGKsfDR8dp2HuXRSGxwoKQ3CN5/huHgxtlEYc6+w4yXpxg==","signatures":[{"sig":"MEYCIQC2Z9nuxq4hChh4h6tXcY/u1QUWdLplcs6079yoFjm3IAIhANupIy7FSfmiVRxs2qfvEkQXlZL0IMpzas5azxwIdHUZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7519618},"engines":{"node":">=18.x"},"gitHead":"9e000e5b723b97d83c99947abb5c3d255b002be1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-9e000e5-202407260816.0_1721981831401_0.08049580127663214","host":"s3://npm-registry-packages"}},"2.6.2-9e000e5-202407260822.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-9e000e5-202407260822.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-9e000e5-202407260822.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8ed3c352818ddb87f2f46c1fe3b9f99cae5c0f5e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-9e000e5-202407260822.0.tgz","fileCount":333,"integrity":"sha512-DDML2Ou6LY88Vj5QzAFU5/6n5/l/vrL0kAIVNwngGrzicmvBbmbDxYWUP81a2fyWMg1fcpW6u9lmzdW8IvNFGA==","signatures":[{"sig":"MEUCIQDcYWFXAnapoj3buT8wypSkuoPRlqNOXGY+eVXgOC/iSgIgR4PakwdCZ6fvlnbaiquVbbLGGr4rCX+JIspCVhdx1R8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7519618},"engines":{"node":">=18.x"},"gitHead":"9e000e5b723b97d83c99947abb5c3d255b002be1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^7.3.3","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-9e000e5-202407260822.0_1721982199313_0.3525110065751229","host":"s3://npm-registry-packages"}},"2.6.2-9082b06-202407260844.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-9082b06-202407260844.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-9082b06-202407260844.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d419bbafcdcbe17f96e5548638bae1a78e68f40b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-9082b06-202407260844.0.tgz","fileCount":333,"integrity":"sha512-Yp7OtS3z58n0fagEhOnrf3ZvFuvQMRNrl9doitCUmU0ZTz0IlEKRdESKGRtsReOCXBPgdPeP4DeBdqqgRPaxxQ==","signatures":[{"sig":"MEUCIQCa9B+QwZsDaIDNuFoFz78vVbpZFT3fuqAe3Wn88foNiwIgE9atHGGqjOivxV2S4avVVVyHqvuSmPXgUrI9WcVFUkU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7520320},"engines":{"node":">=18.x"},"gitHead":"9082b067f4c96ce2feea6384e6f47771ed7c0fce","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-9082b06-202407260844.0_1721983529207_0.2965392322892044","host":"s3://npm-registry-packages"}},"2.6.2-223b408-202407260912.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-223b408-202407260912.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-223b408-202407260912.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0fa7861c53a6cd67a58dc22fc7a652045c35e2b8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-223b408-202407260912.0.tgz","fileCount":333,"integrity":"sha512-gzulBX78b8mGj77DJv2hg1alaOd13tUdPq8zYgYA+5wyFyjdnM/gJqevDVlbsp3GAsooKppJpcTkUs3RMhz4wQ==","signatures":[{"sig":"MEQCIFse7V6z1uwGjQ11CJElA0MW8yUHuFJsrF85dYd1LRlPAiAOVzlHCSa98q0B25Vq4TV12km4IQ1PTFwjbSxVybhZBQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7520422},"engines":{"node":">=18.x"},"gitHead":"223b40875b49cc4fa7e17f96f843978248aa5862","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-223b408-202407260912.0_1721985211748_0.7689158129316616","host":"s3://npm-registry-packages"}},"2.6.2-7a217ad-202407260955.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-7a217ad-202407260955.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-7a217ad-202407260955.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9988259f233d5304a39e455b7bb80770cf31232d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-7a217ad-202407260955.0.tgz","fileCount":333,"integrity":"sha512-zlUfdv/Z6tqcGhELAx8q4NbRoPpb/W2AX0dDUP7Im1u1FT8Fl0X9S0WqP0PIjxHc/znus59QW/Ek/XVNcMA5hA==","signatures":[{"sig":"MEUCICpuu9ZXo2BLrCus8KoXcre2HmdJ83jZe4eGZQJeejcXAiEA4sqx1NYPqRuyFb+rkas/Thk1kAJWqTNb7H6e4MP2T4M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7520422},"engines":{"node":">=18.x"},"gitHead":"7a217ad0da656036f7846391571668dd7ce644ab","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-7a217ad-202407260955.0_1721987810259_0.8105878579435679","host":"s3://npm-registry-packages"}},"2.6.2-7a217ad-202407261026.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-7a217ad-202407261026.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-7a217ad-202407261026.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ebc0526189681d16add2100634027e9c1dc07c69","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-7a217ad-202407261026.0.tgz","fileCount":333,"integrity":"sha512-NPPnJbUQVppwGMkAU2z6vEmm9Jw8Wyvah7HPLcPIqaApG4YKibAMY2qmzUOzhbAv9C/RmC7NVUBohuiqBVFDzw==","signatures":[{"sig":"MEQCICuPVWOLTyUxHQNPwl0F4wswLxjIZPzQ/0+EiJt8mXQjAiBn/y+htxgiodzhXyRFPDlEcWvHCeeLhNAzYgKRfzyINg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7520422},"engines":{"node":">=18.x"},"gitHead":"7a217ad0da656036f7846391571668dd7ce644ab","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-7a217ad-202407261026.0_1721989673981_0.3129662004216929","host":"s3://npm-registry-packages"}},"2.6.2-ddec296-202407261105.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-ddec296-202407261105.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-ddec296-202407261105.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4f53e54b02c5a4a0309cdb0cd4da34dc28923f97","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-ddec296-202407261105.0.tgz","fileCount":333,"integrity":"sha512-8pzu2nNh21a2nAqw7uGfPnjWu5oqhSEBrq8LttuGCZpXJAderLohu3bNuo76GysUyvo4ylFKrRe/QBGfZqRlYQ==","signatures":[{"sig":"MEYCIQCYSTsVl8Klw1Ov4D9So3vx1i0taGrkRKhZP9pQQA7S8AIhAJ/dwuxNef6Ab8P7KHKmThLhR5jz4uaVQCvyR3ogEhr+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7520313},"engines":{"node":">=18.x"},"gitHead":"ddec29694b43ad855e23db3d990d1e1b29e627bf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-ddec296-202407261105.0_1721991989816_0.5774755236218005","host":"s3://npm-registry-packages"}},"2.6.2-ddec296-202407261159.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-ddec296-202407261159.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-ddec296-202407261159.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"debd2cce88c136a0be9e22cbcf333e8941915dc2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-ddec296-202407261159.0.tgz","fileCount":333,"integrity":"sha512-k4cnTnAGkAUFuy4afchBjhUIfJYKH8qv4qSANT9T3QvedkGMaUp2qze6+zFanw1jXoGThtcSI2WUhkWGUYwQ2A==","signatures":[{"sig":"MEUCIAMfzFcaa5g6TZarYXEp6IWnZVLPUqRrhLxG1xQFZjytAiEAySkzGfcckli48tc2Kbz9uDWF4t/MGnHyPrIFK4zdvwg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7520313},"engines":{"node":">=18.x"},"gitHead":"ddec29694b43ad855e23db3d990d1e1b29e627bf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-ddec296-202407261159.0_1721995246098_0.47496606828451493","host":"s3://npm-registry-packages"}},"2.6.2-b112c80-202407261218.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-b112c80-202407261218.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-b112c80-202407261218.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"19870ae4f1eed20b249d72b978738e95192e11dc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-b112c80-202407261218.0.tgz","fileCount":333,"integrity":"sha512-AByULf4RYhj5m6ac4phYuC4TLak7asDSC6nmBPN1aoEqzCSgei1Hi3LOr9JDweQJ9L1V3Fz/pWCOhN9ArsfSAg==","signatures":[{"sig":"MEUCIQC5KeRdUNI4Zp8TeXvm382W8km9Zs5kbLJzKmnBkFZHWwIgOCqDZsKuD1EjuD2G5MEPiUxdPa7RUXI0EINkJZep2i8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7520387},"engines":{"node":">=18.x"},"gitHead":"b112c80d08f2432769481341ceea573fd459dc52","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^10.3.2","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-b112c80-202407261218.0_1721996409362_0.1620647672021256","host":"s3://npm-registry-packages"}},"2.6.2-d2773bb-202407261327.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-d2773bb-202407261327.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-d2773bb-202407261327.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7f57af17ac0a8cb1eef7cd285bab2b0c504ede4d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-d2773bb-202407261327.0.tgz","fileCount":333,"integrity":"sha512-8sALb1eWukbs9FF5LXkfQ4on6iySlh4R0LbsZlhm4is37J/XlzeueFY7KsBU1n9/NcMuCwZ6Vore05mwloacWA==","signatures":[{"sig":"MEUCIQCHl7t6RRDgB4WGS7jWQ5aTFxc1uR5e4KuSnyLn+wcwwwIgHKR5qgWFCEaTjE5iumFrdGtNCOINYeA/bWbdvmVVMBw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7520387},"engines":{"node":">=18.x"},"gitHead":"d2773bb18a48759a8897d86f446c234d9dee92b6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","vue-template-compiler":"^2.7.16","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-d2773bb-202407261327.0_1722000519672_0.6720800886228846","host":"s3://npm-registry-packages"}},"2.6.2-47c6de7-202407261420.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-47c6de7-202407261420.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-47c6de7-202407261420.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"86d895d87125189f9eb8b7ee46034ed091b42504","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-47c6de7-202407261420.0.tgz","fileCount":333,"integrity":"sha512-Mx5BqI5Igs9s7SoWUapS8IxsXrB/IM7Bf/O9qfXfjPIaVLFjcY/vWxi033RiZYV4gaHKOuk+ax9IUXXkNFbs8Q==","signatures":[{"sig":"MEUCIQCJNLxlFYkSCjZCtqDUQMbA3UAykcYjK/Nt0B6NyhnO3wIgHm0N3DOvksr837a6TrcXhWyMY2evczsjJ89PclbOIAc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7520347},"engines":{"node":">=18.x"},"gitHead":"47c6de7fe4275f8023f04344176e4d9bb9b703b0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-47c6de7-202407261420.0_1722003708987_0.3409802323217923","host":"s3://npm-registry-packages"}},"2.6.2-3baa362-202407261548.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-3baa362-202407261548.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-3baa362-202407261548.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2978ad6e168ccc61a7b961c51e551587be1e4549","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-3baa362-202407261548.0.tgz","fileCount":333,"integrity":"sha512-u+wugHUeod9OchXWen7OIU8xRXDj2XHsE0bKBJe5lNGKSgdmoTUcmKL8QToJlkWkIQk/zSXA/1MLKfyh4ENPcw==","signatures":[{"sig":"MEUCIFl3b6unylEb9Cy/v9nKwLPOBK45u6aEtDrnbxMO10eQAiEAtOWo3HmRQhFXp5futkWYKl1vuayr7UESBDo/PMY5/II=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7520347},"engines":{"node":">=18.x"},"gitHead":"3baa362c4939e5c05715f324b005d8f469d97907","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-3baa362-202407261548.0_1722008978485_0.300899949891531","host":"s3://npm-registry-packages"}},"2.6.2-0d6d61d-202407291112.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-0d6d61d-202407291112.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-0d6d61d-202407291112.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0ed687966e0ec21e13c4b3a76380c56dca3e9da7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-0d6d61d-202407291112.0.tgz","fileCount":333,"integrity":"sha512-HeD0ChP9ousU2LlWNSvRJX5zHUslvnmFZ2AcG7XSr8Prb1OU/sr7PxvydV22OzVBc705CIVvsLUhz2swGjPh+w==","signatures":[{"sig":"MEUCIQDWZLvubp+YurdfeIr2swbVO4aTJKd2bfiUpxl8uirt4gIgXGgkdVvM2lilf0Aew4Xqla29e48qSiPZcryU6cItlsE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7520347},"engines":{"node":">=18.x"},"gitHead":"0d6d61d8b2ce5fc3fb366f42e9ce1110c5fd4ff4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-0d6d61d-202407291112.0_1722251620848_0.8956722448698962","host":"s3://npm-registry-packages"}},"2.6.2-0ac9eba-202407291525.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-0ac9eba-202407291525.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-0ac9eba-202407291525.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"76ef8332a7274fff426822826cdc0beb64dcf2fb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-0ac9eba-202407291525.0.tgz","fileCount":333,"integrity":"sha512-OlO3kPg+MLX/lEepcDz0JhW+2BigL+u4eUqoTeiqU0gpl62g60Li8ranvkPz+e4S3dMPV7OPGDxJi6+qRDzL/A==","signatures":[{"sig":"MEUCIBTRnOUc6ufac39HSTrfyjELEtT5LVJ3EtFMGMeRbzkKAiEApunOiCGYDQE7oSGZwKPhY0cEfsfcyP+PQnHe1c95fCU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7520352},"engines":{"node":">=18.x"},"gitHead":"0ac9ebad50c79cf7fc8423b47536b617a4a21a22","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-0ac9eba-202407291525.0_1722266811598_0.2621489571193436","host":"s3://npm-registry-packages"}},"2.6.2-559c6b3-202407300918.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-559c6b3-202407300918.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-559c6b3-202407300918.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"15d966942a4b6f13da8de006caf09c22efcf5cd5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-559c6b3-202407300918.0.tgz","fileCount":333,"integrity":"sha512-M5bn0b5dsb8n0vnfryDdVu5J6J2rkriaxKXjKdM2peImGgv62MdGZLHlXfCzAR1Etr5Ctk40nPa2z7p6Wq+i0Q==","signatures":[{"sig":"MEQCIBP8PI/99VWBxs2FGp0zH8B82dTgoah/0dSm54rCJ46BAiBLIfD0y1ZNDhP2pr6cf4j++mDh1VnbZ4D355fJnDnGUQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7528427},"engines":{"node":">=18.x"},"gitHead":"559c6b34a773d797672757f5ce7920baa498e2f5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-559c6b3-202407300918.0_1722331169881_0.18000599748218127","host":"s3://npm-registry-packages"}},"2.6.2-628c562-202407301049.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-628c562-202407301049.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-628c562-202407301049.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e9d7bc6e2f6a3527443830edb1001a1485edf1e5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-628c562-202407301049.0.tgz","fileCount":338,"integrity":"sha512-PPiR/xg9DRQUMrjQQe9PUo0eibfjbQSh17Ybwvr6X9bc5jhNJENAxYvBDOnJJpzPynU9qJIGAIb/7OxPa0d1fQ==","signatures":[{"sig":"MEUCIG0nux8iEA5kFVXPiLXcAuRjJHRO6wBfHcvXeNzL7nIRAiEA/GVwAIzcpGO/c9xXYFvmUuUVyTuNV74dIGOwDyeRdfs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7542591},"engines":{"node":">=18.x"},"gitHead":"628c562c19e43a9c2201e7c53af72284e2e225fb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-628c562-202407301049.0_1722336636816_0.42172933836587956","host":"s3://npm-registry-packages"}},"2.6.2-4f52ff4-202407301232.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-4f52ff4-202407301232.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-4f52ff4-202407301232.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4ca6b8176e87cff82ed6e36f1cda8d06c7babc3c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-4f52ff4-202407301232.0.tgz","fileCount":338,"integrity":"sha512-Um+388FAZEfnVUZgPddU50vMPgmpCXmP+GyFiUmeru6XqzJJl7kVbUE7y5IdXjFb/y2PeUM5jBZ054bDbvk7GQ==","signatures":[{"sig":"MEQCIBwTjNZvBwrOY/+kFI2oW+ywOTNZA3UI+qL5fR4aikeEAiBK3XKH2hErrujYg0unD2/tNohmkasCTkMgZdlvL1Q/iA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7542591},"engines":{"node":">=18.x"},"gitHead":"4f52ff423f5800a27da7b99063548f734dbbf0b5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-4f52ff4-202407301232.0_1722342819077_0.4743344181071918","host":"s3://npm-registry-packages"}},"2.6.2-fa831ad-202407311825.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-fa831ad-202407311825.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-fa831ad-202407311825.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c562bfd50cc071973b6b1d3043b19febc12a0cce","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-fa831ad-202407311825.0.tgz","fileCount":338,"integrity":"sha512-9h+okbr1fndmn9KhVqdbEDroBVJq5umQphXgqWd8SiZ4myHmv6343HQQ8dTfmd5TJQ3BYt5h9Ms7OUXk+Op0+w==","signatures":[{"sig":"MEYCIQDFMbEB1rvjed7D1LQEabDAwfJxPzpZrhDSq+/qFU652QIhALVcYqx9vcpMvLI2JLDyhUrsvd4LEMP8A+Ag8HPRFPza","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7542531},"engines":{"node":">=18.x"},"gitHead":"fa831ad9b90945318fc75a6be164fe66c5e3801d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-fa831ad-202407311825.0_1722450398497_0.8915060642711004","host":"s3://npm-registry-packages"}},"2.6.2-fa831ad-202408010830.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-fa831ad-202408010830.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-fa831ad-202408010830.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"45623b7ef3bf6478c9354207497b64001c23e3c6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-fa831ad-202408010830.0.tgz","fileCount":338,"integrity":"sha512-So7NkSeiIlpZv3YTM6qCYrD3pY0e4xbzrKUYmBI3o/BedQLecEy2AWZmAXfJ6j70imbF1LXcKN0kN0jRRhIjXg==","signatures":[{"sig":"MEUCIQCJBUwh4cB+p+c7ERbMEqh9XAZrZ6l2Un50XJNEP51v9gIgGWl+IB+tftn1MCdHHH2w0uZs5Ijr4If9J18TnmLPwzo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7542531},"engines":{"node":">=18.x"},"gitHead":"fa831ad9b90945318fc75a6be164fe66c5e3801d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-fa831ad-202408010830.0_1722501092366_0.6314001096084914","host":"s3://npm-registry-packages"}},"2.6.2-881fbea-202408010856.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-881fbea-202408010856.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-881fbea-202408010856.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c7f84b919914eec0c15277bf5014708fb6f5357c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-881fbea-202408010856.0.tgz","fileCount":338,"integrity":"sha512-o0pR1U4mMTGBXPNqhy7jd78EQMnvbCGl5tLB9zwhQLJWrnv7g3iMDmHKi27GMIMjhcGMFjw2aL9U258dBffcqQ==","signatures":[{"sig":"MEQCIGcnP7iYiNNJ2Yn8l+icIuJMTT8CgP6OBqgB8La4cVKJAiAK10HlGE8MecSphDt8Bmmoi3o45dsq/Ob7jRdMXPnXcw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7560066},"engines":{"node":">=18.x"},"gitHead":"881fbeab922a2ae73f510f538a4b3a1472aa0b7e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-881fbea-202408010856.0_1722502681558_0.324118452676847","host":"s3://npm-registry-packages"}},"2.6.2-881fbea-202408010914.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-881fbea-202408010914.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-881fbea-202408010914.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"59cae3803f93d7935a250ad5fc7f7f4eb5ad2fc2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-881fbea-202408010914.0.tgz","fileCount":338,"integrity":"sha512-CxRNvgiNfEomHXcumjr6jhiEGLMgSayBbYzmwd3+Pb5ymwA6lkDRUq2QQH5MzPmqGFlRVdKXlJbAZuE4oEQVWQ==","signatures":[{"sig":"MEQCICo6KRxhxCdiK87s7JFEyW68x225U5Qj9l+VoFHZ4lf+AiA0A6aGQHAURJwZFhksFjkHkX/mMBE5J0cgdLZSdYk9QA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7560066},"engines":{"node":">=18.x"},"gitHead":"881fbeab922a2ae73f510f538a4b3a1472aa0b7e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-881fbea-202408010914.0_1722503732311_0.7434551248923373","host":"s3://npm-registry-packages"}},"2.6.2-881fbea-202408010919.0":{"name":"@flowfuse/flowfuse","version":"2.6.2-881fbea-202408010919.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.6.2-881fbea-202408010919.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bb77e6142986b25829fe3189ce6795da86f9fcf9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.6.2-881fbea-202408010919.0.tgz","fileCount":338,"integrity":"sha512-5LCTm6tyQTIiaDUb2xfEvQd0jf1mhTwsO8EQOnACFllBvKF2necP+S+/KOiS6c+6bP5yJ135ZBfdq6HYJAhTbg==","signatures":[{"sig":"MEYCIQCWigvSLss1m6fh7zJGW77/pr7Id9duIUgbfX4Dig/BcwIhAJaHSpq7FtxPgBReoF9ZAONPqYTmb+C7XryKoYjCVhHj","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7560066},"engines":{"node":">=18.x"},"gitHead":"881fbeab922a2ae73f510f538a4b3a1472aa0b7e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.6.2-881fbea-202408010919.0_1722504011923_0.09203509717490421","host":"s3://npm-registry-packages"}},"2.7.0":{"name":"@flowfuse/flowfuse","version":"2.7.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"80f313e39d44e2ec8ad89c6ab151f034dc36d18a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.0.tgz","fileCount":338,"integrity":"sha512-FukUapeh8us9OBys4oMlX4lboXAGmljpdBZZzk/mjHdYBGjtzzjzCGVvnq/Z6lZ8uayAOTx7feqShpgvm2LVow==","signatures":[{"sig":"MEYCIQDZFQhHSsG5PuTr8A/vsc2rFWfk8YLT14jhGtlcEQ2yLQIhALarFiy2ZFpTeD3jU2AQVGVUKApspL13Fsa0jeb+qwks","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7562930},"engines":{"node":">=18.x"},"gitHead":"1d40342ec4b492ff8b061bef94b6c67223a5a099","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.7.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.0_1722505386413_0.6425825393826223","host":"s3://npm-registry-packages"}},"2.7.1-1d40342-202408010951.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-1d40342-202408010951.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-1d40342-202408010951.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bdf98756a50a8f06f6cadd53fcb886d3be9ce3ea","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-1d40342-202408010951.0.tgz","fileCount":338,"integrity":"sha512-DwNCwDM8sJd9I9L81e6oUc1mMP22biGpVfDyVc4ss9Rw3bqbUMZPQ6iLhKyVZEdPNqDIX8RJAgpl3s6skMu9Zg==","signatures":[{"sig":"MEUCIQDgG8uhg+FwtHVuAmDjbmiYkEDHU58mWDGF1NBngYpedwIgRRw9EmYX/f85/cN1l7GStwfhrEP0wE9+nojQNSdCxxk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7564923},"engines":{"node":">=18.x"},"gitHead":"1d40342ec4b492ff8b061bef94b6c67223a5a099","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-1d40342-202408010951.0_1722505935772_0.11145135940073869","host":"s3://npm-registry-packages"}},"2.7.1-a49845c-202408011104.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-a49845c-202408011104.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-a49845c-202408011104.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f0452c51ed541db64962116eb9a89a4059e2dbdf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-a49845c-202408011104.0.tgz","fileCount":338,"integrity":"sha512-OOMgKtTZ0csZ5mis1q0ha9nM+OBZWUd68bSyqJTFiT1HNalYLlj8OTp9c4em8f3QGWuplXOnJU55LJJQe1wL+Q==","signatures":[{"sig":"MEQCIEu5/7hcxL1ID9BODkFRn7/UAlXA838aLeRh26qmH2fbAiAzBHE4EO8zWunyJ/sgQ3tnQ1l4soNMaD98C+mW7DTbgg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7565681},"engines":{"node":">=18.x"},"gitHead":"a49845c368a8d83149968ae7b3de3817bf4f6aaa","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-a49845c-202408011104.0_1722510438222_0.7815772077226377","host":"s3://npm-registry-packages"}},"2.7.1-f18548a-202408020832.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-f18548a-202408020832.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-f18548a-202408020832.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fa42f439fe9c0f828827b1f63b45405e5808fbc1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-f18548a-202408020832.0.tgz","fileCount":338,"integrity":"sha512-PzVgRM2qBUWqNyhIMh5sw0j6YamkngpB/18ZYBo6WB/7kqDVxIBKfFCaaQQjvuD4TTGzSe5r+PTXk3w/QClqhw==","signatures":[{"sig":"MEUCIAngcCIjCasc+0HfOhSuL3i4I0RGeaC97V8qU72UaAV6AiEA9p9IKJ6IxJMuRkf2+j5FjRlF9Svucu0H6loBJTv4fOQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7565681},"engines":{"node":">=18.x"},"gitHead":"f18548aa457b1835071eea8568401f6177e61829","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-f18548a-202408020832.0_1722587646641_0.7599052067788061","host":"s3://npm-registry-packages"}},"2.7.1-c547148-202408021046.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-c547148-202408021046.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-c547148-202408021046.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b341c16ac285ce154b82148f6ee8043ab39ef59b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-c547148-202408021046.0.tgz","fileCount":338,"integrity":"sha512-h+lvFGObBRNLHlfKKBVjvNLBmOYTMWdy5j6Gl2g+B/GNJMMDRGxQL7RHm8EKSgKTF1t+CCKialZrUNlSDMhxUw==","signatures":[{"sig":"MEUCIQDI64krQLehiJHoJyLD9AdrKvcWM94WHR7yP8tR2R0a+wIgauzSiVQRzrIX+gDPM5xhan47YHubAhjY7UoHVRqARM8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7566080},"engines":{"node":">=18.x"},"gitHead":"c54714872c5722086c0dfb2a4682f44d34f034cd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-c547148-202408021046.0_1722595682816_0.8796619365557405","host":"s3://npm-registry-packages"}},"2.7.1-19f6fe1-202408021258.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-19f6fe1-202408021258.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-19f6fe1-202408021258.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fe65ad6c77eae8393161299a8a6bdbd09afe87ed","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-19f6fe1-202408021258.0.tgz","fileCount":338,"integrity":"sha512-PwK/W2C4LvRPEr2z3QKnOk1a5M7WjR+lPfywQuXEJh6fK2cgS72cReM6ePlO5sfL/vr4t/kBT14TdrC7UI5hUw==","signatures":[{"sig":"MEQCIFI1XzNGYrAnhl9DvmFVfkmWXNwMOabiJP6hNIDRisfzAiBGB0E9eYy+8j6sJCitsgSAbjmmcVb7Iu3xhF7w+UGJ+Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7566080},"engines":{"node":">=18.x"},"gitHead":"19f6fe139ac557344ae9218e33cba5ed35c19130","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-19f6fe1-202408021258.0_1722603568422_0.2648828471652027","host":"s3://npm-registry-packages"}},"2.7.1-19f6fe1-202408051434.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-19f6fe1-202408051434.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-19f6fe1-202408051434.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4e34cdeaa018d71ca7745ea7975c1286363fbb86","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-19f6fe1-202408051434.0.tgz","fileCount":338,"integrity":"sha512-NNqFH7Duyiy7rrAzNEmdyL8OGY6FCyX3/4T7mg+3jkRJWUXtamOltf3vgxGP7G/td5Tq/dlIT38XM+5l+BB11A==","signatures":[{"sig":"MEYCIQDhS0MEuu1DVXGhZpVKorkAZFcFtwlcDGlBv6bpemVDiQIhANB9v9GPysuaCz27YfLSi2QswrVzxou1XQcKktcI6hSO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7566080},"engines":{"node":">=18.x"},"gitHead":"19f6fe139ac557344ae9218e33cba5ed35c19130","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-19f6fe1-202408051434.0_1722868531007_0.24977446495324607","host":"s3://npm-registry-packages"}},"2.7.1-adc278c-202408060910.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-adc278c-202408060910.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-adc278c-202408060910.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"625a2dda5b65ea0cba9438b25160bb128fe9333f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-adc278c-202408060910.0.tgz","fileCount":338,"integrity":"sha512-1QBsohwkUhhaYanVRGhpHq8AD7X1+YQHul/mTIRw2nhl348MTkpKN0JOnnqiQ/a4j2itTjQ7L5j94zarAU9YYw==","signatures":[{"sig":"MEQCIHiKVAkHXCSYxu6u+ec5XiP4kmXjfcZe3uVBJe+TWX4HAiAlCD+9oP9doLFEPUqgWBGR90u7b+uSgzqP7SjMdOlJAg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7569781},"engines":{"node":">=18.x"},"gitHead":"adc278c9fe4fdd3811e7eb31e47023f4ab15639c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-adc278c-202408060910.0_1722935512950_0.019124346090628963","host":"s3://npm-registry-packages"}},"2.7.1-339a4b0-202408061058.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-339a4b0-202408061058.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-339a4b0-202408061058.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f12aebf11bd4c8fb3de66c20ae3e637fea12c0f9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-339a4b0-202408061058.0.tgz","fileCount":338,"integrity":"sha512-S7TgwYnyz0X0xeBD7GmALkCSXl4sy0MRg5RsR957pQosJIfXlW8catJrwQjOTkF51BpZC/QV3nDa72DkPX+E7A==","signatures":[{"sig":"MEQCIDQ4IPGzCnYbFW2r0tWVfpkEQcvzstbda18OAVngQfyIAiBHeeKVWe+GnFvr/P++4cH7jfLS/lC3pAGyUC67aLQdzQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7569840},"engines":{"node":">=18.x"},"gitHead":"339a4b0b1203ea620d6bc27cc809b48051a754ce","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-339a4b0-202408061058.0_1722942002630_0.8978864685786547","host":"s3://npm-registry-packages"}},"2.7.1-7d3e40a-202408061302.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-7d3e40a-202408061302.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-7d3e40a-202408061302.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d0733ea6b2393ee847af022234548d2b30c2b16a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-7d3e40a-202408061302.0.tgz","fileCount":338,"integrity":"sha512-YkPlHpB7m2VIxSH1NPSIucctwQkCJ1PeuUpUDPpLQvE7opHvRgYW9kgGc72KPW6gRdxpHY26aKVrTzsz64QZ4w==","signatures":[{"sig":"MEYCIQCANmUcQW+5CZ5ubjucArc+C+hHYcaeUupcE7Phr+QIpAIhAN4I8PNoGGk4O9Blm+U0zUrtSgQ7Tq+LmPGAS8BASChy","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7570070},"engines":{"node":">=18.x"},"gitHead":"7d3e40a304a19843e6e1af3f0b651a5f0f12dfc9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-7d3e40a-202408061302.0_1722949407098_0.8929816137159532","host":"s3://npm-registry-packages"}},"2.7.1-f9a4b86-202408061343.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-f9a4b86-202408061343.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-f9a4b86-202408061343.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"be6444e2b14043f8a63160708cd0c18ca058777b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-f9a4b86-202408061343.0.tgz","fileCount":338,"integrity":"sha512-WC2Mx6yiLgTjax1N2TyYnL1ESTnOtlOLIrq5As8Ic5HeABnWsaoisM8mVYOoE4SI3CDFipwVCYqXNvolnwVHew==","signatures":[{"sig":"MEUCIDDpvTxnmrJhbpyZuWKKL3pifmVYZou47iiEMoqdS93nAiEAmtKuQXv1zCLJHSly8aF9SBhIKYUC2UUK3ICJSQtI6vI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7784236},"engines":{"node":">=18.x"},"gitHead":"f9a4b86367752c44cf2a1ee365206d8b6b20272f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-f9a4b86-202408061343.0_1722951864731_0.02022791597122331","host":"s3://npm-registry-packages"}},"2.7.1-ee9653d-202408061442.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-ee9653d-202408061442.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-ee9653d-202408061442.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5d4bf8c9e313cca7231e19ba083928ec72fd7f0b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-ee9653d-202408061442.0.tgz","fileCount":338,"integrity":"sha512-RUo/nrQtElhTqHDwuTc7F+1+scMCxZw9KdPA8m40sM8YbOEjlSagPrh0yxY8UboSeZpvqasqk1hy3ZdouqCQ8A==","signatures":[{"sig":"MEYCIQC8ht7lnYbRlQutSn7OnEQkfKm4cxdKp0BAmU/wQrBzJwIhAN7dXApzsz/GuoFYFstu7vPZ7cwPBep7TjWMnE6+Opn+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7784236},"engines":{"node":">=18.x"},"gitHead":"ee9653d722243d14dc44b11569111cf6c062d610","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-ee9653d-202408061442.0_1722955389104_0.30510884083988654","host":"s3://npm-registry-packages"}},"2.7.1-932d4b8-202408061528.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-932d4b8-202408061528.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-932d4b8-202408061528.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"71c27288c13db8417b291aebff69c0e67b81410e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-932d4b8-202408061528.0.tgz","fileCount":338,"integrity":"sha512-GAVl6ZukR4dPkH0FfU2deHrNZKVPEsjK6BAWv7AIE33ZfKIcTZ/s1L99ps6JK+pUVG9HDh0Ba27X3B911qOvXg==","signatures":[{"sig":"MEYCIQDkq6sDD+/37iTxyFvSwLeg7bDwms2usUprAx0MUg4z7AIhAPblNr4RlCCZGLxkKwomqKOSM1xxUPuz78s4WfeRo+/1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7784236},"engines":{"node":">=18.x"},"gitHead":"932d4b8fdca2be8300da0b9aae88bccf7ee33069","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-932d4b8-202408061528.0_1722958157230_0.9953877136543088","host":"s3://npm-registry-packages"}},"2.7.1-4e0aa9a-202408070844.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-4e0aa9a-202408070844.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-4e0aa9a-202408070844.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"eb608aae87fd79df96c399cbbbc5a0705b6f5e3a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-4e0aa9a-202408070844.0.tgz","fileCount":338,"integrity":"sha512-8EwBOr/Rn1eM0V/P3kcM0kGh1YbKSaCtuxPbBDq2fwfOxQ+FSlFd30cL99+xhIBaqCitZhL494MIF1guuA6hrA==","signatures":[{"sig":"MEUCIFVfQ3sjDVYjfZpmRP7o39uiHLriko0O8Rr1UNamvtJRAiEA06MOuXNfYcJno+8jII71BVb+LQX4Aio34oQyK4arOrE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7784236},"engines":{"node":">=18.x"},"gitHead":"4e0aa9a49433c32a6a80ca12c516e94f04f308f3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-4e0aa9a-202408070844.0_1723020315636_0.5892703607970795","host":"s3://npm-registry-packages"}},"2.7.1-4899db5-202408071101.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-4899db5-202408071101.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-4899db5-202408071101.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3ac98f38b15f556d8d2cbb10ae53d7a2e1c27c1f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-4899db5-202408071101.0.tgz","fileCount":338,"integrity":"sha512-mzQ2BwH53MkPDcAO2wQgZetMiQDoGotSF7RcOWwMVIG81Ywd/ziSNml4MDpa51aaZlX5rlM3hjFa4y/Lp8VgRA==","signatures":[{"sig":"MEQCIGkdjmlINzjJx4CdyOnHyjmgTVwb2usBnj8lmnacYALbAiApFP04jRzhdWNLdV5E8/M/yuTRBi8vd72UGY0OYYj8kA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7786226},"engines":{"node":">=18.x"},"gitHead":"4899db58ec520c74f14fd4687f0068a1ee34c639","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-4899db5-202408071101.0_1723028560424_0.27153569635879826","host":"s3://npm-registry-packages"}},"2.7.1-cce4376-202408071344.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-cce4376-202408071344.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-cce4376-202408071344.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9a6d0cb16a2a72a9d6f387d715385f8e595dca97","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-cce4376-202408071344.0.tgz","fileCount":338,"integrity":"sha512-G1IshNH67XAXrkCzCLxXCWbXoyROo3GIfqPOgF2zVtFyh/Vw9Z/z/tWAY4qesrRuftxqqkFl0qTPZ2atb5Wxeg==","signatures":[{"sig":"MEUCIEnZjfn0Q9KTU1Kw9oHLynT/GQeRmlkzW+YbtZDoylckAiEAhNgftUxguw47+68swMdm+iVzUnDbyWgOz4rjT9+YBo4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7784960},"engines":{"node":">=18.x"},"gitHead":"cce4376153efd3d85dd20f3ee31a8f903e4cc718","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-cce4376-202408071344.0_1723038351438_0.1992305148241389","host":"s3://npm-registry-packages"}},"2.7.1-ef94197-202408071416.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-ef94197-202408071416.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-ef94197-202408071416.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b5a9fa9d75d371e6caedd6eb385fb2311ef7b94d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-ef94197-202408071416.0.tgz","fileCount":338,"integrity":"sha512-UenIXa5WAnj2LYjYPYmTYgInnli+A8ZShCVrAMvQtegYFIWb9ncua57pkUacx3wt7hGGSDn3/mZkfAp369fEGg==","signatures":[{"sig":"MEQCIDVvhkIgY84R6D9JUnV7tjExLy8QdpomwKuPAdUq8UwTAiAWsma9KKanFHH5d8/LUiJwnP0C9R1eL23vmdBBjwLQoA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7786064},"engines":{"node":">=18.x"},"gitHead":"ef9419718fb9ad029c4eed015b630dd4a127078d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-ef94197-202408071416.0_1723040257515_0.4870755552573989","host":"s3://npm-registry-packages"}},"2.7.1-cff3adf-202408080750.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-cff3adf-202408080750.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-cff3adf-202408080750.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b98af7119fb30eeda68a82954b756a2083f1b782","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-cff3adf-202408080750.0.tgz","fileCount":338,"integrity":"sha512-oxM7MsndxIZG31cBMJZls1bEAY94iT2n1NVz20sNVG8Ui8NeF1vb9LbgmJ+TOg4XMg8JhG4v2far0M4BIvk9Yw==","signatures":[{"sig":"MEUCIHvpHu5zlW0BNvGqhVVm7lkBjyuQpOMGlRS/Yp8Dd8NsAiEAnBcbJt7N0PnLa31hSeqqyiMEUwhfG7oAzaP3LV/kaRw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7786134},"engines":{"node":">=18.x"},"gitHead":"cff3adfca93e23758640a0753a116dca57a3668e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-cff3adf-202408080750.0_1723103485300_0.027558593854574376","host":"s3://npm-registry-packages"}},"2.7.1-e3867ab-202408080948.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-e3867ab-202408080948.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-e3867ab-202408080948.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"42da7699e7657bc67a5f727bc988c1f0651d8fe7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-e3867ab-202408080948.0.tgz","fileCount":338,"integrity":"sha512-GbDri4z8gakLaop7ramOryNr52rhGty2kw7oPIMOtfNfG3BlY5IO+/xlkWsgWnlgoveFNkDF0U21xZDN+lFitg==","signatures":[{"sig":"MEUCIQDswi6BhyHh3f9yKUmNh5aKhqhfVX15QQ8hDonuOI4g7gIgd5gX13SFNdrktUtfd7JMfO9uw9x27u28+cAdW24TrE0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7786134},"engines":{"node":">=18.x"},"gitHead":"e3867abc00856dc5e1621ce225862af9fcb3c14b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-e3867ab-202408080948.0_1723110582974_0.6200559183385519","host":"s3://npm-registry-packages"}},"2.7.1-552a608-202408081008.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-552a608-202408081008.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-552a608-202408081008.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3b4472da3938a25827d180a430f98ad52dab8aad","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-552a608-202408081008.0.tgz","fileCount":338,"integrity":"sha512-bl+hEQJ9xT6dIKIoXmWZqJa6adOhU9Kl7yocLdB9RC7yfSCMNwmifCby5kQzFnPwd0IPnKJu2KWAyozTbJYXUg==","signatures":[{"sig":"MEYCIQCgNzWh985Xp7zj216sE57U0BY5CKAVcxh1wREKXsso1QIhAMMaUh4QCfybJmpQ1yJ2IEaIkoWI6PXpYIYNtX5QFpPV","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7785687},"engines":{"node":">=18.x"},"gitHead":"552a60823a9de65a3d8234a7990471311a5d0a58","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-552a608-202408081008.0_1723111757227_0.7327950032692456","host":"s3://npm-registry-packages"}},"2.7.1-9787935-202408081238.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-9787935-202408081238.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-9787935-202408081238.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5b4db1aef66deb740a710e1a24060da1e2774725","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-9787935-202408081238.0.tgz","fileCount":338,"integrity":"sha512-fih9CFvrvfx45Pw3vKb5P31i20Z4/EpxrdV5u6s9ejR0gvTSU3J7xrcyCmTUFam7iKDCS9Jird985yxUPRNMCg==","signatures":[{"sig":"MEUCIQDjGkkQ9s4OXhyB6Y+dmRnjOYEvfkDnFzwZwClpo6kQOwIgE6iccVRqIT7OlNQmG3Y1cnyxh9G1G5gzA8A0r8dTZYE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7795239},"engines":{"node":">=18.x"},"gitHead":"97879353c9a0c6a9b832a6191db4699e83f298fb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-9787935-202408081238.0_1723120758843_0.47857783291695055","host":"s3://npm-registry-packages"}},"2.7.1-524b963-202408091317.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-524b963-202408091317.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-524b963-202408091317.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"828fe6133572bed101aa21bc0e2d8e9159afe355","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-524b963-202408091317.0.tgz","fileCount":338,"integrity":"sha512-NAVNvPnYb2D7JvM4O3x3JWl+NnYJM/8U61HNJhu5NJQkcYiIYCeiONOS9vOdGv1amBcQnmgg3nh8Q0IR0D60zA==","signatures":[{"sig":"MEUCIQDp0Cphn9GDCtkcCTbdjtz/R+tvS5+dgm13RSv9qKrP8gIgLZESglVvm+KtQmy+yExAlC4z5RiGb79dBD4tYpHeL/A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7800480},"engines":{"node":">=18.x"},"gitHead":"524b963d8fd4f0dfe97fcac6620f28492f2aa265","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-524b963-202408091317.0_1723209488421_0.606054269888481","host":"s3://npm-registry-packages"}},"2.7.1-bc9d6d4-202408091318.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-bc9d6d4-202408091318.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-bc9d6d4-202408091318.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fd152eaab8c27de56cba637d091026db30b6f37f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-bc9d6d4-202408091318.0.tgz","fileCount":338,"integrity":"sha512-Yo58fv9RBSHwIKLAtFnIgDXWABeevTB+wEvLhoxOro11dMYJU04yYerofQap7TbKUSpmAF9WbKhqznZYCjlmKg==","signatures":[{"sig":"MEUCIBNv3S9hrVXPbYVa6ZvblpvvljQFZJH4958fGoe6or82AiEAp3Bncm7boZqvTXGk3HSnzHwbCu3n1xCi3R7+diQG/Mk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7800480},"engines":{"node":">=18.x"},"gitHead":"bc9d6d47c5e2a40c7a1924fbe675f31ec65618ca","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-bc9d6d4-202408091318.0_1723209565530_0.9066297640279166","host":"s3://npm-registry-packages"}},"2.7.1-bc9d6d4-202408091325.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-bc9d6d4-202408091325.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-bc9d6d4-202408091325.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"712b86a9760ba214476d5139f953cc138f7137ab","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-bc9d6d4-202408091325.0.tgz","fileCount":338,"integrity":"sha512-rb4z3WM0z+jD36maRE3vVvbk6Q4WuyVRpT1zOUY+Uibq67MbnhbDaQgtuOKUuEK+pDF0iE3K8V2Z6HyvFmq2LQ==","signatures":[{"sig":"MEQCHwzLqytJDs2tJFt8MvNlP0qGliuodnWSGQHBF/YVQTACIQD84QnTD1Wl1bfGcxNAMzGIunRd6MSU8SjvruVNxoyVgw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7800480},"engines":{"node":">=18.x"},"gitHead":"bc9d6d47c5e2a40c7a1924fbe675f31ec65618ca","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-bc9d6d4-202408091325.0_1723209993747_0.37151313389194884","host":"s3://npm-registry-packages"}},"2.7.1-99ac40e-202408091341.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-99ac40e-202408091341.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-99ac40e-202408091341.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dce677b7318ff1e80899b30e05d123178a2098a7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-99ac40e-202408091341.0.tgz","fileCount":338,"integrity":"sha512-QMMKRdGwMWrCFkRyjmYYSYnPRhrescQyjbCcFa2NVDhJcQMueuj2D+VxxItqxz4EbEXWXwStNZGzHw2/NHBmHg==","signatures":[{"sig":"MEUCIQCvFuN+E832njZLekJWEpyBiYsJ1mnZ48omlNcD70mViwIgNsXMKE2OA8iBRlHlA40VOP+umbYfW77nO7wqosIkCjQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7800538},"engines":{"node":">=18.x"},"gitHead":"99ac40eedc9bcf3b1c3be59e6e752e8137e4bcf0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-99ac40e-202408091341.0_1723210930388_0.22751812873580346","host":"s3://npm-registry-packages"}},"2.7.1-bb8f0a3-202408121032.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-bb8f0a3-202408121032.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-bb8f0a3-202408121032.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6316051ed643f49f51d34cdb1b11a7a04cee4979","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-bb8f0a3-202408121032.0.tgz","fileCount":338,"integrity":"sha512-qui/YvXyM7NGYRDSOhL4Yc40IS/qxOY8w9k7z15axUj7uPnj+gU/sWQMniurqAImS1XsrdfLRdXMofXRDaRCiw==","signatures":[{"sig":"MEUCIFQbABwy6OaCVahTQDJSdnRzy7+PATS2s73hC+ALbxUjAiEAgqYhRGlz9Qc8PLuGL1l33QdKg/IrK5efzW1NYhLP7Xo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7801931},"engines":{"node":">=18.x"},"gitHead":"bb8f0a3655a73c3f0e470e9145b52fab15413fe1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-bb8f0a3-202408121032.0_1723458792321_0.6713577421448815","host":"s3://npm-registry-packages"}},"2.7.1-acaaaff-202408121641.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-acaaaff-202408121641.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-acaaaff-202408121641.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"65237d902976bfca49d02019c123c5bc416864ba","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-acaaaff-202408121641.0.tgz","fileCount":338,"integrity":"sha512-mNN64yhdBu7+zL91s5Z0S4csWtQkqFgibuSKivGp9N0ryV/t1BePQSCHUlbfGPV35MBmaE96d/lk1XylwjBOhw==","signatures":[{"sig":"MEUCIQD+crtX7Le+pEUNJz7LF3bLqGcFCTvRTd/e8DAEGag3mQIgEgLc+mubeEiTtFKGAEUz5YkAfWGIYVy3GwWqAPPdN4M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7828571},"engines":{"node":">=18.x"},"gitHead":"acaaaff53031c0d84c76db907a4ce3202bbab04f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-acaaaff-202408121641.0_1723480974604_0.39489993584322214","host":"s3://npm-registry-packages"}},"2.7.1-4daf879-202408130932.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-4daf879-202408130932.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-4daf879-202408130932.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b310cfeba3b819371f7d998389f3be65682e17d6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-4daf879-202408130932.0.tgz","fileCount":339,"integrity":"sha512-/pjVujgq33AZcLbJIaCr4NGVAyKdUsNpivU6LbiDiRzWuZNcCfmpHwC1b+l0jZTiRQrvpI/nLUjwYlpQa3+eZA==","signatures":[{"sig":"MEQCIG4s/z0+V9KF5Qq/eemdnDhdUPmnfF/cLUpfb5CNokmcAiBd4PnyRGNcfQb1gKjqXN/rYlGtBJFw9AFkT3D69xIcVg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7829931},"engines":{"node":">=18.x"},"gitHead":"4daf8792ca3982176bef86f0e96d71f3ff154f6d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-4daf879-202408130932.0_1723541590180_0.47473140331344177","host":"s3://npm-registry-packages"}},"2.7.1-4daf879-202408140933.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-4daf879-202408140933.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-4daf879-202408140933.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"935d5e0481a638b99e08b1f539d94684c6bd6643","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-4daf879-202408140933.0.tgz","fileCount":339,"integrity":"sha512-gZ/uCjA5gTJw3UgYeCcSxX3vxRqwoe5gEiDOa83EJrvlysGRFsuseWup9OerygRYQFbL/2ks09A8nSn2PkJIVA==","signatures":[{"sig":"MEUCIQCpiDobdp79Bfy1rd/iJm2fra/PUgkshMqlrxq/ySHpjwIgHlP7bAror/Rk/8HORDJfpjOaZaJPx/J9yyWHjxAUcQM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7829931},"engines":{"node":">=18.x"},"gitHead":"4daf8792ca3982176bef86f0e96d71f3ff154f6d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-4daf879-202408140933.0_1723628052144_0.47429183912440864","host":"s3://npm-registry-packages"}},"2.7.1-1818cf0-202408140936.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-1818cf0-202408140936.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-1818cf0-202408140936.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f65b3a9052bae7c93ad533cbde903dffa76ff339","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-1818cf0-202408140936.0.tgz","fileCount":339,"integrity":"sha512-a+OiaspsP6TQcJHaanAzexLFcq5PSgROWR2s+EowetRRWWllxWU34OlCOnWAvWlqd4DOGaUlGvu9OnTKn8sNjA==","signatures":[{"sig":"MEYCIQC8dLV2dZW12hNBw+GlWZsoFuZ0+l5sMAeP7veL0Jq+vQIhAO47SB4OlZlLKwQPsTqiOWtSEuzUiNZS2AWSqE0aFY6E","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7835215},"engines":{"node":">=18.x"},"gitHead":"1818cf0980a063ee7f2592fccdb3cc8b41b7f729","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-1818cf0-202408140936.0_1723628246072_0.8919104401347657","host":"s3://npm-registry-packages"}},"2.7.1-1818cf0-202408140946.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-1818cf0-202408140946.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-1818cf0-202408140946.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"60a3a9eb548c0f67420fd98839c5c908f57d3e76","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-1818cf0-202408140946.0.tgz","fileCount":339,"integrity":"sha512-OflaLHsfsXSuewdI4tTck7WVCEM+ZmQSCc/BL5AxKdMlDj+L7bjoEAEEc2yhpIEOh/o3se4AgGjVjaqtrFEn7A==","signatures":[{"sig":"MEUCIQCR/FM8kC4+Hk52zTG04h9hOJtp7jdr9O9AbapwQ5sH5gIgIj3CEc2C6ahPS8hvp6H/yVrGZMgVgTUU4tLI+pyGp8o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7835215},"engines":{"node":">=18.x"},"gitHead":"1818cf0980a063ee7f2592fccdb3cc8b41b7f729","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-1818cf0-202408140946.0_1723628828400_0.3150213326646376","host":"s3://npm-registry-packages"}},"2.7.1-dfac073-202408161315.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-dfac073-202408161315.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-dfac073-202408161315.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f33872579467e6f43e6bf11bb13562ba19e697e1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-dfac073-202408161315.0.tgz","fileCount":339,"integrity":"sha512-OLFqfh12ucMLh+6WpQFIuAsEAiNuprL/2iTX2Crh73bOkpRwojOS5chuCyqjLHZl37D7mAKFqtqzfbdUgvGCCw==","signatures":[{"sig":"MEUCIQC5aaJefTHKlmqZ13udcUVVrw2gwdNRJ+Ic2GwK7clcXQIgELiZzfwjLl4oL4epy0KWJzEEr8g+R/jQXZX9z3V6bfE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7837277},"engines":{"node":">=18.x"},"gitHead":"dfac07351c36272c4adb8913e886d33dccf8de55","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-dfac073-202408161315.0_1723814193973_0.7885328018781459","host":"s3://npm-registry-packages"}},"2.7.1-dd070d7-202408161355.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-dd070d7-202408161355.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-dd070d7-202408161355.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"beb005c5510c1afee32bcb836943c88eb3af0b8d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-dd070d7-202408161355.0.tgz","fileCount":339,"integrity":"sha512-cXCQFirRQ34NQL27n2Fod85HIRm9NOM0Fmu6qUkHeDCWhzVHIqrYZl+yr5yGpXtuYLl1YGy3m1/SV8SzsTVfvA==","signatures":[{"sig":"MEYCIQCewiM9Okjb2YnShM3+dprhQAhQz8ZQ6jaJsTMCcmE0zgIhALTp0lt0QPlEivDYtyJxXLa1/zHiS6zmLY3QI6Aa3cwz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7899949},"engines":{"node":">=18.x"},"gitHead":"dd070d710674511034cfa999a51878d3149599d0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-dd070d7-202408161355.0_1723816576112_0.28306792898170974","host":"s3://npm-registry-packages"}},"2.7.1-782c37a-202408191020.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-782c37a-202408191020.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-782c37a-202408191020.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2921c0cea2c94b426f393e5b2ca6828fe0295bd4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-782c37a-202408191020.0.tgz","fileCount":339,"integrity":"sha512-yqF6yJ4Ne+lxNE4Uk70xQzblZsmH+MSIEYBFZ7/xfikyP9L4mxz8x6/x8kuOheX0+6JV/IRgvhk7GBXobJoMBg==","signatures":[{"sig":"MEUCIQDivLw/6tW3uYmtjhQiwRe2oiExC+3hd0dP51FZkt7NngIgKjE8onDM4eSVqvAG/r/M7Sitsnt2NB+wxN3PyAf2Wjg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7899949},"engines":{"node":">=18.x"},"gitHead":"782c37a116ecdae77f8ae8461cb014e87d995edf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-782c37a-202408191020.0_1724062878095_0.11555680421622538","host":"s3://npm-registry-packages"}},"2.7.1-782c37a-202408230937.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-782c37a-202408230937.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-782c37a-202408230937.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5ccefc77e633a83718feca030176987360130a88","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-782c37a-202408230937.0.tgz","fileCount":339,"integrity":"sha512-bLSwY79eLPc+0JlSNdNACg2ZXkC6CUt+1PD4hTYye21ZyDrBw37wfvKlCc7uAA6qt0kOR/iQQE1+xwRdBCPGew==","signatures":[{"sig":"MEQCIGlZFMUxefxGU9VmPYd6N9W3o2NES5n0ccgc4mlhclgEAiBLMBtTr+/j7PGORsIUyJ5ET7f7L17WxYIddp4mm4l1tA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7899949},"engines":{"node":">=18.x"},"gitHead":"782c37a116ecdae77f8ae8461cb014e87d995edf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-782c37a-202408230937.0_1724405920718_0.5012820928404671","host":"s3://npm-registry-packages"}},"2.7.1-ec7b0fe-202408231552.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-ec7b0fe-202408231552.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-ec7b0fe-202408231552.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"95cc45cb17bf968e494b2e3671485c19eef891ce","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-ec7b0fe-202408231552.0.tgz","fileCount":339,"integrity":"sha512-kvhqS9KrpvzL3K7o9xXuVBykLIHYkHKhMvpP9lC4RUACtSaShL5L5TQFyrmZ5x0kV+75NInB2q174iOCzTMXpA==","signatures":[{"sig":"MEUCIBfg4XWK4DCUPlz5Or+Rcgv3J+P+uyRk/rgLMnNx5Q29AiEAr/n6vybBOd1lmx5UbBemwR069HqOFcSEfiID/UEBIl8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7902307},"engines":{"node":">=18.x"},"gitHead":"ec7b0fed7c7e343dcbafbbc4cb53817ec3f9b920","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-ec7b0fe-202408231552.0_1724428427923_0.09031901166484047","host":"s3://npm-registry-packages"}},"2.7.1-53be495-202408231555.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-53be495-202408231555.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-53be495-202408231555.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"25bf324debfa94d2a096159a95da13df005291fb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-53be495-202408231555.0.tgz","fileCount":339,"integrity":"sha512-f8c8f4PPa71jDAga1iktDBHH2eGof7T8GEo+H/zpuo/zs6jzSQMftQOBeP/Su/GT36yzgF9so52HKfg5wIDs8g==","signatures":[{"sig":"MEUCIEcWqWrCf5Sfs9DWvWewH+P2HuAQ9Bov57stKmeSRmxeAiEA37btCqd58YE7rPc4EuiB4rYduKQ0xtg2EvH6n4pyn5k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7902307},"engines":{"node":">=18.x"},"gitHead":"53be495a86941c0fbd938fbee0433ec00d075a9e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-53be495-202408231555.0_1724428566650_0.825724679270702","host":"s3://npm-registry-packages"}},"2.7.1-8f23297-202408231610.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-8f23297-202408231610.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-8f23297-202408231610.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c841fe4981f635f0fc0ce55e1f1a370178da1bfe","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-8f23297-202408231610.0.tgz","fileCount":339,"integrity":"sha512-MXYrCJ/5+dS1mMwvPaufg6hAnV041W+qboH5uXWkQjDStTcN6owj7gxSbRXDIWTiFF6Q8v36+Xg0Cjr4XupYVQ==","signatures":[{"sig":"MEQCIH3rDFe0sTtEscdT1wV0qQCXGM2EF9zGtEgg33BZujeWAiAMk0dNiGnMAmAUQEzllVMBCHETKYfqg5VnlN1FzLQozw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7911917},"engines":{"node":">=18.x"},"gitHead":"8f23297e6635729fb4c09c51d242c21de06bdb1b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-8f23297-202408231610.0_1724429473738_0.9492212542905707","host":"s3://npm-registry-packages"}},"2.7.1-87e8be6-202408231627.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-87e8be6-202408231627.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-87e8be6-202408231627.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"95f45fe2f6e11a664e7f95290a4c6ffa5a4e9894","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-87e8be6-202408231627.0.tgz","fileCount":339,"integrity":"sha512-n4NLMyO145TjSZSR5AkM1morQY2UqkPIk33y2jYOFvvWC2sPZEzaw3bLBUbRTFQrEZLoGNNDQCw4t9m2Sxlpgw==","signatures":[{"sig":"MEUCIQCkFIkbnPQ0hhLQnVIBnjoCLspNIx6bCwh71ILB/p4RhgIgCMfeji1ePvaSxXJFu3yVmI5RV/6om8hgR/boSLAS0pE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7914758},"engines":{"node":">=18.x"},"gitHead":"87e8be62721c74ddb1dea5331bf199a4219ee012","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-87e8be6-202408231627.0_1724430543611_0.19084249195911185","host":"s3://npm-registry-packages"}},"2.7.1-87e8be6-202408231636.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-87e8be6-202408231636.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-87e8be6-202408231636.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"74b5cb86d07fbc6c24bc865cee61479d8fbd6ee5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-87e8be6-202408231636.0.tgz","fileCount":339,"integrity":"sha512-t6VX7k9jU8W1G9/bmZYXVnZk15gnn+KGFieAfM8ja1uysCGq7JJR58ChJx7KuWs07KtHA1L3lUSF/4AJRg7X1g==","signatures":[{"sig":"MEUCIQDVflXbuAKYANLT+tcp/sGtntQdFDFORKhRY02WfIGUZAIgbSu0yWrq2JGaQceCnRcmjGxOXai18zLczbCu5MIIl/M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7914758},"engines":{"node":">=18.x"},"gitHead":"87e8be62721c74ddb1dea5331bf199a4219ee012","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-87e8be6-202408231636.0_1724431028555_0.46684944744251733","host":"s3://npm-registry-packages"}},"2.7.1-1d1f9ae-202408260907.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-1d1f9ae-202408260907.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-1d1f9ae-202408260907.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8f82902dd4aba5bd417b380f651f62d5c13e9f73","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-1d1f9ae-202408260907.0.tgz","fileCount":339,"integrity":"sha512-pmkXY5BnA2NZ2S4WJc2W2gPsKKqjeEWCzWImKc0Y/8bNAfOli10m6mB13ZQdrfqHaFiWW8Z8Igk+Q+Av6E1lJg==","signatures":[{"sig":"MEYCIQCwaB9HZ4ogCMPzTlwNbcCFlW9gIJ3UALqHB0iiwj3gWAIhAIKk/rfxcEpJC14rN7e19jWFebx+RabMBMFj6Gyf2NwD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7914758},"engines":{"node":">=18.x"},"gitHead":"1d1f9ae53cb0df27d33078e62cc771053c835343","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-1d1f9ae-202408260907.0_1724663301492_0.28071188200540287","host":"s3://npm-registry-packages"}},"2.7.1-572e808-202408261026.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-572e808-202408261026.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-572e808-202408261026.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dfb37b2c9ee7f452b87a5031485a6b123858c08b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-572e808-202408261026.0.tgz","fileCount":339,"integrity":"sha512-L3APSSXHLkcuHw4i/lJwA7T8uazGmPCf+WpdwLBeQfjpgik0/AwAH7/pHuNjDWPvLPXRxxhnucFmKeScKL0Erw==","signatures":[{"sig":"MEQCIBqk11RS1lhUPaJeXY9TBI2155rSpSkRLg52/y0zDsrbAiAnWMmgAUHQIjzHY86v26Dpm1lEox1Aq6msu5sf9QI1tA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7914758},"engines":{"node":">=18.x"},"gitHead":"572e8083a9557e879509ac86506305f8a12237b2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-572e808-202408261026.0_1724668032181_0.21235016157883835","host":"s3://npm-registry-packages"}},"2.7.1-7cbaa77-202408271346.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-7cbaa77-202408271346.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-7cbaa77-202408271346.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d2ecb08ff6bbea76dca73be8a1a253845db3d77a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-7cbaa77-202408271346.0.tgz","fileCount":340,"integrity":"sha512-2omLHIEyFrCBO1Lt0YF4Gaz/YBVJsPS5rX2j3nWSbEIeqQ1Qn1trl4y5aTp47XRM2xSz+VSFaNWp4DMuFwsEBQ==","signatures":[{"sig":"MEQCIGbpsTLmBHp8Miq2aGug4D1F/Kbz04tvP4PpMg4EDl3NAiBGM16OrY7WNkY8uIoBIx01k09tuA5YDunbasPDqPH/Hg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7915815},"engines":{"node":">=18.x"},"gitHead":"7cbaa77a9e99c51bd6cc6f769ed8d94a0d51b4c8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-7cbaa77-202408271346.0_1724766433242_0.7026088642805064","host":"s3://npm-registry-packages"}},"2.7.1-10116ef-202408280845.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-10116ef-202408280845.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-10116ef-202408280845.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ca5ecacbc765f1355ab98cd395ce8d3fbd4936be","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-10116ef-202408280845.0.tgz","fileCount":340,"integrity":"sha512-D7k1R8cr1UDyuuYouo0uKo1/LA6omkWpI/X9aozkKK43TCaXyFkeLjRCliWwrUXcreu69iEx7fboazWworQ4KA==","signatures":[{"sig":"MEYCIQCidoD85bTvK/lKR6u4l221ixcql2wnAfOn6C+2ikNw+QIhANjeV4bovPdtQ5m5zw6pcfLfK5d324PFbINcnV3nOEqQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7919807},"engines":{"node":">=18.x"},"gitHead":"10116ef7dffe92004568357bf7797fcb871f31a1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-10116ef-202408280845.0_1724834777604_0.6386520836581238","host":"s3://npm-registry-packages"}},"2.7.1-75766c3-202408280902.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-75766c3-202408280902.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-75766c3-202408280902.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"da58a2fc3b90f1758d2440529f91ed09318b52bc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-75766c3-202408280902.0.tgz","fileCount":340,"integrity":"sha512-eSi/GVPnWx3ngpKyZRUNSmUvPoFFp+kqYhCXGvsmebMXww0J3eAvD5IJa/CRa2MR/DS9h97NNaherdQJ0kF8mw==","signatures":[{"sig":"MEYCIQCIuhh1D4Sz9dVSQ8HY5IOIhKJNyROkELGRNmkxmQGbxwIhAPB6eAJBHlnvsrRS+11ACM8vS/8Abau3HqSF7CTr3YKE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":7919884},"engines":{"node":">=18.x"},"gitHead":"75766c3b39af0716c9978672e32913bc601093b8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-75766c3-202408280902.0_1724835833579_0.7828467832787851","host":"s3://npm-registry-packages"}},"2.7.1-8c97fec-202408281010.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-8c97fec-202408281010.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-8c97fec-202408281010.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c8812740abb9ac38f157636697136e2e568b3cb3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-8c97fec-202408281010.0.tgz","fileCount":340,"integrity":"sha512-H35SBnrZXWfAcYNjVL7HwzLTcCVXrLuL4hYNExxNapHDlg6aMIFMPxb1Zfs3GTeS0HPNw3BSZSYBCo4D43n/eQ==","signatures":[{"sig":"MEUCIQCf9g9Za/2905RzBsnWLrU98Zl2c8uKdjlkdy84256qoQIgBKe4KorRcM4jh+4Q8boLQJtCjEhBCG+FHIal5TkmV/M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8024962},"engines":{"node":">=18.x"},"gitHead":"8c97fec12872d06bfc9c98c0f6153407004483c8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-8c97fec-202408281010.0_1724839876278_0.43625557662609427","host":"s3://npm-registry-packages"}},"2.7.1-8c97fec-202408281042.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-8c97fec-202408281042.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-8c97fec-202408281042.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8644bffbe624c885b8dab025519bffc98adec025","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-8c97fec-202408281042.0.tgz","fileCount":340,"integrity":"sha512-k2z/DP+819vc7eLAu2Ds394YvtRAE0lbf5FY3SC80ZWZdORnAGHWYMWDT7l7cA6BRcEsyCaMXfpnIqSVuNWc0g==","signatures":[{"sig":"MEUCIQDPMbbGGE6UFYNDROJ0gZuy14+L6vWCEmbxgjGyPogKvAIgO/Lgd9a4e2GV744azSkZrXG/7GESlepGR3FHWXbDomw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8024962},"engines":{"node":">=18.x"},"gitHead":"8c97fec12872d06bfc9c98c0f6153407004483c8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-8c97fec-202408281042.0_1724841797283_0.018438940422569994","host":"s3://npm-registry-packages"}},"2.7.1-648d717-202408281355.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-648d717-202408281355.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-648d717-202408281355.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"97f1b4c9912db2cb00edf07811a9a5c847df7726","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-648d717-202408281355.0.tgz","fileCount":340,"integrity":"sha512-V56mNKpe8jc1YGuCvg0JuLYITQuo5qB6ZjFEBqaUFinnPyMCb3+n3VzrnD7OG5lOIF46H9qzL+nzykqJeWumbQ==","signatures":[{"sig":"MEQCIFxHsI9UZGZyaVSFC/8WAcL7o0wiUzSkM12upt+W+lAVAiAIIwMVmCI1ERrML6MHHTytlBkbFHti2oPXakiK4CyOEA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8038388},"engines":{"node":">=18.x"},"gitHead":"648d7176126d2ab2ea1513f52c15057a0dee8249","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-648d717-202408281355.0_1724853373604_0.8310811736420372","host":"s3://npm-registry-packages"}},"2.7.1-648d717-202408281640.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-648d717-202408281640.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-648d717-202408281640.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cb8779a4c22039dba0314bbbb2a2ccc2ce9e4f90","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-648d717-202408281640.0.tgz","fileCount":340,"integrity":"sha512-/UnA0Lv7/Gwzsunnk8pKwSgQ+Rt5rLj7XGuZl/xJ9v1uFEVY2s/AVfHcsJ/zeVvE1KNWMsVBI/fvOQaxgB2J9g==","signatures":[{"sig":"MEUCIFrityzohcoq+oPDGq5caEnzwG3Xi8iwoA/0mAtNs9DhAiEAvVZxbxdS0rorBDnjA+EW53l8mjRiIGXVlzeVGAhmBds=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8038388},"engines":{"node":">=18.x"},"gitHead":"648d7176126d2ab2ea1513f52c15057a0dee8249","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-648d717-202408281640.0_1724863325467_0.47600592530306085","host":"s3://npm-registry-packages"}},"2.7.1-648d717-202408290830.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-648d717-202408290830.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-648d717-202408290830.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5b68398e0c6983570ed242977386d0c9474913bd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-648d717-202408290830.0.tgz","fileCount":340,"integrity":"sha512-KfcyZC597kmbM2PcF/I2Nb+W4XHVAn7Z3KoUp1hxtefgQrzsZTVX9ZuAukOhiowBsrES4L6atHOoeAdu2G/szg==","signatures":[{"sig":"MEYCIQDbxKR8Bfg9VL3SjvueGNMZ1y2DMsI2xo4PQnv766W8cAIhAOmg895aeijbPs29aOoeNI9JGn+ubFw/DaA67DS5qGX+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8038388},"engines":{"node":">=18.x"},"gitHead":"648d7176126d2ab2ea1513f52c15057a0dee8249","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-648d717-202408290830.0_1724920271882_0.48979376088236015","host":"s3://npm-registry-packages"}},"2.7.1-648d717-202408290831.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-648d717-202408290831.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-648d717-202408290831.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"17d196b1881357de7b22d68d54085e685e083c42","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-648d717-202408290831.0.tgz","fileCount":340,"integrity":"sha512-0XiTHTYqacBUoV8Mq8ZYxh3LeQF8SYeoCnvPgBsoeeJmW6Ycylv5cvg67EPI7FgwiJnIjJqjC3/lqKib2B5e4g==","signatures":[{"sig":"MEMCIHeH8hnzjn41Dbp22oCCwsc2MNgfYIRqC2fbwn8L6DZ7Ah9SkUptKfhMYSdCsRR1/hIfp5ytfwR2YqWKRccQZ56q","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8038388},"engines":{"node":">=18.x"},"gitHead":"648d7176126d2ab2ea1513f52c15057a0dee8249","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-648d717-202408290831.0_1724920373961_0.7863182425489246","host":"s3://npm-registry-packages"}},"2.7.1-cb2ec53-202408290906.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-cb2ec53-202408290906.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-cb2ec53-202408290906.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ae04ba0532d4f3479abb116505338c7863fd3657","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-cb2ec53-202408290906.0.tgz","fileCount":340,"integrity":"sha512-MeaBtxjmgwurWix9Bn0zANC5roYhMHZLc3hn96DsCn/K4DR2WyhTdWt0Ndyfbdd/1MWtZM1+76gMDdjoItdrfA==","signatures":[{"sig":"MEYCIQCsmomzDbS23Z+QcsbKeaJTsjyLUlgHgJjge5ccABviXgIhAK2KHaoxfHlZ2sC24Y9/RH32RgEoMBxF68m1SsIQYR4k","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8038830},"engines":{"node":">=18.x"},"gitHead":"cb2ec535844acee89b08f6ae04bb6ec0524888ec","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-cb2ec53-202408290906.0_1724922457696_0.482330064594892","host":"s3://npm-registry-packages"}},"2.7.1-cb2ec53-202408290915.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-cb2ec53-202408290915.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-cb2ec53-202408290915.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"251df5e8ae0291cfb644a67328b714a78bde1a07","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-cb2ec53-202408290915.0.tgz","fileCount":340,"integrity":"sha512-LxrNWWMcr/zEJMQtmjoOmyZhib9w7MpzWGzsrNZsGfLYXGTXGh4fILdqfGeO5sQFfFcuQSLRo8AUyST7k6L4zQ==","signatures":[{"sig":"MEUCIQD+cZvXty+R7A7fELG44vM7Fkmnx3l8zVTVsxNfQZtANgIgBU8ATvFy+nTCL522W4ydh3hdpoKZgluDh+cl9vxHwrk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8038830},"engines":{"node":">=18.x"},"gitHead":"cb2ec535844acee89b08f6ae04bb6ec0524888ec","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-cb2ec53-202408290915.0_1724922986644_0.9417336776252456","host":"s3://npm-registry-packages"}},"2.7.1-7dd573e-202408290941.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-7dd573e-202408290941.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-7dd573e-202408290941.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fd20120abee5741df0dccae6fa3d9a05dc67e518","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-7dd573e-202408290941.0.tgz","fileCount":341,"integrity":"sha512-Plx8wxvgIYxGJ8SiLbauknlVK+Tohb/02brMrHptZNeQ8KNvhJ+XvYMaMZCGlKO5zzg+IuwB8CUUOZMaysPgjQ==","signatures":[{"sig":"MEUCIQCf4ok+fpz2SdUGic25c59ed13mYqTobJRrCkFaCERBXgIgFUuE8S9m9JsHSuqZj9LVDwhcx/QkFQ6wTHdfuYt+AV4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8097055},"engines":{"node":">=18.x"},"gitHead":"7dd573e5ceb851e99d0047df0db67f4e8d6f9ec7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-7dd573e-202408290941.0_1724924565761_0.4169941270926836","host":"s3://npm-registry-packages"}},"2.7.1-7dd573e-202408290946.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-7dd573e-202408290946.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-7dd573e-202408290946.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"12bc12efe35d661202877f7f237f30de7cd96601","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-7dd573e-202408290946.0.tgz","fileCount":341,"integrity":"sha512-HLvHhRTpGbka0fOcvKDX7LioT1tK2Dot0epziMe4Pb/gLZocpEDiED+KpKEvqJXfPgnZrQYGNohyIC+iWr1LDQ==","signatures":[{"sig":"MEUCIQDHIiFbBN5oePa51XCNub9M/0pLfYPvo0y5C+8PgCK72gIgLm+6OSZ4UXoB/yREkf3U/NZCFfxqIZNYSssSBoN26HU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8097055},"engines":{"node":">=18.x"},"gitHead":"7dd573e5ceb851e99d0047df0db67f4e8d6f9ec7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-7dd573e-202408290946.0_1724924825679_0.45196334712952235","host":"s3://npm-registry-packages"}},"2.7.1-7dd573e-202408290950.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-7dd573e-202408290950.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-7dd573e-202408290950.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"13e943a73dfd4cbcc43c11c5ce8a2120c794d410","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-7dd573e-202408290950.0.tgz","fileCount":341,"integrity":"sha512-wVq18Dt99g6YSXAGC7xh47cH8s6hLo1727X1D18cN79TWOw0ATcWy10qazIkuSTqh3GwOgaI/1fqiOuDCxM+Iw==","signatures":[{"sig":"MEYCIQC0ts+AJRPh4Y9awzDc64pIKU4bbxIJGGiETYfhLU/IxQIhAM9P+cWMcpgfRwpFxLFTe28VYWP83NqQkC5NGDVqLW1c","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8097055},"engines":{"node":">=18.x"},"gitHead":"7dd573e5ceb851e99d0047df0db67f4e8d6f9ec7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-7dd573e-202408290950.0_1724925069908_0.4862748129169778","host":"s3://npm-registry-packages"}},"2.7.1-7dd573e-202408290955.0":{"name":"@flowfuse/flowfuse","version":"2.7.1-7dd573e-202408290955.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.7.1-7dd573e-202408290955.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"079ac73de5a66cfb08249a6d6734c56938dfdb57","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.7.1-7dd573e-202408290955.0.tgz","fileCount":341,"integrity":"sha512-0KOB+EnJpPt+PYbINkyEX8C3Ms9hZB5um/kvDqMpa5rWYvzDk5LJEcYOONaF4ud0vIlxoC8ISmxYN0CTfbVA2Q==","signatures":[{"sig":"MEYCIQDuiCHREKx7+ojept8B5qDYJOJMt3FkaIsmnAQLKby1xAIhAPVHBPBrjNclxzKQk1NIQ8u1ffWEOarFEmiy5tmR+1q+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8097055},"engines":{"node":">=18.x"},"gitHead":"7dd573e5ceb851e99d0047df0db67f4e8d6f9ec7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.7.1-7dd573e-202408290955.0_1724925404886_0.34136882210189223","host":"s3://npm-registry-packages"}},"2.8.0":{"name":"@flowfuse/flowfuse","version":"2.8.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e3419f005fe1576e9ed2ecd66ed848b6aaf5aa84","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.0.tgz","fileCount":341,"integrity":"sha512-wagf3Iyi/rcqfIi3M0gN7yWX75G0ZM99STjLXNR4Dw75kapYGIXzrfK6Z57IV/Fiqo70yEfpLyeJ0zPHYYFvjg==","signatures":[{"sig":"MEYCIQCusifiikbSU9d4NqjYEtImIBSz0kVKE3XU0hCe0RX1iAIhAKetKhtjqaNc2wwlfoLjLL3Z4e0TyW0d6CWj7ew/xYK9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8098408},"engines":{"node":">=18.x"},"gitHead":"7dc1a291d3b1cfde396f4bab4186b0c3c28a6723","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.8.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.0_1724925614024_0.9254379868356268","host":"s3://npm-registry-packages"}},"2.8.1-7dc1a29-202408291014.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-7dc1a29-202408291014.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-7dc1a29-202408291014.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"37bd02b114da37e20b584100706d28d5e9eb099e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-7dc1a29-202408291014.0.tgz","fileCount":341,"integrity":"sha512-PR+lRNpmMZ3r01tioorRfGejUDeb1MRVQaBmhqAoT+KWi3CnDcRDxy1GNgr8KDswc+n1YrsCD3U+mIBDwRqC6g==","signatures":[{"sig":"MEUCICrEImeEA9o21YUUkwYlJxtyw6G7YAY0j6juRypGhHV3AiEA+HGXBI+UFCKReC5nkIwGk0Vw+/e5Szr9EOsVuI8rRu8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8100385},"engines":{"node":">=18.x"},"gitHead":"7dc1a291d3b1cfde396f4bab4186b0c3c28a6723","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-7dc1a29-202408291014.0_1724926548603_0.5187848802133284","host":"s3://npm-registry-packages"}},"2.8.1-5978f11-202408291908.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-5978f11-202408291908.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-5978f11-202408291908.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5ceb70e51530627c6595fa928204913e93f3fea3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-5978f11-202408291908.0.tgz","fileCount":341,"integrity":"sha512-VLnVKux6DKTt+UEp78KhzbEyr1msM+0yU7RR8sLod+p+OGmLO8Edv4tRN4xSioYSuWV6kC2HR5oS7gfjlv0thQ==","signatures":[{"sig":"MEUCIQCqOyfLw+d4kA4FG8JH4IScTu0be9brd4anJ68HKGdOEAIgdD1YEj+ajEJgFn2SSqBQ7gCn7jQ4Wy/jLDB9CzbM658=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8100549},"engines":{"node":">=18.x"},"gitHead":"5978f11c2968557851420947be284cf10b7e44d6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-5978f11-202408291908.0_1724958554624_0.5108951369486459","host":"s3://npm-registry-packages"}},"2.8.1-80830aa-202408300849.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-80830aa-202408300849.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-80830aa-202408300849.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"665d2beeb0ee3bf2fc37b1736f5f0f60507ac6ab","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-80830aa-202408300849.0.tgz","fileCount":341,"integrity":"sha512-vw0sVmVxJaZG1Bdly+FB4G7VpMCkwmA46kjE1oLVaZlZhSI/dcaovryfqiKRyv6JqEO9BhWYYi9k36NS44ZhLg==","signatures":[{"sig":"MEUCIQDMpz+vUnoWO9cLd4si194pA6XINcAIczL4CkbZN2g8WwIgDKqLFiw4UExAOmDDyAQNjVYR2RzTCOCDTUQDg/QOneg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8100549},"engines":{"node":">=18.x"},"gitHead":"80830aa2b2b5da3fd116a11ca8a961624251fb2d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-80830aa-202408300849.0_1725007852307_0.6723519341667996","host":"s3://npm-registry-packages"}},"2.8.1-771cd39-202408301158.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-771cd39-202408301158.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-771cd39-202408301158.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1ee141a33ce4dcc24eb07a84b1bcbe97eeeb3da0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-771cd39-202408301158.0.tgz","fileCount":341,"integrity":"sha512-sqRT24dA0gPfehA14bApw5bP7qhmFLQK6X/lMfPAW1a0g08ElmPh+5uI13B4U86EXTXOjyLDRCOBBjsJM9PgyQ==","signatures":[{"sig":"MEUCIBLbT8E+5Dwyv8+7KV7GiNtIdcPU3PmK0mloWpPrMVKsAiEA64mVWeGu4p2LLl5d3WPr5RPgktnD1BbfUXFBYi5xIYk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8100549},"engines":{"node":">=18.x"},"gitHead":"771cd392cd4525967674b95fec034d791928c714","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-771cd39-202408301158.0_1725019175332_0.11599534948731005","host":"s3://npm-registry-packages"}},"2.8.1-ccd5b75-202408301706.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-ccd5b75-202408301706.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-ccd5b75-202408301706.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"628d35d8c842750f0aab0f482826a0161a2de8e2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-ccd5b75-202408301706.0.tgz","fileCount":341,"integrity":"sha512-ws/hEyzrnIWJKZ5YZVpGOZb6SAhX8Ugvrb3EC5MUZhqSXwO5yZAE2l+ZSp9AkmtlAozLe/UDt5MGj8w8yraU9Q==","signatures":[{"sig":"MEYCIQC1u8MA/BlB382wPWIIlk5xtPH9gcgAC3OjfQzEdjIw8AIhANnCZp+R7msoM4RyXGBC/wqnwV0x/ZfWF46ShGWdZuK1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8100499},"engines":{"node":">=18.x"},"gitHead":"ccd5b7530aea70d9cdeae30d26ac4d61fd19f2aa","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-ccd5b75-202408301706.0_1725037682973_0.18206295281212204","host":"s3://npm-registry-packages"}},"2.8.1-744be8d-202409011023.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-744be8d-202409011023.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-744be8d-202409011023.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cbfbafcb15a6bfd2e3163466d187386cb744525f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-744be8d-202409011023.0.tgz","fileCount":341,"integrity":"sha512-o6/3L9nVNErMsytxzAAklE728ZOO9aGEY+NuTHGiNqAiisiKU4bRvr6NOzZ9p4TnQ5BUgsO4Mn3ldD3V5AqfXw==","signatures":[{"sig":"MEUCIGSUWY5lMadXszaI1uMrOecDTG30jw/aIT1leAugnLQrAiEA/DqlOUk8vBVLVn4Sy8sJiPKFiogqllH2xWUvd53xWIE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8100499},"engines":{"node":">=18.x"},"gitHead":"744be8d1835c455b4c471db21dfb0054cd1e3d9e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-744be8d-202409011023.0_1725186304389_0.014817947853163371","host":"s3://npm-registry-packages"}},"2.8.1-579559e-202409011608.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-579559e-202409011608.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-579559e-202409011608.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"67551ce0fe3e0b01dc6996e67c0830c41404ef9c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-579559e-202409011608.0.tgz","fileCount":341,"integrity":"sha512-khqwDuqMzAF13aDAtjCEpMEPmJ1RKp/DhS6q+3nk7EyGHa0VnaGfSSsGB4d1C7gpXnzASoijJx3mBQpybqpk9Q==","signatures":[{"sig":"MEUCIQC1t0EUAKdImjQs38+AFmZjKD6RM8CF1yzVnfALtshFkQIgD9euvIavY+gW8mZvgWLmOv9BylI8BV3kTPxakQmSWNs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8100499},"engines":{"node":">=18.x"},"gitHead":"579559e064aa26b6cdf75a49a882ab34f45d72bb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-579559e-202409011608.0_1725206991307_0.4820578718533033","host":"s3://npm-registry-packages"}},"2.8.1-a35c084-202409021235.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-a35c084-202409021235.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-a35c084-202409021235.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"23428c553524f7c639f54eae0fd9c1ab4eccbb19","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-a35c084-202409021235.0.tgz","fileCount":341,"integrity":"sha512-cBa3mMIXmbmRNJp3I2Q/Em9/trWWsITMwUdmo3NYkrlMPEQc0Cwl9/8X2embfHreFmYjpIxAYQnCNsvxb+AytQ==","signatures":[{"sig":"MEQCIC631aPbAFCXs1TMGuqbCti3MgPvCaeC0Y229XhaPjXkAiAS4TbmBhehhCc/G0wQyBVAbsgX+PcI1HYy7ivYcN9G5Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8100499},"engines":{"node":">=18.x"},"gitHead":"a35c0849513e11cb3940df080f66d50fdcafec61","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-a35c084-202409021235.0_1725280591987_0.758049143846474","host":"s3://npm-registry-packages"}},"2.8.1-a35c084-202409021244.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-a35c084-202409021244.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-a35c084-202409021244.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5630deb312ef3097313011e4ec577a21fa858418","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-a35c084-202409021244.0.tgz","fileCount":341,"integrity":"sha512-97ebuYiC+yOtnumys0riiqRa5abWy88KTjQIWKgfXz9LVe1WjuWIweZWM1hKYmAuLTmsTcS0rpUX/MPOKo3Dzg==","signatures":[{"sig":"MEYCIQC9hIAHHKcrtgXRuhQrXP1fD5nCvr9VRbEo3hUOLjMrsgIhAMUVwbcEOnVOSXAF2AugAxGQRcB6OJJFhlYj0zcGHbwA","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8100499},"engines":{"node":">=18.x"},"gitHead":"a35c0849513e11cb3940df080f66d50fdcafec61","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-a35c084-202409021244.0_1725281139297_0.8278174846787969","host":"s3://npm-registry-packages"}},"2.8.1-a35c084-202409021258.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-a35c084-202409021258.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-a35c084-202409021258.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"38adfbd43bae7fcafe93a4bacc76b84e98af8cf2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-a35c084-202409021258.0.tgz","fileCount":341,"integrity":"sha512-fGJPZN/go2hJDkpB9LxooHiiXri/VZlASJ4Kc+l9pSxDq6FTWTXBnv6OS938gzYdPJYHwYgyz2UCr68TQQtoPw==","signatures":[{"sig":"MEQCIAbGiaJwRUoYLCeoyth1OKyKxGYUzEsjBDuo68j7xWivAiAiAUcX+G/SilSmIrIRgMsxWcsixTTepyVWoxr2lTCvNQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8100499},"engines":{"node":">=18.x"},"gitHead":"a35c0849513e11cb3940df080f66d50fdcafec61","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-a35c084-202409021258.0_1725281966610_0.8772864900100164","host":"s3://npm-registry-packages"}},"2.8.1-a35c084-202409021300.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-a35c084-202409021300.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-a35c084-202409021300.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f60deb84c8a16facc67f9d05651c5779ea5b07b7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-a35c084-202409021300.0.tgz","fileCount":341,"integrity":"sha512-slOt+59iXZQ0DxvpoMtdPw0KSsRd5mubFV2FrGDn/6mXqp72s3178tLUgJUqkNhVNF3ZPSwmljHpqFlaypJCUw==","signatures":[{"sig":"MEUCIQCOCxLqXwAa8MBd87ziG4grXyjQNnYKit8vMHC+dnRebgIgA3CIwWynvhev1ze6uAEV8H4tdaPUFiaA5DF81sB8EWE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8100499},"engines":{"node":">=18.x"},"gitHead":"a35c0849513e11cb3940df080f66d50fdcafec61","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-a35c084-202409021300.0_1725282120959_0.6265343989202676","host":"s3://npm-registry-packages"}},"2.8.1-b207277-202409021349.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-b207277-202409021349.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-b207277-202409021349.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f08a3274b1a26909cb05633cf657be6c60ddf0f7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-b207277-202409021349.0.tgz","fileCount":341,"integrity":"sha512-SgFSmQIJq0yBp5Q3acXYf8WtrJnjuTQdNAG5MJN2abARv3+i7YYyPP03DOEwZPW2k1m/0uAjkTiAbVncjbxRpA==","signatures":[{"sig":"MEYCIQDHDWudHij9rVNGJnH4p7SSBRwBZWfbgVNSSsVUBgJIOgIhAL9X3YTpFMuhlMTDnXpwQnhIUNtXtJRIZKDBqnc444J+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8105347},"engines":{"node":">=18.x"},"gitHead":"b207277f55f91a2b4c7a72aaff1fa86bedbc695f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-b207277-202409021349.0_1725285032495_0.6518886076433412","host":"s3://npm-registry-packages"}},"2.8.1-dfff26a-202409021428.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-dfff26a-202409021428.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-dfff26a-202409021428.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7c6899b84e6103a05f2529ad6f95db5098e559e7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-dfff26a-202409021428.0.tgz","fileCount":341,"integrity":"sha512-yMrW282e/qWgNAEmR9mYK+9mWsT+4XUJHE6rBRPN8bl+FH+qfUbipPxXRUCsyKcp0v52qeV4uAyrPt4BEy9kGg==","signatures":[{"sig":"MEUCIQDmVJ9AOV/WQuBGrubVAaLiTPdLyrOnDRwOayBTFo3+CgIgErbAf72MB2gW/OjHngSx2FUNfTgoupJNsY45EsKT3pw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8105347},"engines":{"node":">=18.x"},"gitHead":"dfff26a6638fbeecf1f37f16731774e71f9d6f5c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-dfff26a-202409021428.0_1725287391638_0.5130130310465082","host":"s3://npm-registry-packages"}},"2.8.1-dfff26a-202409021542.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-dfff26a-202409021542.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-dfff26a-202409021542.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"05b49522b4affd4f5f6d96d4521e94af0d5b7e33","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-dfff26a-202409021542.0.tgz","fileCount":341,"integrity":"sha512-9CU3jm0CYYuyfs58Ow52C69BCeKYnKQFfk0YPGS6VXLbCuYS3Cp+NZhtNfwOCWU+wJTUENWy3tpjcmwYFHg1ig==","signatures":[{"sig":"MEQCIBqybNbz44jVPcpmT8FAP/rS2Th9oM3wqSHfm73+4YydAiAR0fQxUCoydeLuEI5YiYWmmQBH4nLnmj39vORT9cU9wQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8105347},"engines":{"node":">=18.x"},"gitHead":"dfff26a6638fbeecf1f37f16731774e71f9d6f5c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-dfff26a-202409021542.0_1725291798396_0.7013161956826488","host":"s3://npm-registry-packages"}},"2.8.1-dfff26a-202409021639.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-dfff26a-202409021639.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-dfff26a-202409021639.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"45263bb1fa7a252b558a33743ccd6f327021cbd6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-dfff26a-202409021639.0.tgz","fileCount":341,"integrity":"sha512-ldNey8/wxEDpZB1vU3L+tFxEKr8Rs+kpzyFBkNqx1DkaWV5w2hxJA4AyCft7dLy+UOk4D4xUDfR7dZX7oXAm6w==","signatures":[{"sig":"MEQCIAqwSPCV39PRyFO8U2KpMQb5QcSulso8Be0BnQCw2j1+AiAwYECb79W6kQtlHMUG5Gd41czWMWoOzBg10BiASJCGDA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8105347},"engines":{"node":">=18.x"},"gitHead":"dfff26a6638fbeecf1f37f16731774e71f9d6f5c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-dfff26a-202409021639.0_1725295252596_0.3580796685435377","host":"s3://npm-registry-packages"}},"2.8.1-ebd2f59-202409021645.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-ebd2f59-202409021645.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-ebd2f59-202409021645.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"db3bee20cb2c29d336ddd7973f78560129f13e13","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-ebd2f59-202409021645.0.tgz","fileCount":341,"integrity":"sha512-ZVLE9FB+wz/+MO0gfi6Ci2pkCrrcE+nD9fxpUN4ly6T93AhzeHLQ3DxdB5SxFhVpwqfeVxDngrmvF92oOMw6sg==","signatures":[{"sig":"MEUCIQCvTYCUUqARhY5DIQGeN2fm3ojj9oeZt/wcFoInHQiYPwIgVbZSLiVWcJ0NMK24iUg52X+XcLXzDtn8IzGEIMClLcQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8105347},"engines":{"node":">=18.x"},"gitHead":"ebd2f5959af49bf8881f7e31b5218e3746611ea9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-ebd2f59-202409021645.0_1725295582352_0.5312003044850289","host":"s3://npm-registry-packages"}},"2.8.1-ebd2f59-202409021648.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-ebd2f59-202409021648.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-ebd2f59-202409021648.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"53429371053c1994c80f5465911e8cd179f5bd52","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-ebd2f59-202409021648.0.tgz","fileCount":341,"integrity":"sha512-EvMDc3OZRs+2FbFPQH548ajisdLCJln04Gi6q3xvl/lNPQwBXZipWi1hPZKWQFIiscH9yYb2XMQvHy3K3T3kKw==","signatures":[{"sig":"MEYCIQD02a6q+nTQa7AhUFfThIOpqHZGsVlmIl4VsS5hK3VZDAIhAKCSVec/8hlpOsP6iXN/XJwATVL11ZbJU9f6iHYnRAXo","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8105347},"engines":{"node":">=18.x"},"gitHead":"ebd2f5959af49bf8881f7e31b5218e3746611ea9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-ebd2f59-202409021648.0_1725295803452_0.9618203333149495","host":"s3://npm-registry-packages"}},"2.8.1-ebd2f59-202409021650.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-ebd2f59-202409021650.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-ebd2f59-202409021650.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f3f2efa0b91fc2239680a862e96de7ab46e3853e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-ebd2f59-202409021650.0.tgz","fileCount":341,"integrity":"sha512-GIVmARcYTLTYBbcZIgK+IXDIPraMF9bJnmYG9dEoDzsqpe4LfaCvOxfncw9qR5JgALXOSreu7xfJJnsR5ik6sQ==","signatures":[{"sig":"MEUCIQDVqWyPA1fOmATv+9f5bJkg7suRxCOO4cwusVKPhCROZgIgJ1RqQ8O9y9Z5WF0r3Z9O5f4479LiZ13MbnPalmlwwig=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8105347},"engines":{"node":">=18.x"},"gitHead":"ebd2f5959af49bf8881f7e31b5218e3746611ea9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-ebd2f59-202409021650.0_1725295890989_0.24740557024671195","host":"s3://npm-registry-packages"}},"2.8.1-ebd2f59-202409021709.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-ebd2f59-202409021709.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-ebd2f59-202409021709.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"974fd90253002b81f41477da80e720fa907a40a6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-ebd2f59-202409021709.0.tgz","fileCount":341,"integrity":"sha512-QfxlX/2IVf/bbBBNcGy/EW9kIkI3o5owrHTD5P0d6hj5AUYxidMhEBVGR+hNZOL5lT9aQMcRhaXB8CtnMa0yFQ==","signatures":[{"sig":"MEUCIQDYSHq3+bie7nmDBzx6fy3WJcQSxLA2UlEwlZ/SfH1ENgIgG4y6dbyEGDHfBpQVg2LTczebx62F/dS/ZfqZet6/eg4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8105347},"engines":{"node":">=18.x"},"gitHead":"ebd2f5959af49bf8881f7e31b5218e3746611ea9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-ebd2f59-202409021709.0_1725297017852_0.12044115857671733","host":"s3://npm-registry-packages"}},"2.8.1-f1c73aa-202409021732.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-f1c73aa-202409021732.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-f1c73aa-202409021732.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fa0e7eedefb51f67b6af427cd3299d794611a335","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-f1c73aa-202409021732.0.tgz","fileCount":341,"integrity":"sha512-xi7N8hS4+BocGjYuK/0GHfKCNGUx7NDJybgEUVZK6jkUT6X14F9wen4WzHGRcD2Klxzp+xHirFo35PNh+/Yihw==","signatures":[{"sig":"MEUCIQCz70flboHF7AqeugOfKm0doYsRHp4IKdfp9PYujCHdUwIgT06rKo+R6xs9/n1XOe5yTriPR8dtLx5JcAmicXQL8zo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8105347},"engines":{"node":">=18.x"},"gitHead":"f1c73aab60cac9b159ed6d30bb1c3acf22ecff4e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-f1c73aa-202409021732.0_1725298469340_0.9223850135802112","host":"s3://npm-registry-packages"}},"2.8.1-288dc73-202409030956.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-288dc73-202409030956.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-288dc73-202409030956.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a73ad1da14ddd3e919ea6962a43bb7971fa1ead5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-288dc73-202409030956.0.tgz","fileCount":341,"integrity":"sha512-njbxivOVEQUbR5pIuKvrwKEmZ0OYAGkQ/V7g066M71NBQGnhXYK0aZK0AWg54rMOZHbBC5nddDsirvd9kzrzxA==","signatures":[{"sig":"MEQCIDpLqiPLU2xXw+M1EnCyS1JGbtNynP9MGgktti/NRzm+AiAslpdf2Z/d9WoJtyeI0VPgd0nykIOPb0jjDnvLrDgjTg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8105356},"engines":{"node":">=18.x"},"gitHead":"288dc731a07cf45398811ecdebb2cf09179d7473","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-288dc73-202409030956.0_1725357445268_0.8651315576875098","host":"s3://npm-registry-packages"}},"2.8.1-00f8a6e-202409040831.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-00f8a6e-202409040831.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-00f8a6e-202409040831.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"70144c5f94f12658bd7b097db5ae60945867850d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-00f8a6e-202409040831.0.tgz","fileCount":341,"integrity":"sha512-pNSkJJLf++lDSA38KrkIdSLeCDrKnRXqY5gq/8IIp1PAK8Sr9QJtX4vAh2WOQcNNOGLshNfWIcGO64yhmIX8cQ==","signatures":[{"sig":"MEYCIQDo4ToQwRdQnUA+4dZg7vOOqMsxNxQTQAeJXFG1mid8kAIhANgRxSlPmPXMDOrR2pIduwnUkCxMXiKHWR/wg+IHjfKY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8105356},"engines":{"node":">=18.x"},"gitHead":"00f8a6e74359a0103edf275500ff344d0b84402b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-00f8a6e-202409040831.0_1725438735434_0.805913947441572","host":"s3://npm-registry-packages"}},"2.8.1-168b95c-202409051247.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-168b95c-202409051247.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-168b95c-202409051247.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bdf9e962ae7042f80ec0bf3642b56d6810a90bc3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-168b95c-202409051247.0.tgz","fileCount":341,"integrity":"sha512-dxOVwE4slELZgn3x0oFw/+lwOKBV4OkWSqVEKBvD46CX/RVTgaVHVY62l3xLyCtdO66Q1CKX5UrKbMD5SbLMyQ==","signatures":[{"sig":"MEUCIA1iRS4q6IZcq1FHR/3AE1GbYytKTn5YzuQLjGh7nzsFAiEApC/n5IJdxbz3u2R7QsTkYoBZx+ROAUTZlJwGKA6aDjU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8105401},"engines":{"node":">=18.x"},"gitHead":"168b95ca8305479dc6d23b7290fe8e879216902e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-168b95c-202409051247.0_1725540536127_0.24390944139455084","host":"s3://npm-registry-packages"}},"2.8.1-0d75159-202409051526.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-0d75159-202409051526.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-0d75159-202409051526.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d54961a0b917a17f45cdb0becf7793c1a7860789","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-0d75159-202409051526.0.tgz","fileCount":341,"integrity":"sha512-ihOBHRPEbdcnUuPiB2OLk6di0zB7drzDYp7bC31jCBWcCW9w3l8R5rwlRg08761oKDNWXA4QY4uE8Ecjx51aAA==","signatures":[{"sig":"MEUCIH7gXJfHrv1LjHSf++X1QMMFAqmxv5McoWHeY0rlFI/0AiEAqDiU2yfxZVKjQuxi6F+gjovYB/cRzdMn1pVJ7WGax10=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8105401},"engines":{"node":">=18.x"},"gitHead":"0d7515997c7c6a1bdeb15cfa75bbeb982db89438","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-0d75159-202409051526.0_1725550039277_0.38000536561124165","host":"s3://npm-registry-packages"}},"2.8.1-5428dd1-202409060907.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-5428dd1-202409060907.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-5428dd1-202409060907.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fc490a55b677f6d004d5c09b5dd4cc5887d9b079","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-5428dd1-202409060907.0.tgz","fileCount":341,"integrity":"sha512-uykujlZmi5uKIhk5ImrEG6KQfE4HfbgPqHNCg6UyGnvOqyqnUcMz+7jU+tSDvwM9vZPOMqDMWJh+Iiii2p0k1A==","signatures":[{"sig":"MEUCIQDlFK4WFNa+DWGhffj7GAXj8h/x3u42b7CQIvxTLa0GdAIgQWBE/7oS1DTNqWV2eOOSH3JzUJPuaKOqvN7dwJ0DZNk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8105884},"engines":{"node":">=18.x"},"gitHead":"5428dd15025034427d592d9e50543bb4113c1eeb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-5428dd1-202409060907.0_1725613713925_0.7551791331058471","host":"s3://npm-registry-packages"}},"2.8.1-dff90f4-202409061103.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-dff90f4-202409061103.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-dff90f4-202409061103.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ebee0e38ea2e4013ad2f7dce2dc8f22b7c3b0462","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-dff90f4-202409061103.0.tgz","fileCount":342,"integrity":"sha512-XxFZ8jKeRmgDs7Et2VLn9JKek64eW4PVj3zx55gC0s07eX9X0gdv/GQkZpL9vhtW/LlEDotmwTQStQHdqniLNw==","signatures":[{"sig":"MEUCIGoged4wcoMyNBbG7+ffPXKe0UR9BG/zdYKusaDzv7+NAiEA9WHKqiSiUgmKYHKVVSDBsRIKmmMRLuaYQfOGzjaPi8I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8123873},"engines":{"node":">=18.x"},"gitHead":"dff90f425927f48c3bcd184a037c4398c1979c03","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-dff90f4-202409061103.0_1725620661965_0.0657158170422576","host":"s3://npm-registry-packages"}},"2.8.1-9138b7e-202409061134.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-9138b7e-202409061134.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-9138b7e-202409061134.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"437212f6d9e8501716eb6be6634a63968a2d0539","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-9138b7e-202409061134.0.tgz","fileCount":342,"integrity":"sha512-N5lVWRFxGhbxp1v16+0S5V409OS/Z1DIlt2AD/6ahlxONJzDk6PyXMg1T0e4XmWwW77SU9/MNJd+DJ76DfHfFg==","signatures":[{"sig":"MEUCIQCPZTYBED96MbiXExVOvx74s8e32turh1nUB45numft8AIgL7Pm3bRjiYV7bmVDtBMJDlczf7O3InW+3kPj0fkbVOg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8111770},"engines":{"node":">=18.x"},"gitHead":"9138b7ea2abc822ae9c1cc503e0afec93d743e34","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-9138b7e-202409061134.0_1725622559309_0.8041660093511929","host":"s3://npm-registry-packages"}},"2.8.1-d2c80ee-202409061458.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-d2c80ee-202409061458.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-d2c80ee-202409061458.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8baa3d573c8110efddf9b0ae911b8ab49335b6db","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-d2c80ee-202409061458.0.tgz","fileCount":342,"integrity":"sha512-Tf0XejIdMIG6pPULec7D6jPEzI3YKwOQFcS/JpmmlxOpp8VNlb5wjpnDZxjcUbqemeJvuX/mJgbyHL+qdf0mYA==","signatures":[{"sig":"MEQCIHggVkRCieq8X+282jMNqaN8JU04WTEq6BFHjcaW5ZOvAiA5xRaGsAc6PLKD74USdzt53geqUMeAe3DAU9LKer56ZA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8112232},"engines":{"node":">=18.x"},"gitHead":"d2c80ee935aeba756674ee6fb5c84585b75669a1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-d2c80ee-202409061458.0_1725634755568_0.02899798340330717","host":"s3://npm-registry-packages"}},"2.8.1-33308ad-202409090858.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-33308ad-202409090858.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-33308ad-202409090858.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c67dbb03806c6840bbb83c418d5f4ddef8086a8f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-33308ad-202409090858.0.tgz","fileCount":342,"integrity":"sha512-Z9J0Vf/zKi4DUaYc8TTH77H8+AEcMAuFqFh/aJleY3kUIg0TTbotiK3eOwy8ndz/QgrrT9QJ4h4kwdhtryFRrw==","signatures":[{"sig":"MEUCICC31dZXg3Uc/eiESFNToTSbbeu+JQ2IPzNZdS4Hja7QAiEA8DI1U8H+w7NNfxR2DwT8+HC7auCydUE+p4NuvgByzGA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8112362},"engines":{"node":">=18.x"},"gitHead":"33308adde46375550e6b9e79bf2ca418ab11fed5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-33308ad-202409090858.0_1725872375126_0.4797225140650485","host":"s3://npm-registry-packages"}},"2.8.1-33308ad-202409091312.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-33308ad-202409091312.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-33308ad-202409091312.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1e75486e618db8e51a42a09d0bab546c2195f677","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-33308ad-202409091312.0.tgz","fileCount":342,"integrity":"sha512-wR/6qGByBRo4D0VWBXHbCuY+g5C1Piy+di1FEynYqIkjMOxULd8OZ4sgKwrnAULPbpN5FcKa3b3yaFNV7OHv8g==","signatures":[{"sig":"MEQCIHXEIG1FlX1CwYQHSmdXM/ZSXMu9R7V1KskO2M/ovAZ+AiAZuLrKJYS+rMNmoE0Ao4OiD3BG4tLScxhVeNAyvkqlwg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8112362},"engines":{"node":">=18.x"},"gitHead":"33308adde46375550e6b9e79bf2ca418ab11fed5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-33308ad-202409091312.0_1725887601897_0.008318210175259466","host":"s3://npm-registry-packages"}},"2.8.1-33308ad-202409091314.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-33308ad-202409091314.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-33308ad-202409091314.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4261b7bfde3eb6a082fec66b065c49fe0d88e231","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-33308ad-202409091314.0.tgz","fileCount":342,"integrity":"sha512-VJvGDi+U7bVQgPU34WeazBee9kJJ9nhWnXksOVsdhHtC3LqZuxGUifso8rfVCd6Uj0xBjGw3bsf/WmPgRdyiYw==","signatures":[{"sig":"MEUCIHVJ+VozFyBhmwbAzJi4yOtPAtb9OL2b91oRHSweiHq3AiEAmxIeQhttnXdrf7B14o+0UkrBnN05brFl6xL/xJXvsvY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8112362},"engines":{"node":">=18.x"},"gitHead":"33308adde46375550e6b9e79bf2ca418ab11fed5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-33308ad-202409091314.0_1725887722184_0.47222506718073","host":"s3://npm-registry-packages"}},"2.8.1-7d8b779-202409091738.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-7d8b779-202409091738.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-7d8b779-202409091738.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"23ae421d5a63099095ec30b9acda560fe2722710","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-7d8b779-202409091738.0.tgz","fileCount":342,"integrity":"sha512-MwrGWXdVX3HkglMeHBVYmKzhORlgo1VGA+3aywzXYgcW5lY6f5f+Hr5OsLI7s6DOc/r1j0o1Sai/S5rGi+uw2A==","signatures":[{"sig":"MEYCIQDxMwOYnBqpf7xVkSlGHk0dPQH7kmqkDk79aTMcvUmgogIhAJm7zzhRBk/VS46p9R4gm5lsb3NcIxrqvwuTRBPz3l5O","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8112362},"engines":{"node":">=18.x"},"gitHead":"7d8b7799a26027965f281e6beab083ab97ea6e03","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-7d8b779-202409091738.0_1725903599011_0.06262288090040169","host":"s3://npm-registry-packages"}},"2.8.1-7d8b779-202409091741.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-7d8b779-202409091741.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-7d8b779-202409091741.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"51c1682066405032c316b3034406353fead1ef12","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-7d8b779-202409091741.0.tgz","fileCount":342,"integrity":"sha512-Ij1R1UFuLD7j9OrEvNWjbsuSkqQ/wLfenVxaG6HwxeBIjRfAOoRD24w/FGfJnQzy/V9WpD+kyXKkqTr5kVNx5w==","signatures":[{"sig":"MEUCIQCWNuczxA9cKkQYSSdtwPvZX0KbDrxvwerfE1hxiyvNegIgPQ5oo8282zaGyQ3HseTBwUN8eRMMHl7qYga4uoTi7gI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8112362},"engines":{"node":">=18.x"},"gitHead":"7d8b7799a26027965f281e6beab083ab97ea6e03","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-7d8b779-202409091741.0_1725903746871_0.3050594462821399","host":"s3://npm-registry-packages"}},"2.8.1-7d8b779-202409100639.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-7d8b779-202409100639.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-7d8b779-202409100639.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b18b9e4fddc03ea8cb0aa445e1a224ddd57ce761","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-7d8b779-202409100639.0.tgz","fileCount":342,"integrity":"sha512-BO0qQYB/i8zqAPonEl6QOc0+P+DK3tRVu9+QvaMoQqlPWohIaJywcW1AU/SKosTmZBEdNbaG1uHGX2EXvHo1Ow==","signatures":[{"sig":"MEYCIQDLsRZLCFqWYl3EYFzcoPitd/gTY6ReHnj2BYZ8p0cuMgIhAOsKrGW+ohg2/VqJIY2K51M19jeCwfJTTt84fiysVwhU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8112362},"engines":{"node":">=18.x"},"gitHead":"7d8b7799a26027965f281e6beab083ab97ea6e03","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-7d8b779-202409100639.0_1725950421169_0.8928296321373377","host":"s3://npm-registry-packages"}},"2.8.1-6e3cad8-202409100942.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-6e3cad8-202409100942.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-6e3cad8-202409100942.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"891df09ce03cabb8572133a6801557bfec8035ee","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-6e3cad8-202409100942.0.tgz","fileCount":342,"integrity":"sha512-71U7kvr8VDwAuRT6oqtd24UrWASgokjStucEDgnIcswErgX0iNKToWoeCMBF/EoF7lz6m8SoFD2mHL40uYGogA==","signatures":[{"sig":"MEQCIEUeJUvOtyy0Dvosq1wfhDhx4TsN3lTsOoNk1ky75kYWAiAnKWD/3y71fzI9NXleiNHN9kTOYEROwb3wWk1kfy86AA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8113232},"engines":{"node":">=18.x"},"gitHead":"6e3cad81676f81a08cee06f92001e114afae5e58","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-6e3cad8-202409100942.0_1725961418479_0.9306597200833318","host":"s3://npm-registry-packages"}},"2.8.1-6545b1b-202409110906.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-6545b1b-202409110906.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-6545b1b-202409110906.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d3db91b49e184ddec45d2e14cd4bb7ce8f42d7b7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-6545b1b-202409110906.0.tgz","fileCount":342,"integrity":"sha512-MzfmMpuG68Dt9WpqaUHQx9FFs/hhIoPEwShuvmOzj9RDN9NQd3APf2Jz/vt/MR7oqP68hxe3m07xusDi4X+5wA==","signatures":[{"sig":"MEQCIDP+Dba3d84YG6+UQMN1SZh9r92Cig93b9Lg0ggQvJTFAiBZY7DRTWKNADrkjG7QyEFrCh/4fWXr+Hyr1UL3t2YAYg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8113842},"engines":{"node":">=18.x"},"gitHead":"6545b1be7c92385770888dcd8c52dc3380db8c4d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-6545b1b-202409110906.0_1726045637402_0.008082616421223987","host":"s3://npm-registry-packages"}},"2.8.1-6545b1b-202409110915.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-6545b1b-202409110915.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-6545b1b-202409110915.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7393ef7effab49c79e27eced500051b980d6d239","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-6545b1b-202409110915.0.tgz","fileCount":342,"integrity":"sha512-nTUNrxiXJQs5pivcrhNgfGjswxzCJZ101mg5RNf2tqveVX8csh/Y8LV67CXVat1oAXXv3+DHUDFqNt4ivku1Sg==","signatures":[{"sig":"MEUCIQDjYe80CyNXG+uODUWACHWPGfvsCwv4+bNhexV2ZalDNgIgLA6Nfg6iutzkWF313LIX39WR1dNcOnBPaZS8Rpw4g2I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8113842},"engines":{"node":">=18.x"},"gitHead":"6545b1be7c92385770888dcd8c52dc3380db8c4d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-6545b1b-202409110915.0_1726046209370_0.05246355945242098","host":"s3://npm-registry-packages"}},"2.8.1-65b8ea3-202409130916.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-65b8ea3-202409130916.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-65b8ea3-202409130916.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cc72ae2167fa42375bcd53c6f7a01e367b7cfbd1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-65b8ea3-202409130916.0.tgz","fileCount":342,"integrity":"sha512-Ae6p4wJZOOtxzJCuwX5WPVijr8MdY7S1m27SNFZfRarEyeRwku18B2fQd8GdFy0JxzKGAHDrITt8yFaz+InT3A==","signatures":[{"sig":"MEUCIQDpri7MmSTiEXMfJYQ6TM4DVcNguIq1qn43R3Db7d8EMgIgcckUabLloTLZqTnQ7fNc3Ws4iUfAAFIJgttm36YzeEE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8114466},"engines":{"node":">=18.x"},"gitHead":"65b8ea3a0ea1a629712d43fc247a072ee55ee83b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-65b8ea3-202409130916.0_1726219077498_0.3293708132315789","host":"s3://npm-registry-packages"}},"2.8.1-e6d89c6-202409141135.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-e6d89c6-202409141135.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-e6d89c6-202409141135.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c3e8399457c7160f3b9da5d8e837306638a91ba2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-e6d89c6-202409141135.0.tgz","fileCount":342,"integrity":"sha512-f4vRLFdDo99B2P8lKuy6UAddmeVQimCGGyBkcmkXmhS8QXsfUdTQ5cVlDaqLlTuG6IxKYAhkv9+2VGp+oNKSCw==","signatures":[{"sig":"MEQCIGgYhZXO5rP/h/bxrPdsmBQ7+Jxndi6DqPCpJff9XgL6AiBNipdP1N/hPrKNe45W7TTTydO+JrX5wjoD812MBM5HxA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8117199},"engines":{"node":">=18.x"},"gitHead":"e6d89c63d77b65f8d29d7e2b0305d096e8e0e706","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-e6d89c6-202409141135.0_1726313809077_0.007049648098326644","host":"s3://npm-registry-packages"}},"2.8.1-90dc872-202409150848.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-90dc872-202409150848.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-90dc872-202409150848.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c60c1369835e96e740d047964223aebc0c89d73b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-90dc872-202409150848.0.tgz","fileCount":342,"integrity":"sha512-0GnbJQLmxQrt7ReVkocz8X6Ddy2AjXRRJa3EpLtQdvWhRqCCQUPSLpa1GvfpfAD8TDQhSOzmkDMLd26yqfHXSw==","signatures":[{"sig":"MEUCIQCEv+zp0l2JhAingfH8nYt5ZqwCe1GfnvxETw/uqgIMwgIgBY5pq0kPZlXeYPpVkJykFIMbbMbF7G2JDCGwtslkx40=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8117145},"engines":{"node":">=18.x"},"gitHead":"90dc8725d592598a16708bd5702ebbac908e0569","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-90dc872-202409150848.0_1726390145217_0.22233345096069246","host":"s3://npm-registry-packages"}},"2.8.1-90dc872-202409160626.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-90dc872-202409160626.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-90dc872-202409160626.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b320b886ed672ada737d35bce98e9767f7060b9d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-90dc872-202409160626.0.tgz","fileCount":342,"integrity":"sha512-gwVX+AKkEYOgKbHWPvwgF1IMftftQuvMLhKyk9pxOy5o8Zn35L6M2Li/whj9+raORPLhQ8lbxh2alOWcDTSC7A==","signatures":[{"sig":"MEQCICGr3/Z01X0Bn8k1Ahe6Hr/mv6Bw22hWERdMdUkf14XXAiA3XkdsfTQ8WyQhLqMT09LZ3wylLjKyzbe3P7xEiTY3xg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8117145},"engines":{"node":">=18.x"},"gitHead":"90dc8725d592598a16708bd5702ebbac908e0569","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-90dc872-202409160626.0_1726468037940_0.3130847301713786","host":"s3://npm-registry-packages"}},"2.8.1-64c25bd-202409161552.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-64c25bd-202409161552.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-64c25bd-202409161552.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cb69125a6f45a2158dbdff55e24002f6a4d72180","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-64c25bd-202409161552.0.tgz","fileCount":342,"integrity":"sha512-c719rCN58E9RbovXacUYESINrsSRFCiW4RJgkII3vNGlWcEewOaRVyoa7BxahE61EpRwXP6O851B9VgiozGLBA==","signatures":[{"sig":"MEQCIHD/ugRWLf9WZTa89kN6ps6vgZdlVpOuIDHzmsUFgPMwAiANsngL3+b+4/2dRdHAgUbWjH6Z+/RPPCRnZqI9PzpaTA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8117456},"engines":{"node":">=18.x"},"gitHead":"64c25bdf9f22da461925e533881b1f7bc704c810","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^17.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-64c25bd-202409161552.0_1726502001491_0.028126841989851492","host":"s3://npm-registry-packages"}},"2.8.1-3b7a80b-202409170930.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-3b7a80b-202409170930.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-3b7a80b-202409170930.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"83de14fd98c7efab3052bd8d6d786ea7cafff23e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-3b7a80b-202409170930.0.tgz","fileCount":342,"integrity":"sha512-hUv6A0dv1xOTKvtE3JQSMsvaUfv/itSgcNAbnMyEVMpUOvujxiYHO27bYgDAZcjXowLzmTXaIV6PqIz00/Z1yA==","signatures":[{"sig":"MEQCIHsQklSaKpqluQAyAl0Hlg8FjdrfjTTwHi+AuLZNUkycAiBYuIIcghlJAMP2GULyyFafumMfn1U7RaJOuxmhYvIJbQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8117456},"engines":{"node":">=18.x"},"gitHead":"3b7a80bb69b5d9cb56d1dcc32468b5360bc770fb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-3b7a80b-202409170930.0_1726565518549_0.6201751750597408","host":"s3://npm-registry-packages"}},"2.8.1-6a1f73e-202409170955.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-6a1f73e-202409170955.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-6a1f73e-202409170955.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c5b728c4ca2f1f6fd19db6cb07aeac530980aace","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-6a1f73e-202409170955.0.tgz","fileCount":342,"integrity":"sha512-OFER2lSNsswPCp+z4rWolKpqkZaMcVeTihBjZXp9gxfi3wVTKmLsVwtXyqblBXhPR5I/oRUIJTCjIjXELZdjrg==","signatures":[{"sig":"MEUCICg03cWeuHUWrRInUtTfjHml0d/H/EjmWBBzofrbivmgAiEAjsySWmtWzveZrVPg5e/5kPXUcjYmWHOOSrBn76HUsgc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8117456},"engines":{"node":">=18.x"},"gitHead":"6a1f73e7242eb10bdb23d7ae3d96c6ff20a119bc","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-6a1f73e-202409170955.0_1726566977834_0.7306796051570474","host":"s3://npm-registry-packages"}},"2.8.1-6a1f73e-202409171252.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-6a1f73e-202409171252.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-6a1f73e-202409171252.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cfe6d394a866ef84bc267fbb2c75d6774e63472f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-6a1f73e-202409171252.0.tgz","fileCount":342,"integrity":"sha512-m/iifkiNRwrIeuXfAIFe3hJRl3T8OBoiBG+yNBh+4UqZbLsz2RDl2geAwb6DnbGTr0DLzp2X47TugmVZdAnimQ==","signatures":[{"sig":"MEUCIQDeSF8rVWvWH03KQoF9E3gNASu97peUU+Xxvj4GV6Du5QIgVdppB/e26S4nfcePEzvkrtJqcH3+sRsOlEBTvU11/EU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8117456},"engines":{"node":">=18.x"},"gitHead":"6a1f73e7242eb10bdb23d7ae3d96c6ff20a119bc","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-6a1f73e-202409171252.0_1726577645533_0.9803494790927996","host":"s3://npm-registry-packages"}},"2.8.1-34ece2f-202409171320.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-34ece2f-202409171320.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-34ece2f-202409171320.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cc6aa4a65d64377620a53b7bbd92022e491dd940","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-34ece2f-202409171320.0.tgz","fileCount":342,"integrity":"sha512-eh3QITs/iy8NFYh/nV28grUZ9RW9rXkiayTstZ/SygZttKKHgCSAMfcDPrqU2g6RCIlwvA24fjSrZHPjYBYmLw==","signatures":[{"sig":"MEUCIBL+qprla0eCesoyfn8xRQUxMh0gnFATwVEOgup/eKS5AiEA5DSPS174nIQupTFLX9+IMfBuaOfhF5P3BtM6I6SS2qk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8117456},"engines":{"node":">=18.x"},"gitHead":"34ece2f2594db9cb8c1f196f6e185c360d43cdfc","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-34ece2f-202409171320.0_1726579265456_0.13227693659200268","host":"s3://npm-registry-packages"}},"2.8.1-89c270b-202409171427.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-89c270b-202409171427.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-89c270b-202409171427.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3410850aa0df62bc2048511da54750b5e5c58d5c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-89c270b-202409171427.0.tgz","fileCount":342,"integrity":"sha512-bt3cNWpccy1Nd/Pof/Sr2LliSUDS+Ideb3QaFtmta6tLTXDTqF+ZPC3Yyy49q62eMPeYu8LunsbbDi2+JKGfRw==","signatures":[{"sig":"MEYCIQDg0YsNU4kbI3JPiu+i0U7HIA0pIGk5C5c4/o+faBUIWgIhAO3mC0rIRelLLHqjNO3H88nMX2vQIU9XRgCY2nPjvIY7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8119240},"engines":{"node":">=18.x"},"gitHead":"89c270b7f729a6226b2609b6b08908669193b6b5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-89c270b-202409171427.0_1726583309580_0.6885926183154583","host":"s3://npm-registry-packages"}},"2.8.1-2830e92-202409171757.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-2830e92-202409171757.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-2830e92-202409171757.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3716a97d12b3cfa3b327d3dafe3d7889082717b8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-2830e92-202409171757.0.tgz","fileCount":342,"integrity":"sha512-jNwPOJ26duS/4RVRHBFpzjm50sg5PCPgfGbO5GF5rg6IQ49c0g1W3aUy8aWpfjAIRPkT8RrpvVYGdBeVMh0/1w==","signatures":[{"sig":"MEYCIQDbwnBeNUgTz9wwkWlD+9NGCzVLuzAWyMFcw3QHJWqMwQIhANknojJW8b0ybyE1XEBJDm9cLGdqYM0+8boZTmimcNnH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8120284},"engines":{"node":">=18.x"},"gitHead":"2830e92265be6732ccfd14fd25a5418a4152d3b8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-2830e92-202409171757.0_1726595909702_0.146386673723907","host":"s3://npm-registry-packages"}},"2.8.1-dd04734-202409180957.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-dd04734-202409180957.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-dd04734-202409180957.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f835b4f9e9f0f68665e2bee89e4d5e522b792771","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-dd04734-202409180957.0.tgz","fileCount":342,"integrity":"sha512-QCQ36v7Lcqn1pHluZ4z4lnYcn+3FT+jJ0W/p8hQWuvFanAl69s1RN2LFXFxMAe9NahIQgOL7PNhOpz94jS/Ymw==","signatures":[{"sig":"MEUCIE3hefWLPItX8qwjb1D3hrOv+ySP4iwc95a0JtWvJrjLAiEAgbduV603r0cd97EUbCdYXy3cAQ5sdq70y+cp6fdwLCU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8121237},"engines":{"node":">=18.x"},"gitHead":"dd0473467d2fb668d7f7fdefacd35b477dce7009","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-dd04734-202409180957.0_1726653531669_0.68957400985504","host":"s3://npm-registry-packages"}},"2.8.1-4618bec-202409181348.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-4618bec-202409181348.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-4618bec-202409181348.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c00b72192770a6eb65f82b96188f3151ff0990fb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-4618bec-202409181348.0.tgz","fileCount":342,"integrity":"sha512-mH4uPAlTyfl4h8+im0R/8baYa/3id74k+Cql7foQKq9gHNbJMiG8lfdLN/xjDavN/5FeGoz+OEFR9qx7a27dOQ==","signatures":[{"sig":"MEUCIDs5zZHpo7GvoFW1OucM4/cVLMElM0872dLqlXuTVAulAiEA2odE9yTnIj8EOrKWAP3kbc3RKamwl/A+g3jXLTWFzoY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8129771},"engines":{"node":">=18.x"},"gitHead":"4618bec7d263b825941f9d01b7abcb3cb686903f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-4618bec-202409181348.0_1726667377034_0.2340327606313437","host":"s3://npm-registry-packages"}},"2.8.1-4618bec-202409181355.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-4618bec-202409181355.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-4618bec-202409181355.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ba0114fbc419ab6eefb1c9858dc316346b994487","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-4618bec-202409181355.0.tgz","fileCount":342,"integrity":"sha512-nX5ILOvl5fzeGxnRQqacopH/xpvBpj9NA6/eV/k1Cy/iR9RBa4GzigicX9dopvQUWmmZ/MJl2t3IIlMvhYFwiA==","signatures":[{"sig":"MEUCIBoCwFWZfrw2jGDh9sYAmHIIimqm/REqw2UcoGA9fZMMAiEArlXXBvBBS+5MGtPMGJPj0KJ4OXePkASe++/gGLt3Dd4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8129771},"engines":{"node":">=18.x"},"gitHead":"4618bec7d263b825941f9d01b7abcb3cb686903f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-4618bec-202409181355.0_1726667795082_0.5620883934308094","host":"s3://npm-registry-packages"}},"2.8.1-9504108-202409181459.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-9504108-202409181459.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-9504108-202409181459.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"50b8d7d6dc44efa0be1f05554509f7d0637560a4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-9504108-202409181459.0.tgz","fileCount":342,"integrity":"sha512-ZicuVjfJNO/1aFMGSip0yG76ygIZj3KgGTGQNiM6D+ohTam/B/6hyILzdIqsFZWpZhLSGLXunup2PAcCMGofFg==","signatures":[{"sig":"MEUCIGH5/7fZxMnCpb8HWHBp+MDq1jzqV1ypENV3HVvSSeAfAiEA71DTLK2O9Kj9wDeZUv7cmSPjmI27EazEobi+X5RusU8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8129771},"engines":{"node":">=18.x"},"gitHead":"9504108c294fbad5805512f063d0cb752d75b427","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-9504108-202409181459.0_1726671661966_0.9480560194111367","host":"s3://npm-registry-packages"}},"2.8.1-9504108-202409181510.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-9504108-202409181510.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-9504108-202409181510.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"32facdd2db897fe64e60f19439337a9528203dda","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-9504108-202409181510.0.tgz","fileCount":342,"integrity":"sha512-6IfmKFkcLBeX9hSNncjnzyD9lpooUyGLqBo2Aq2VmF+zQ9G+YadzdSVdHB3JBTVFB6u0SfuZ+mPvE+semD7scw==","signatures":[{"sig":"MEUCICKluHKpagNnjpzNzTiqvMl/0UqW9qRxnszrB4qTDHOVAiEA3CQTJD28mmcBjtpuATOUemN1kGUwWqHX/V3zjDteKUM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8129771},"engines":{"node":">=18.x"},"gitHead":"9504108c294fbad5805512f063d0cb752d75b427","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-9504108-202409181510.0_1726672324834_0.5142797328160051","host":"s3://npm-registry-packages"}},"2.8.1-9504108-202409181521.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-9504108-202409181521.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-9504108-202409181521.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f49debd4f4e7f4a58df777bd5ff34829b2306c17","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-9504108-202409181521.0.tgz","fileCount":342,"integrity":"sha512-nR0VwK26EYH7xUROYDyW19+4VtuJ9K+y05Fw0JKVSQ1eftKkykM7w+0pNkPT1mbUgsvoOMeyEc+U2pOINHYXdw==","signatures":[{"sig":"MEQCIDqtCXfUfC6OJniR9z23Fqm1g7/5Bjn/tUTnLETnHnkYAiAYtYqTm3Q4cazuBbW4gZOGxCqtljZYpZbVoMusTERpYg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8129771},"engines":{"node":">=18.x"},"gitHead":"9504108c294fbad5805512f063d0cb752d75b427","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-9504108-202409181521.0_1726672980280_0.21832231231191024","host":"s3://npm-registry-packages"}},"2.8.1-e25d5ed-202409191014.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-e25d5ed-202409191014.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-e25d5ed-202409191014.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"796a689f6acaaf8b16a7aee320dbf3020371caa0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-e25d5ed-202409191014.0.tgz","fileCount":342,"integrity":"sha512-cLWBzE/FS8NS35S1ur+BQd3WqLStXbmTunoQ+f/gcAMMEeLSkwfWlpjglmUQYNwoCJZrctTC23A4iD6AfKDFdQ==","signatures":[{"sig":"MEUCIH0nbBGuaKlkA/rKkBPTgFvRTwGcj5dDEsQzNK+eZvuVAiEA705KxUGgdfpV/KGnd0fAYMNf3vkXbL+z2IElhm2TXas=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8129905},"engines":{"node":">=18.x"},"gitHead":"e25d5ede4f7d32a644d4172709b45e92253d7dc5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-e25d5ed-202409191014.0_1726740958412_0.13712515012644722","host":"s3://npm-registry-packages"}},"2.8.1-e25d5ed-202409191018.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-e25d5ed-202409191018.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-e25d5ed-202409191018.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0033141d05f6aec8fd3d90f3a78cb86c88ac353a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-e25d5ed-202409191018.0.tgz","fileCount":342,"integrity":"sha512-oO4IbdCJR5PunP6Ov0iDJgXHPDig8z2h3jaTQeqZR1joJhAmhHt6ReH33qeHXWH79PxUIA4iUPzpJEW4cygc0Q==","signatures":[{"sig":"MEUCIQDZZP4NHRp2q+MZni5Lc23z5A97rty2klUGXyZ2ezGtUwIgFJCrSQLteknaUn6EdSs+PqRFMbePDrpEfirttCZV0+w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8129905},"engines":{"node":">=18.x"},"gitHead":"e25d5ede4f7d32a644d4172709b45e92253d7dc5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-e25d5ed-202409191018.0_1726741149632_0.8822434153574745","host":"s3://npm-registry-packages"}},"2.8.1-eff63b4-202409191032.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-eff63b4-202409191032.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-eff63b4-202409191032.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6d116dd88456059ed3ad0552dc821e2ef2abb6d0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-eff63b4-202409191032.0.tgz","fileCount":342,"integrity":"sha512-gBAO05pDdIovOq1Gp5NBaQroUFOlBE54jdNfD56s0An9UEbMoeGXQDJM8MkXgsj4S6RfTwt03ije76NZARkE1Q==","signatures":[{"sig":"MEUCIHBazUnuJbZknsWlj6+fJJy9t63JOjugxosj6WPlWRYkAiEAwVTV4J5l2FgpaIEimM9e70KySA33fNqdmHZv3DqwmoU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8151244},"engines":{"node":">=18.x"},"gitHead":"eff63b401251fa96ed0a8666bc057e917942112d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-eff63b4-202409191032.0_1726741985862_0.4399069861279816","host":"s3://npm-registry-packages"}},"2.8.1-eff63b4-202409191041.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-eff63b4-202409191041.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-eff63b4-202409191041.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6e530c46e4899f2bfba45d77fd884e85f2fc6314","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-eff63b4-202409191041.0.tgz","fileCount":342,"integrity":"sha512-/oYbUP//i9R+IbfdK0ycMueOUNom/5+hL1PdavHdg01UAGIOprYEGNAUAC3HDp37Bfyo6ow9zxHW3Hl+5RKZ1Q==","signatures":[{"sig":"MEUCIQD6QFZM/srIubWf3O/X0HWZZsIQ4QG4ssNh6x8eE2BjcwIgdbBtZCU69LJTOCoK7Fd1V5AHALlbL0aHdShJmH2BDmM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8151244},"engines":{"node":">=18.x"},"gitHead":"eff63b401251fa96ed0a8666bc057e917942112d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-eff63b4-202409191041.0_1726742527637_0.12462817071244814","host":"s3://npm-registry-packages"}},"2.8.1-19d959e-202409191126.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-19d959e-202409191126.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-19d959e-202409191126.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e47a5bb189f127a94919eb2ae033452eef57cc7c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-19d959e-202409191126.0.tgz","fileCount":345,"integrity":"sha512-PPlaLgNytNZUE/kJnQfEPSkLpEECd0fAVMNqaIwZiP5Njn9XIRJv69OyeccvjmKgtVMdTrIo5Y+N7QgbX7ftDQ==","signatures":[{"sig":"MEYCIQDkMKzOhs73EpH/rpZraiilM6OZGxgxe0+AmOwxhEApewIhANk8phZM9L8Hn8X7h/lJLufslmQoiP75WThmAKWmxKz/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8191406},"engines":{"node":">=18.x"},"gitHead":"19d959efdc7190c8fe167e2e748f88cca9fd96db","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-19d959e-202409191126.0_1726745246407_0.7380348051047803","host":"s3://npm-registry-packages"}},"2.8.1-19d959e-202409191203.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-19d959e-202409191203.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-19d959e-202409191203.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4e4659bbb38eb8bbbce51c3d404647e1663187d6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-19d959e-202409191203.0.tgz","fileCount":345,"integrity":"sha512-vhRchlFJRyxUDXeARbUW9fWsTjw9+IQSKS4t+JLPNzFGaZxD5mtaIPRP5W5XoGiU7YVK3GmMkPZwWfCBNpWLtw==","signatures":[{"sig":"MEUCIB3dlhWPcHRjBKIh3g9KrnuaE5KsJs0x2vFpKWXNGHweAiEAiLgN0+wFB8xyCMXis5cJZ4m//OAF2Rh+utwUYWWqFxU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8191406},"engines":{"node":">=18.x"},"gitHead":"19d959efdc7190c8fe167e2e748f88cca9fd96db","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-19d959e-202409191203.0_1726747456270_0.8867971927163507","host":"s3://npm-registry-packages"}},"2.8.1-417df50-202409191626.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-417df50-202409191626.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-417df50-202409191626.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9aa386bf458e8b8bbfed38d1d482a7e39d8f34f3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-417df50-202409191626.0.tgz","fileCount":345,"integrity":"sha512-XZkXJqsFo3aXDbgV8j00oD3+0lthAe3K18NzSCghA+rfivSqUpBRroFG/abs2zZ6pX840dDXkOYyomCRmFLVYw==","signatures":[{"sig":"MEYCIQCqbFBGIK7KJkF94M16e+KupJ32KddjnkKlEmfn6lcajwIhANqZy+RJl9sD2Fu2PBrCwso7rop9TBD1vID6dwfxEquZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8191424},"engines":{"node":">=18.x"},"gitHead":"417df50458f484191fc1d4d4de3aa67644d8b834","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-417df50-202409191626.0_1726763251395_0.4716665646760605","host":"s3://npm-registry-packages"}},"2.8.1-5e468c4-202409201202.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-5e468c4-202409201202.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-5e468c4-202409201202.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8583a65798106c97cddb42b618f1ec6a034d0605","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-5e468c4-202409201202.0.tgz","fileCount":345,"integrity":"sha512-c5CXJv4EPN2cdhkUsTbDb0Xv1VhAc4xH6AEcMLN5mxly/b9AIsm4lVtBS7j+wk2jKlrFt5g0pReQxcEfwR24Rg==","signatures":[{"sig":"MEYCIQCcdkBDRNeYALOzE3U7c6Ig0/JBUKITkn2D/QNMuUyXrAIhAO8XixLXgoKD35+NFFH3Q8fI9juytN+nwj5drMmFMf6k","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8191720},"engines":{"node":">=18.x"},"gitHead":"5e468c4f562b62ac008d964c39d5ba9847c6eaaf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-5e468c4-202409201202.0_1726833812666_0.2770629530955835","host":"s3://npm-registry-packages"}},"2.8.1-31e884b-202409201507.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-31e884b-202409201507.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-31e884b-202409201507.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"22d464a8545526e9a31f44ee7291eabdf86c07ff","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-31e884b-202409201507.0.tgz","fileCount":346,"integrity":"sha512-q2lpKvh6JxVS+5ZDgxwyFme53k4Kyd63F8cJRAYzeFxfePb5DJHLNfiPyAlR2SVcyhjfPcPww4S7ghvlMME45A==","signatures":[{"sig":"MEUCIQD7gccngKdxWR6zvhfpX0HeNthvh+KGKRCgkZI8c1MGXwIgbhOrl4lPCbTWlxHFcOy1TE4XNdzJakHdzbkbG3IVtn4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8193473},"engines":{"node":">=18.x"},"gitHead":"31e884b059fa6eced20fa16c509fbac683844488","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-31e884b-202409201507.0_1726844905974_0.704679363551032","host":"s3://npm-registry-packages"}},"2.8.1-4e1f5ec-202409201700.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-4e1f5ec-202409201700.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-4e1f5ec-202409201700.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ab8fb4777b5e65789101dd225cd53fa60b701106","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-4e1f5ec-202409201700.0.tgz","fileCount":346,"integrity":"sha512-mBKY9Nh/nZvHSj0eDUkkd6TCKf8MBe1tnTZ/Vw2tRLukLCEWDoAtR89Bzc3cz0J5QnWNPSsGUMp+OnQIWw81Eg==","signatures":[{"sig":"MEUCIQChIfI/iP2i7TASmNSXVvhePVlx8jXg6FqgSKOzexnT1gIgEJzEthjOjF4uEgJm/ob41lTlHFn3dIyUQs9MOU0Erc0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8192080},"engines":{"node":">=18.x"},"gitHead":"4e1f5ec432dc5ce69eff565d6f86bf4e17b174e4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-4e1f5ec-202409201700.0_1726851698396_0.8779996926993037","host":"s3://npm-registry-packages"}},"2.8.1-4e1f5ec-202409211739.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-4e1f5ec-202409211739.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-4e1f5ec-202409211739.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a3c56a01d24f94529ace432bd2ba2eb993bdfac8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-4e1f5ec-202409211739.0.tgz","fileCount":346,"integrity":"sha512-K+WU6rj2jmVpzQd9qSkmlvncZaz9zaj4wIa0d3F4GY7TPyNfkwCqVtBjyeNI9BG75hfepOpmA6MH3t1HFGNgTQ==","signatures":[{"sig":"MEUCIQDG/d242ZfRLGAnRylygilgxFga7kWFeELtEF4v34UD7AIgGmFHpP5S7+rldW6keL7469AaGo0AK7ycH05TXOv9qEg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8192080},"engines":{"node":">=18.x"},"gitHead":"4e1f5ec432dc5ce69eff565d6f86bf4e17b174e4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-4e1f5ec-202409211739.0_1726940420384_0.80020871367619","host":"s3://npm-registry-packages"}},"2.8.1-4e1f5ec-202409230631.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-4e1f5ec-202409230631.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-4e1f5ec-202409230631.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ead76802a2d21ebbb5ca54acd0f2040a1864e52a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-4e1f5ec-202409230631.0.tgz","fileCount":346,"integrity":"sha512-uZDGzroLhVB9Jl71PjLdkBbnkpkMAqK+m9Bp+NdNJ3xV/fGY3EuvGCDZHsXKQntH//7gzB6kaAtyJpkCTKrPaQ==","signatures":[{"sig":"MEUCIQCfZmtuILaSQlSTvzn7yjv7iNkMLYMGHpIGOKDVJjr7VwIgWjB3WRa8MeCy1DSzkzZsx5yPnN4++sNEPcy61jOtLng=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8192080},"engines":{"node":">=18.x"},"gitHead":"4e1f5ec432dc5ce69eff565d6f86bf4e17b174e4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-4e1f5ec-202409230631.0_1727073142090_0.9654727024986476","host":"s3://npm-registry-packages"}},"2.8.1-45c992a-202409231010.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-45c992a-202409231010.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-45c992a-202409231010.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b1a55752008471af0cb69af35364b32253ccbcbb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-45c992a-202409231010.0.tgz","fileCount":346,"integrity":"sha512-dSSQ0T3ONbzYRJPfmXoSqGy/6Obg6jDyoIuS03oEv3PHIjDGlC2jdSQZUkTuWOGGxhdwsH8wXDgGBINKtjV1rQ==","signatures":[{"sig":"MEUCIEw8g2JYI96ARGle1X+xmKBkWWAMgNyGUaHU/njQ7CDTAiEA8HkbcxkV+AeqyH6Ju5BUuaxjYegwd2Y7MOkdmtzK67E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8192094},"engines":{"node":">=18.x"},"gitHead":"45c992a670f8b6d6d3925a879b093ac267490920","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-45c992a-202409231010.0_1727086298174_0.4185368241571372","host":"s3://npm-registry-packages"}},"2.8.1-452a16a-202409231142.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-452a16a-202409231142.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-452a16a-202409231142.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"be3d2c94170a4c580fb426b4439bd9dea94fd50e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-452a16a-202409231142.0.tgz","fileCount":346,"integrity":"sha512-3BnpRyJ258BCV26KmaTD8y2PeA1Jobzs0NRHMqH5/sbbX+FS16xE69/eIsYI8sTbB7hKDgCFsrGZe5FxqrqCdA==","signatures":[{"sig":"MEUCIQDmqkB9qY2fHJ8AeNN5SA0jTgXnrBayGQQlw1B2yOAQDwIgITod9KdbGURq6kuz207sGljV9Cu85kNC8qElfewA1kY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8191740},"engines":{"node":">=18.x"},"gitHead":"452a16ad1fcf739ac9736938bc3fe5d6ffa39f11","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-452a16a-202409231142.0_1727091824907_0.9003989414326266","host":"s3://npm-registry-packages"}},"2.8.1-76ba3ed-202409231229.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-76ba3ed-202409231229.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-76ba3ed-202409231229.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"657fcec5452ebfc87e050a257c105eb8db61dce0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-76ba3ed-202409231229.0.tgz","fileCount":346,"integrity":"sha512-4AYbFvulARp7fXLfrhtnwxV79mFcpdmcOjVyQNu+RszU04uNB+QUv4d2K9iBXnDks5xigUZR4+NT0y6blakKlQ==","signatures":[{"sig":"MEUCID5GAVU5Vubwn87qkoHakjaz6D8gUslXtYina4RXRsUwAiEAuKTZinUmabaFZHu3xNS/RpRJQG++EMs1TGvvn5fLs50=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8193390},"engines":{"node":">=18.x"},"gitHead":"76ba3ed4fd8a79f8b0033e6dced3a9bb90e59f65","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-76ba3ed-202409231229.0_1727094616628_0.4871817070183071","host":"s3://npm-registry-packages"}},"2.8.1-5979e15-202409231405.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-5979e15-202409231405.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-5979e15-202409231405.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6c337b6d08da6ad04715cad42524fe9eb669f826","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-5979e15-202409231405.0.tgz","fileCount":346,"integrity":"sha512-7xpvKiQfN8TWJ4OCfBH3mW8LL0BbjFzeQAQhppeanKs6HInwB4kYPhO+P/eF1gPy31SuHh0b6iVkGAAdg4IhTA==","signatures":[{"sig":"MEYCIQDfuxkKr+PPVtYP+zt9BYr42a9luTrrzYB9o7+KB/tpBAIhAIZRKKaDmZZq6KO2tnyO2fxb4qgSdL+xo1D/iLj0IH5R","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8193390},"engines":{"node":">=18.x"},"gitHead":"5979e150918cf76c512f02b9f1c96cd2f432f6b3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-5979e15-202409231405.0_1727100428493_0.9454166693805148","host":"s3://npm-registry-packages"}},"2.8.1-5979e15-202409231427.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-5979e15-202409231427.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-5979e15-202409231427.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"00988cf3cc7fcf716397bef889a90cc35aafabbf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-5979e15-202409231427.0.tgz","fileCount":346,"integrity":"sha512-rq98yPQx6pYBpFi8B4h0LwpGxYdnlhISR1TWO2OYKNQCT8/+OogI8Fdf8/Cs3DQaoqZm8ZbUjtkiX10tWY3i9Q==","signatures":[{"sig":"MEUCIAJWto/qeXXWqzxyOVNdxRaA3fvjD3/Ii5n5LlSVh2eBAiEA93sFJOOuJSXqahv/mi3R8L+jv8YPtb+FLrSYFPS6Hm8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8193390},"engines":{"node":">=18.x"},"gitHead":"5979e150918cf76c512f02b9f1c96cd2f432f6b3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-5979e15-202409231427.0_1727101702302_0.4278552697298612","host":"s3://npm-registry-packages"}},"2.8.1-5979e15-202409231429.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-5979e15-202409231429.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-5979e15-202409231429.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"52bb7e5255fc5b07d8d8a2da6cdb2ad4f8344076","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-5979e15-202409231429.0.tgz","fileCount":346,"integrity":"sha512-1OK/2gaoPztBUUbS9K0Opb0V3N1r5dSbdquZCot49vkLbH+Eug1aH6jI91wpx5bDlm2Es8K06y+67ocThhNj8Q==","signatures":[{"sig":"MEUCIHKDnbB0XyeykCQirmOJGjitGN+tSL6vbPO8xvTwQdmCAiEA8L8pwEtUGbDsmubXS7SIVScNqCG6We8ms6Wdy00ujDs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8193390},"engines":{"node":">=18.x"},"gitHead":"5979e150918cf76c512f02b9f1c96cd2f432f6b3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-5979e15-202409231429.0_1727101848314_0.29130985593555847","host":"s3://npm-registry-packages"}},"2.8.1-5979e15-202409231502.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-5979e15-202409231502.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-5979e15-202409231502.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dc5c9e33f38db175cb0ab08bf98027ab4ae558b1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-5979e15-202409231502.0.tgz","fileCount":346,"integrity":"sha512-0d8LJU76JjVHpdiSE9lQmVpKnBiDXYVqZOikis42hCA4x8SdUT3RxhByYZslz1jhrGH5TGYPvsbuESHCUtHibA==","signatures":[{"sig":"MEUCIExS3M7rLQ6KWxjBDI9QTVKFLaFGHBxEl/C2KmfXIvkTAiEA+lFU3t9me9mHKiSPDzg8q7a4eG1Popcubt4lMIBwzzE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8193390},"engines":{"node":">=18.x"},"gitHead":"5979e150918cf76c512f02b9f1c96cd2f432f6b3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-5979e15-202409231502.0_1727103806343_0.8895698581746629","host":"s3://npm-registry-packages"}},"2.8.1-56c64bb-202409231516.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-56c64bb-202409231516.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-56c64bb-202409231516.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3e1a474bf37be39cf0fe02a9a0a3fcc6dd9feedf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-56c64bb-202409231516.0.tgz","fileCount":346,"integrity":"sha512-+RzdkXuHKY9yA+z23/otvGV7k7Au8mGkBvNULpp1YblIARyIl/g7tLbPEUlNNmCMVOyDpxp60cY/KZxw0ryS5Q==","signatures":[{"sig":"MEYCIQDzmprdLuHBPgM32p8CRujPHt/ZZKL7d5AWt8nuJRpzVAIhAMr9OkgnvuRHJpYPdTNpNLaRAGSKzekOQ9WkkbJktG3T","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8193578},"engines":{"node":">=18.x"},"gitHead":"56c64bb081b003eb489b3e68f616d9615c3fc293","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-56c64bb-202409231516.0_1727104662254_0.08194372743054634","host":"s3://npm-registry-packages"}},"2.8.1-56c64bb-202409231725.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-56c64bb-202409231725.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-56c64bb-202409231725.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8478642995a1a463dbd035bf22f41dcfb8249431","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-56c64bb-202409231725.0.tgz","fileCount":346,"integrity":"sha512-bZF8gu8+2snHNZlEcjKuDgq8HqcQ1UZYwA+Ct5MWPKu0CX8vezs9seweRaAm2XuS6JE7qNRT5mSqJSSy5uXowA==","signatures":[{"sig":"MEUCIAEW/rIZFkKOKYJWV0mxUNXXz94MfttZa+l84LAuvhQhAiEA7LmxPFB1i/5VsakSN6c27WX3lKZd96cvsKLYCFGXG/8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8193578},"engines":{"node":">=18.x"},"gitHead":"56c64bb081b003eb489b3e68f616d9615c3fc293","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-56c64bb-202409231725.0_1727112378942_0.8405194631576096","host":"s3://npm-registry-packages"}},"2.8.1-f450630-202409231730.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-f450630-202409231730.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-f450630-202409231730.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dc1bcbc33658c5a94504e66de8f5908fb5e31dee","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-f450630-202409231730.0.tgz","fileCount":346,"integrity":"sha512-D5n80Dm6vEtnymT4qfH2Aadro0gCxZ3v4E8LS7ZnpYWIyR4jJdN957hn1H8fnZ9isUwktglx/XDRZQk747yxYw==","signatures":[{"sig":"MEYCIQDwj2FwWW+sl9og9dYi6A8afHoug2n3FbVdTLbQPsZ5jgIhAMfPii2OBuzx0pG1SXLNy19ZVwfEklY1CPauxVOT+2w5","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8193578},"engines":{"node":">=18.x"},"gitHead":"f450630fd7230da54cbb54b409f044c6870cb4a3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-f450630-202409231730.0_1727112705848_0.9756980907290242","host":"s3://npm-registry-packages"}},"2.8.1-f450630-202409231943.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-f450630-202409231943.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-f450630-202409231943.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3a7753e514b77c015881710099e1275a1450f063","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-f450630-202409231943.0.tgz","fileCount":346,"integrity":"sha512-v5cF6b4xBeAMbwFQMf3Y0JsHp8VDw8zb8guzo4rZX8BdbqYMi+yfZnGKA9Ev1ISKg9aPP7qLkH9x8RroqCCyFA==","signatures":[{"sig":"MEUCID2sPlBPlRlXM47/dklhGKF1G088l/Q120ipPDr4oV6HAiEA5Th2AyvUqK1usr4ACSQsCirLumWZLD8x785cdp/rEJ4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8193578},"engines":{"node":">=18.x"},"gitHead":"f450630fd7230da54cbb54b409f044c6870cb4a3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-f450630-202409231943.0_1727120663698_0.5094078618084863","host":"s3://npm-registry-packages"}},"2.8.1-53f3d00-202409240826.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-53f3d00-202409240826.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-53f3d00-202409240826.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c5e970c7a1b8f072767dfdfd80bfa4184d8090a8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-53f3d00-202409240826.0.tgz","fileCount":346,"integrity":"sha512-yYVshrLATDZhfvdctHaHZUB5LLBVU0P3IhYqam7R3zNOBnz0pBF+Z3qoX6xo7+ioicT+x14ELGHpEHqJWHNkJA==","signatures":[{"sig":"MEUCIGcPjLEzjUaJ6zdbvA3H3Sz/vbabkJLQh8FWomqXD3tEAiEA6l1RZ+IRTukpQGSIEWOJ9gql1hrCdpnpH0gZZUFF8l0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8193650},"engines":{"node":">=18.x"},"gitHead":"53f3d00a22ffc97956f2f6838af0cccd824ac7a4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-53f3d00-202409240826.0_1727166483320_0.4603463360876907","host":"s3://npm-registry-packages"}},"2.8.1-fd45104-202409240851.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-fd45104-202409240851.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-fd45104-202409240851.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b508a89df2c26e804fa3cc1b634a6377f67f92a0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-fd45104-202409240851.0.tgz","fileCount":346,"integrity":"sha512-s3ker5kJnIpRQFNeB6HppatCyejSZaz2r4ee218Hk9gDxEgqHCpNG/vGenn5qybVAUy4VQt3a2td/YYRm4mnRg==","signatures":[{"sig":"MEUCIQDiE1G2dqfnQjllny5M/FuRv1uAFk0qVLQ0TtdHOp6vDgIgeNTXJBCIXDKfn8U2a/RzUH53vqfzJUsxBSOeB2NjHqg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8193779},"engines":{"node":">=18.x"},"gitHead":"fd45104af3e774848ca2c54be6943d263e7e4e1d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-fd45104-202409240851.0_1727167961765_0.5082501637805366","host":"s3://npm-registry-packages"}},"2.8.1-cf47f97-202409240941.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-cf47f97-202409240941.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-cf47f97-202409240941.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"90370f2b9b2199f21fbccf9970eac08231b9d390","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-cf47f97-202409240941.0.tgz","fileCount":348,"integrity":"sha512-jr0St/oYTbDONgrUpjVkwQH8w62b8dTS+U+ZAUEVnz5lnpT76uCy7tnw1Mztcmro55yaNW/SkujjOHc/TwClqA==","signatures":[{"sig":"MEUCIQDO3Q41+o0xZLBy8wS5sb/Zfd709/pCtP2dPsvlFAv9vgIgAz9KA6UOXxVV7ZfU+lgR+ilFbNlLXfKyDFrAybl3Juk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8203915},"engines":{"node":">=18.x"},"gitHead":"cf47f97ae7f9b62f43975aba22f184f8ee80ba85","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-cf47f97-202409240941.0_1727170956713_0.8840445798628416","host":"s3://npm-registry-packages"}},"2.8.1-12c65ef-202409241552.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-12c65ef-202409241552.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-12c65ef-202409241552.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ce724ce66327212a32c497df92f496ca69dcab76","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-12c65ef-202409241552.0.tgz","fileCount":348,"integrity":"sha512-RfcmnTugbY1gcBpFM9G1c3YxScV7UDoGoF8/WnLAV8+60Q2km0ZSrlzGWYbf2Qr1+uorua1MGIJ83aGqXDFvqQ==","signatures":[{"sig":"MEQCIFPaviGF7iPM+VNPNF1m/4jQ+DcQukwWRpMrXrWsucmgAiAyCkRAnT4FPmWEbQJfnn5ytx0R1rBuh4nLdXrcSPiTcA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8205707},"engines":{"node":">=18.x"},"gitHead":"12c65efd2022c1529f0367fd60bed38e048485df","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-12c65ef-202409241552.0_1727193209115_0.9705632820373928","host":"s3://npm-registry-packages"}},"2.8.1-8c1241f-202409241739.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-8c1241f-202409241739.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-8c1241f-202409241739.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6efa598ed576669bbb7e5e4dca2965809dfe5a81","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-8c1241f-202409241739.0.tgz","fileCount":348,"integrity":"sha512-aGjxqGdjiR1COfz2izK2SZ67uJHZGHntxUQTRBShIjUXHj5BrkUGioPLtz330XmL4MMqB/HxB6NiQI3/xB0knw==","signatures":[{"sig":"MEYCIQDgF0c2krwAp1eMn7axLbycnrHLVavuTykUIJQKwGohyQIhALkxs64oxTDV9N0ERqmgnnfAuN9fZ4TWitEoqTmjTv8n","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8211548},"engines":{"node":">=18.x"},"gitHead":"8c1241f10914cb7e0a30f90273ac0d31c87a442b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-8c1241f-202409241739.0_1727199625922_0.501901001100088","host":"s3://npm-registry-packages"}},"2.8.1-538ae57-202409250856.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-538ae57-202409250856.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-538ae57-202409250856.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4acec860c102571ae70f300f94c4836071032892","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-538ae57-202409250856.0.tgz","fileCount":348,"integrity":"sha512-3fWZGaVSyGRjsCcl3vqaVN/5rJ51Tts6y+eLMnFkXFsMnTpNirLKStB2Tir8VDYg/oCAf+XaIcqksJjOs9wn6Q==","signatures":[{"sig":"MEUCIHxrsPM4VgNktuvznoYS4FTsXJDUjlujY7mU+QdE6rypAiEAvTlOgXYOIWFRNt7TnmfeJwwi6Aye1i+FyC7x3EpfBmk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8211548},"engines":{"node":">=18.x"},"gitHead":"538ae572e74284c774f0e1458d28b1f395c2b226","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-538ae57-202409250856.0_1727254637472_0.6280119546845364","host":"s3://npm-registry-packages"}},"2.8.1-0ac5c51-202409250905.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-0ac5c51-202409250905.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-0ac5c51-202409250905.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d17f502adb6b91361d53970f3366cd317d27d86c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-0ac5c51-202409250905.0.tgz","fileCount":348,"integrity":"sha512-FKPNGqQlzbrl5uzM2TbnRFFzg57YFh1cCQkxcB+cuVqNXQYX2GorAe+hNZjYqv6BlY0j6qWEK5Ujj6Z1aCDVTg==","signatures":[{"sig":"MEUCIFylSMyW6ano3KnpbIBgaWhk56Y0n0C8WXbpfMZZ2kC9AiEAwPG7hGHau0vHC1LKVG7nxis1YG/OvufvdMgOKhkgBdE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8211548},"engines":{"node":">=18.x"},"gitHead":"0ac5c51ba46d097d3ce079c03ab4609fd39f8e56","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-0ac5c51-202409250905.0_1727255189615_0.6620186221785116","host":"s3://npm-registry-packages"}},"2.8.1-ea58fc2-202409251508.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-ea58fc2-202409251508.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-ea58fc2-202409251508.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ab945135a49af45838bb2c45c418b79a7e8ed02f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-ea58fc2-202409251508.0.tgz","fileCount":348,"integrity":"sha512-C7ym+QQy4ybq9agZc+hczbvxdPevdve6z406OOwywsvqDappZkn5PlRFsOHTGKaP4ebiVo3k8bHwlHgNGdKZjg==","signatures":[{"sig":"MEQCIAlD1Btxcd4GrmpCoXc6OGC8VqTvH34+3IF6yhWKIbq+AiALW4oxS0T1og546mnkrQYbP1G2t9f6DVuQiY/ijCP4hQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8211515},"engines":{"node":">=18.x"},"gitHead":"ea58fc24959b1d9d9f1000ca01f68122c24e083d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-ea58fc2-202409251508.0_1727276964295_0.5784465673186361","host":"s3://npm-registry-packages"}},"2.8.1-ea58fc2-202409260917.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-ea58fc2-202409260917.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-ea58fc2-202409260917.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5ab8ac187c6af9bc1f21ae52b4e708b3762bae0e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-ea58fc2-202409260917.0.tgz","fileCount":348,"integrity":"sha512-CU186/Y7wrS8VBkC890bhLBEnr7xj0DHEo016vzQJkGJ/3HXF9Gzlihy6Gmj9ukvzXK9s/X60ft88xByHwYfUA==","signatures":[{"sig":"MEYCIQCbwjpnaK0HSPxCj7T6ipcwifOASrTbhDl8kqeQaqbSOwIhAOluOwUYz5XEcNnsZ85BQRVxYVY/hMhF7/ix84CM/9OZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8211515},"engines":{"node":">=18.x"},"gitHead":"ea58fc24959b1d9d9f1000ca01f68122c24e083d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-ea58fc2-202409260917.0_1727342322517_0.6980376401134076","host":"s3://npm-registry-packages"}},"2.8.1-ea58fc2-202409260928.0":{"name":"@flowfuse/flowfuse","version":"2.8.1-ea58fc2-202409260928.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.8.1-ea58fc2-202409260928.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a7ea1ab6f98f994071dd737f8a98de9b50e7c4a9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.8.1-ea58fc2-202409260928.0.tgz","fileCount":348,"integrity":"sha512-8x+Y9Oe+t0IfE8vyHnz9414bBnODTRwqxDlw4tpfRgX+yF1kUI5hZ9OTYgGi/dk3zW1XcUxRyEVSSRCfYyBY3w==","signatures":[{"sig":"MEQCIAUwhhoWD+9jtHr6+xYToBIGONqkB5OyBh1bu1/UXdi6AiBP5FFiu3P0+c2gjDoK4e59GCDiVvxpQKw3hjDuKoJixw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8211515},"engines":{"node":">=18.x"},"gitHead":"ea58fc24959b1d9d9f1000ca01f68122c24e083d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.8.1-ea58fc2-202409260928.0_1727342983306_0.6738815858170863","host":"s3://npm-registry-packages"}},"2.9.0":{"name":"@flowfuse/flowfuse","version":"2.9.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4226182f21fd9936cb94afef7e0c3411f22f9f05","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.0.tgz","fileCount":348,"integrity":"sha512-Ev/3vxbDAykZtWpGcPfH5DT6QDCrgMP5LBrrf6ETFlL1mdNcVmA/Onh4sg8pyo8iyjkXgTbNYyTtrmHt0+vTug==","signatures":[{"sig":"MEUCIH3Fqks3y1mBJt/p4EVqZv2blmVcTmAOFk1YkQ07FzzsAiEA1uNWa15OsIp7bnvat2pBH19BlT1/ybLhdMUioIqlpc4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8213863},"engines":{"node":">=18.x"},"gitHead":"4353c827f9d77d46d0c0d07d241ab5085c9ed291","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.9.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.0_1727344130819_0.30568439206041753","host":"s3://npm-registry-packages"}},"2.9.1-4353c82-202409260959.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-4353c82-202409260959.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-4353c82-202409260959.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0ca68d93517e0a5cb8d639e75ed7b4d3d2c4d6e4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-4353c82-202409260959.0.tgz","fileCount":348,"integrity":"sha512-CDcHXFxXJmBT6SN3A3LsInHxKdnCw3pPllvCrotSbePJCmAginfpi4f3ny4Oqkm8AZ9d2RC8PINW5dR92t09gQ==","signatures":[{"sig":"MEUCIQCj30WpACdKK3lgzvKJlYAuYgZ3dR7wOLBpi8LQRgCi1AIgOQeEEYJdLDIEUbm6VNxx8MRrL8ze1j3VUmfB8BWx6Xc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8215840},"engines":{"node":">=18.x"},"gitHead":"4353c827f9d77d46d0c0d07d241ab5085c9ed291","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-4353c82-202409260959.0_1727344817975_0.11471754782379828","host":"s3://npm-registry-packages"}},"2.9.1-477b887-202409270911.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-477b887-202409270911.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-477b887-202409270911.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bc8c0f9669387066f5aa746e076d80f10e94fa35","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-477b887-202409270911.0.tgz","fileCount":348,"integrity":"sha512-8CHeIodYppJ9HC0BMx8RMx36rLQD033TwudRuPXEVKOlXvs71f+T+AaGNnVDtHi6JEZlGoaX2G3lKjkgvUETQg==","signatures":[{"sig":"MEUCIQCmuaDCcvG/4EDPt7JXdnYPipVn6sTHjaYHCHRw4TcZNwIgNGICyzSsFXTNenjvMPVXL2gSc1gYVRw9mMt5t1gNdE8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8239901},"engines":{"node":">=18.x"},"gitHead":"477b88753b5fbd09673ad980ca3711cb3d518a9d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-477b887-202409270911.0_1727428342257_0.15305462651018598","host":"s3://npm-registry-packages"}},"2.9.1-d3dd548-202409270932.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-d3dd548-202409270932.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-d3dd548-202409270932.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0cc1d9699e6bcb7061b29f91eb9bd124d4a5ac7b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-d3dd548-202409270932.0.tgz","fileCount":348,"integrity":"sha512-Tm4EyI93PdJq1M0ZryEvkP8Y1Dr7f5DXHPsOSMOMqkXQQZgiB0IfYljmf07F1TXkOJWRAPGJK1Y2CrPeYI0tzQ==","signatures":[{"sig":"MEUCIFxa/rem8xWLOpziG9wzvna9DQQYhTrvp/74FbaexQP/AiEA2PwI3S6N7uZgMImjWsAnbs9+oFT/xDGMRTnMmxtltjA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8241226},"engines":{"node":">=18.x"},"gitHead":"d3dd548eee70c5fabd4b8567e7a8ab869bd0645c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-d3dd548-202409270932.0_1727429635391_0.9943498585539154","host":"s3://npm-registry-packages"}},"2.9.1-afadb01-202409271224.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-afadb01-202409271224.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-afadb01-202409271224.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"93304a8701bfa63ce083843031ce8fa1d91dc05e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-afadb01-202409271224.0.tgz","fileCount":348,"integrity":"sha512-0P/ueggsIXa1wEsriTuJedUeMr25xEMk+dFvejptR++XeEfQv6jkKn7f2a8FGzPEGdHU/CtJkDPVZWutMQJe1Q==","signatures":[{"sig":"MEUCIF0kG7beBWhiYGWZP17ziLtb7dqX8GQOzBrjK1n1/zUWAiEAtKfitH5SJCwZ6uYRBCH5dv/gy4DsCzT/V+BJQyiyCig=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8241202},"engines":{"node":">=18.x"},"gitHead":"afadb01767774ed04d1cfac72c92f7ede8b72993","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-afadb01-202409271224.0_1727439969122_0.03131189246162025","host":"s3://npm-registry-packages"}},"2.9.1-503d19a-202409271259.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-503d19a-202409271259.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-503d19a-202409271259.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"485586ff17cd0bbf026da65c3524972080cb754c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-503d19a-202409271259.0.tgz","fileCount":348,"integrity":"sha512-2N4Xj7/kKDcZqVwqmw5qLRtkjAC+1QEhqLLvbNOTUH5oFkyr0ySvwfLA2bOenBudlqVn1adpXTDXTyT2tmy8Qg==","signatures":[{"sig":"MEUCIFQTD7e/r6wUKGGld4ek11OaNFQV6mm8sNOabZxhTADyAiEA4qLpv4ae5SeIsVLXkptyarEFn4CZrxhEHQPA5Kau2Go=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8241594},"engines":{"node":">=18.x"},"gitHead":"503d19a2f82a402f10a0844465e29570af4a67ec","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-503d19a-202409271259.0_1727442049126_0.5944908236694384","host":"s3://npm-registry-packages"}},"2.9.1-71f6b3e-202409271342.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-71f6b3e-202409271342.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-71f6b3e-202409271342.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8f6966dca44521fdfe945f2701d2689f0e5a5e8e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-71f6b3e-202409271342.0.tgz","fileCount":348,"integrity":"sha512-lFZZJHLNkZ7oVw1NLT1Mtj1BRXcxGSCkRHWbVmTfrX4dn3gsMb1hdHA+8o9dp6jblV8JlPhJLFWTXVaMfbZEmw==","signatures":[{"sig":"MEYCIQDpUU9V9GxgFUlTofv8IEsmynnPKIWJ+IW/MVVmSzlSbwIhAPBcuJfN42zFJdrH1lOYHAmd5jpp3UZiQVrAXkcTy+bz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8242180},"engines":{"node":">=18.x"},"gitHead":"71f6b3e7348200e953a47730522bbfa7ca8dda5c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-71f6b3e-202409271342.0_1727444589836_0.6012915845745104","host":"s3://npm-registry-packages"}},"2.9.1-9c86060-202409271446.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-9c86060-202409271446.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-9c86060-202409271446.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e68e7045cadae8b153f119ba58091ad7976cebfb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-9c86060-202409271446.0.tgz","fileCount":348,"integrity":"sha512-KjtRY/kuekr3jjy1p7lA9KCWRaAx8JZz2tBEjOIqNeyW/ih+7WIWpkhM1kfx1ZT/eApnUDM0/SyMLJACf3Dyhg==","signatures":[{"sig":"MEUCIQChYlgxeGiA8NVtAkBbKL08/spDEsBKtBLzIp0BTanHAwIgKVg0PZhSIihNUNkuL8a+8Gtd3F+I7nNVZRSWTym/X5s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8242180},"engines":{"node":">=18.x"},"gitHead":"9c86060c7cdcd913a981821014c0c0146121915c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-9c86060-202409271446.0_1727448448674_0.6750130005384949","host":"s3://npm-registry-packages"}},"2.9.1-03a42dc-202409271736.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-03a42dc-202409271736.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-03a42dc-202409271736.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e76c0325f894baaecd371592c00697e6dd87d28b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-03a42dc-202409271736.0.tgz","fileCount":348,"integrity":"sha512-iF2i16OJdK32CIawv0wLobqyLEH8xnGauJXFF6PJTPgGAafVQYPb8O1aXq2/FxXWHOejXXQ6WL8ijsZN5WAnag==","signatures":[{"sig":"MEQCIEl8iDrxIDFrK759A2sDqAvyn+3On06vy10VaCOZGDSkAiB4eynZArK4E2r/+Lj/NRk7ZcnQbmv6Iaokbc3tLSHSgg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8242191},"engines":{"node":">=18.x"},"gitHead":"03a42dcc20c28fb6a6fc9bd8fa58d064dda46583","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-03a42dc-202409271736.0_1727458682789_0.9824897931583991","host":"s3://npm-registry-packages"}},"2.9.1-d3e74b4-202409300921.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-d3e74b4-202409300921.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-d3e74b4-202409300921.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"00c4f9587121bf3e1b88feb4707d7d6684293f18","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-d3e74b4-202409300921.0.tgz","fileCount":348,"integrity":"sha512-5XfjwLvbrVW9NhPSlm40TnMGEM1gwwoY/p6LnndFX04NkrCv/FKgMTdJmFtS6JTbjjL9bsDdlzY/JscSF2V6EA==","signatures":[{"sig":"MEUCIHfbMkDsPIGlh485iDw5/A4A9+chXL1kB0ncdd1mPsCUAiEAu8gxQ6q4qmVelaq6LEc6BZRGS7rk6eiGQ7LOgKWrqvE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8242211},"engines":{"node":">=18.x"},"gitHead":"d3e74b42c4ea5d3f4f2e903643357d913daabe1a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-d3e74b4-202409300921.0_1727688147777_0.23368450721055933","host":"s3://npm-registry-packages"}},"2.9.1-99cd72d-202409301106.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-99cd72d-202409301106.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-99cd72d-202409301106.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a594650c5e547a6a2cd47a458e08b4d05268f6e5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-99cd72d-202409301106.0.tgz","fileCount":348,"integrity":"sha512-v+2nbO+Jdt47bF+T5EY29vHbiM4dTEpe74l+bnP0U3+d/jmCARR9fO4HAuQp0bQQyGzdihDmw+fdY/4ZxD4qoQ==","signatures":[{"sig":"MEUCIGQ5tYlJkwPwiDl2Lhb5Z6QJomLpX4y5frLnObRQqa2pAiEA88F25f8eT0PYRQpQHbkLtuDccQi6JfOhUx80gnRAEeY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8242211},"engines":{"node":">=18.x"},"gitHead":"99cd72df1423fb16790d8935149dd73a66b28f82","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-99cd72d-202409301106.0_1727694442433_0.815066158854914","host":"s3://npm-registry-packages"}},"2.9.1-329d681-202409301126.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-329d681-202409301126.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-329d681-202409301126.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e56caaa99b59111e7123bcd4729eab01b9096307","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-329d681-202409301126.0.tgz","fileCount":348,"integrity":"sha512-N9pPAsm/mNTMWv6Affi1620qz0vk8HidRzSPeWz9dwk/4xL27fQtpRV3IF2CxhINFZL+Yv1+QX6qK/Y3G0I4Ig==","signatures":[{"sig":"MEUCIQCnVR90SjjHr3cQ41Z6r36dO+4gx9dJPAwpX8kwH0wSOgIgdwyM75AGPyJGXsr3I4KnCjFTHOmZ3H1hLJlSaIyQegM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8242211},"engines":{"node":">=18.x"},"gitHead":"329d681d96e63a942346732b5d254d66486300d3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-329d681-202409301126.0_1727695679946_0.15679469957126702","host":"s3://npm-registry-packages"}},"2.9.1-3171bfb-202409301313.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-3171bfb-202409301313.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-3171bfb-202409301313.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"25bd9a740b897ffe9d5807046fa10703f5ea92d8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-3171bfb-202409301313.0.tgz","fileCount":348,"integrity":"sha512-Q2wkE8+FZHAqk/uhcHPCpD2VhJpzuIBbRM3bDP/i8j4nK6WO+J3KnLWLOPdz+D7d1dorq8+ubnFW23M3ULrhzQ==","signatures":[{"sig":"MEUCIDy7xKcoQtw38xz+RjhNrI5uME7yWIwE6SXTVSc3LOTaAiEAi1jSw/Rh5rz05MZVsDSudx7RaMx+6wCeeCcUdCDVvMg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8242124},"engines":{"node":">=18.x"},"gitHead":"3171bfbbca060f35312d8611fff94c45e9da7f90","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-3171bfb-202409301313.0_1727702061314_0.2886780066091412","host":"s3://npm-registry-packages"}},"2.9.1-70911b6-202409301358.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-70911b6-202409301358.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-70911b6-202409301358.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"54d9a2e6a20dfea2e031321b86e4e65c083546ce","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-70911b6-202409301358.0.tgz","fileCount":348,"integrity":"sha512-amQZwh7X/WlfMvos4W76RGuj5X7CJBVTE56PJ8IB2Za0OyGARzyGDpz069b06NIGUD3XNOpaTD7uNMhm/rWp6g==","signatures":[{"sig":"MEYCIQCq5j+YLHwYaM8fr/7kjOo3I9FiAKiY4WrfgdWBUtMtBgIhAPRbHPVGvJd8x1aT8mugrfIFq46B5UVN5EpVnO7wjZAt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8242124},"engines":{"node":">=18.x"},"gitHead":"70911b6b9580d5f83c65f9cabe936b35e03299bb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-70911b6-202409301358.0_1727704810567_0.4996457935529459","host":"s3://npm-registry-packages"}},"2.9.1-a17ef21-202409301709.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-a17ef21-202409301709.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-a17ef21-202409301709.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"98d8028be967ba310f3e1f948a3d6f8c190d38a6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-a17ef21-202409301709.0.tgz","fileCount":348,"integrity":"sha512-3icnZLWzv5WuyN9Qh4mGZQHF169zH7ooFwgsAk6nIMyGI49z83dxD+OHi6hHBHNlBDsyKh9e4WRQQtfRdaYgmA==","signatures":[{"sig":"MEUCIQD5MfSFrkR0Mo73VMgMUNkPRJE0KUU7x5AK53vsZ48lagIgf5xZZfLtP+DlBK3a2d1lDL6zAojCifDz6wYmjlq5X7s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8242124},"engines":{"node":">=18.x"},"gitHead":"a17ef212f64414807fc8cb3294e6dbbf0a3b7c23","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-a17ef21-202409301709.0_1727716239491_0.49794485290922075","host":"s3://npm-registry-packages"}},"2.9.1-b6bb8ef-202409301740.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-b6bb8ef-202409301740.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-b6bb8ef-202409301740.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f58469e1d5c4a066afa2460d3cf38bdcd583dcb3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-b6bb8ef-202409301740.0.tgz","fileCount":348,"integrity":"sha512-Gzq08NGuYqmVn7C7ZfIaE3BhyjwF79wiyd7b9vcZFH0/ckOqjEHmTH9msO6sZSjmi5I456vPOm91xppboBX7lw==","signatures":[{"sig":"MEQCIFIqafHWmjr+plJwO1piFkRpzV4+vbJ3mNHz2YvUaELDAiBdSTKoNzs88nxG4m1m1P4Atz63tLPGgMcJFrMbpwoOrw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8242124},"engines":{"node":">=18.x"},"gitHead":"b6bb8ef32b5a8f0dbdccad3e2313990ba5833e43","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-b6bb8ef-202409301740.0_1727718108365_0.9268436024532363","host":"s3://npm-registry-packages"}},"2.9.1-a1cc1c5-202410010925.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-a1cc1c5-202410010925.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-a1cc1c5-202410010925.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4c341d481e433c2ff560ee84528e2af1eeeb0eac","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-a1cc1c5-202410010925.0.tgz","fileCount":348,"integrity":"sha512-vttiCNydxN1UdE81dV9krOl0W+gTGHarcXS12Y8B1zxYHK7Uwe8WxEXCGLgnJQ5DQR+532DWt5yuGj3/hCMbWg==","signatures":[{"sig":"MEUCIAUOSwBGscYjwznr94J+JBeSsBnhhM7dQUbd4mrh+jHcAiEA3P7CFjFp/XXeeKehl0vG1lKewg5N4qc7U6LSpqdjFGs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8242124},"engines":{"node":">=18.x"},"gitHead":"a1cc1c5c78f60819d14987ce13af0fa85caec81b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-a1cc1c5-202410010925.0_1727774810109_0.6137874909551817","host":"s3://npm-registry-packages"}},"2.9.1-f40f811-202410010949.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-f40f811-202410010949.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-f40f811-202410010949.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c3f053843a916eb381596b5f8f19d6afa0ed2778","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-f40f811-202410010949.0.tgz","fileCount":348,"integrity":"sha512-6CCDherG0U0cSwn7ZDa6ToPxAPDAjv+oy5Y9iVAUEkrHR2BWSfOIKM2RWp5+FGjcwk/fNfGhqWTEeldcooikfA==","signatures":[{"sig":"MEUCIH5yDdXuAuQG0YP0mKXzwT9ml/t0Neh/d9/VN4AnachdAiEAkgOBDDPjR4FG3d7PIk+2SYs49XEiPIdfNYfhDtWKJZ8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8244071},"engines":{"node":">=18.x"},"gitHead":"f40f811d64cf3c2d27c5d9f67fed7ae9d4647147","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-f40f811-202410010949.0_1727776263128_0.13785358267240344","host":"s3://npm-registry-packages"}},"2.9.1-61e8751-202410022046.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-61e8751-202410022046.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-61e8751-202410022046.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8bf18324d9ffd6d20a062d27e83a0c0e1009402c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-61e8751-202410022046.0.tgz","fileCount":348,"integrity":"sha512-TEGdX5kBWE/OMSHZQGWl56ogGXYNm0V5yTuoQ1M8k1B81XINAdkIL8y5SInXUHHY7x5HGek5bzV+wxtYsvPpAA==","signatures":[{"sig":"MEYCIQDpZIsnvvJPiswyVQPJyjGYKRs2qbnzUv3EpQBZlh5U6AIhAIxi2N/yCh8hjrblD0Bcl9EfujFlDnaKbXOEaTiMIMAU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8244071},"engines":{"node":">=18.x"},"gitHead":"61e87513b5f4841c4558b5d8e63bf46d52c9544d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-61e8751-202410022046.0_1727902068528_0.7536573208377046","host":"s3://npm-registry-packages"}},"2.9.1-ddf41f6-202410041158.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-ddf41f6-202410041158.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-ddf41f6-202410041158.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7f5ffb622626e04b2077b61dee6e15b03c4668e9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-ddf41f6-202410041158.0.tgz","fileCount":348,"integrity":"sha512-BTd+IUn9100uGRm81CBNJz/MCQG5Q0RZoi0+foWwZrDTGkg17YYWI4xy7jGXDvaHWNsVXYfAhIZ1ckSRrEIPyA==","signatures":[{"sig":"MEUCIQCb6gIgW/JX/ArWQlvQskHgEjYavLy6SjRqRm7q4KARdQIgdTzrH8tFcZVXxBmPp4OhP5COpICTsr972Sx7JuQOJ5I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8244074},"engines":{"node":">=18.x"},"gitHead":"ddf41f6dc4015c2d943b632aa2cb40f40635cce0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-ddf41f6-202410041158.0_1728043155383_0.2097894739823256","host":"s3://npm-registry-packages"}},"2.9.1-85bbe09-202410041448.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-85bbe09-202410041448.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-85bbe09-202410041448.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"891cae53e04d32a5bda67b078f3eddd58ea8c0b1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-85bbe09-202410041448.0.tgz","fileCount":348,"integrity":"sha512-eCw7SgVGoHxlx/WfSce7M+VG6HmNpoKKbKcck1iUSbTQFVAQU+XG+XfDwKFq5o7/UJGbVdhEmxX1F1wQV1QDHg==","signatures":[{"sig":"MEYCIQDjCCMzsZbuL6ltq7T0YmLk1EdU5mvSUiebBBAAZ6r9ggIhAIDxZg2to+lw5DS3X/jlGsZYvVmt9Z/1240+YdELB0Vd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8244074},"engines":{"node":">=18.x"},"gitHead":"85bbe0929cc13da860010f6a04fcbd0686a44cf8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-85bbe09-202410041448.0_1728053392875_0.3561809718134228","host":"s3://npm-registry-packages"}},"2.9.1-49214c9-202410041608.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-49214c9-202410041608.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-49214c9-202410041608.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"537c16fe3a60be66b55977de8242fdfd2068b8ba","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-49214c9-202410041608.0.tgz","fileCount":348,"integrity":"sha512-EpYGQGohZMyGtM5NCewmxyIRCSjyQZUOJvP+6zl3UQSo0+2xg5jB8KT/itaptXAPUNdqeMhHwJ6a7tU0BkDXtg==","signatures":[{"sig":"MEYCIQDDgLN5bjSaoLZWKquucMsa47wpl2JQAZ7LMuQMVhYE/QIhAMu3SNXlTb5ww4KVaLWQkDmDgYjhk7Q1dD37oR8fH2EZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8244176},"engines":{"node":">=18.x"},"gitHead":"49214c9833c3c4bdbdb65a63357bfbfd89fd5d89","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-49214c9-202410041608.0_1728058146616_0.23747949000799418","host":"s3://npm-registry-packages"}},"2.9.1-6168cc5-202410071248.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-6168cc5-202410071248.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-6168cc5-202410071248.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ea6e51c564a63dc80ce96a52894f9f4a14b9b375","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-6168cc5-202410071248.0.tgz","fileCount":348,"integrity":"sha512-BDsbfxur2dePFrSdDrU+8WQncE/azyX5O8mfv5IwmT+NoFlwkK98ceQu64EE3Pm5e0AHqfP3bji2oOvdMFD3zg==","signatures":[{"sig":"MEYCIQDd+FfJrVO8Giyw+86KFvchLk7Jry6M0ELZE6zGbmOc2gIhAOZAcZNuM7a31DhxYUKQwnDXsGg9F3ytB5C5Uh10QRuo","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8244177},"engines":{"node":">=18.x"},"gitHead":"6168cc562b6b251a6dd0a53700cce60e7a29642d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-6168cc5-202410071248.0_1728305365724_0.07371440981560018","host":"s3://npm-registry-packages"}},"2.9.1-ac9c834-202410071513.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-ac9c834-202410071513.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-ac9c834-202410071513.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"86e6a317923155e5805e9f7909bcdafd43d478c1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-ac9c834-202410071513.0.tgz","fileCount":348,"integrity":"sha512-//VUEyTkegsABrrBPZfo/ikPfd05qjpCNfvgEvlekExdog2tpZ0LSrEZsCu+XBqUxgQvzXwcnuvO5RNyoKpjFw==","signatures":[{"sig":"MEUCIQCSewXkKGOYHW4NfeBYJR3DXgyAMi3CAJ7kKHNAy0wODgIgIkt8M7S3IIR8LxUqbjU2kdvkO2noSZmQFzO67Ket9Ik=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8244267},"engines":{"node":">=18.x"},"gitHead":"ac9c83495ca0b03e69687adde80fe5bf9d143833","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-ac9c834-202410071513.0_1728314091034_0.5721718274096419","host":"s3://npm-registry-packages"}},"2.9.1-ac9c834-202410072009.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-ac9c834-202410072009.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-ac9c834-202410072009.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"13f6232a22dfd89cf01a5d1ca643c73e658f7f55","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-ac9c834-202410072009.0.tgz","fileCount":348,"integrity":"sha512-SHr6YSzTvRGWMoLhq/+uXftp0LKgweCF+PeS26kPa3QqQaTZ6svL1MCwNMm6ZMGdaZ7gjZ+71VBo2VtvGY6mbQ==","signatures":[{"sig":"MEQCIF4bbXFAlzGjbhopLVlWGby+n8M5pwJO/ACJNItmqeo9AiA3EPvO48Pr3AfWCwEa2X7fqDVKT5/a/wbPSRVbu/7KJw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8244267},"engines":{"node":">=18.x"},"gitHead":"ac9c83495ca0b03e69687adde80fe5bf9d143833","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-ac9c834-202410072009.0_1728331845034_0.24947777741975807","host":"s3://npm-registry-packages"}},"2.9.1-8acfed2-202410081222.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-8acfed2-202410081222.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-8acfed2-202410081222.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0979aa2d44b5570b0e04ec6cbb2296bd9fdad97d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-8acfed2-202410081222.0.tgz","fileCount":348,"integrity":"sha512-Xu1HHx3gEiNMo3AAeP3a2w81nEQn60gHgTIOXEaoNV5NO9NRr6QCfGAr8MGLXR3ziRjn5JCYmjbRKukWdauAgg==","signatures":[{"sig":"MEUCIGtDbyJ3iI4BQBaYeu4MtWnxocTTZ3HXqAaX/oijKBXOAiEAhoDBPo0Ji9rtEP9kbbkEoOjypDdrtjJNKc3k9cSDK6I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8243250},"engines":{"node":">=18.x"},"gitHead":"8acfed2f1f3205c1ad3e57d8358b7880909d2578","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"nightly","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-8acfed2-202410081222.0_1728390187609_0.6814201167396547","host":"s3://npm-registry-packages"}},"2.9.1-e8ed5c3-202410092040.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-e8ed5c3-202410092040.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-e8ed5c3-202410092040.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f10e3e0134d16c63f9f98c3437827cc38f0c65aa","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-e8ed5c3-202410092040.0.tgz","fileCount":348,"integrity":"sha512-LDa5mLiTNmkA0Tq0xqXAAuAZyU9u2pLQ7819p98SkO6c6eqsjxlZdH4CbhnXKcZuIQjpvsxi4STJ2rF3qK7e2A==","signatures":[{"sig":"MEQCIDmmzhZgpKEiBH7jVrdXkFOuyaH3IIQW/yGnt00u8z7wAiBP7HDMRN6OA4nYOT0NXQysumMWnvjkzV+S34O3FZHOCw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8243937},"engines":{"node":">=18.x"},"gitHead":"e8ed5c3124734d15159047cc73d3dda141c6027e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-c0fa5f7-202410072009.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-e8ed5c3-202410092040.0_1728506505493_0.6700277014693896","host":"s3://npm-registry-packages"}},"2.9.1-2ca9a02-202410092126.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-2ca9a02-202410092126.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-2ca9a02-202410092126.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"45c4ce1380fdea17cef1b9bf9fc51129393e7741","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-2ca9a02-202410092126.0.tgz","fileCount":348,"integrity":"sha512-8jqVq4hNfIc0ywdYyitHO8OP4afVsIeFfzdEGjj5UiP8BKQMaJGemAuvuacpZgm+3XhSf6gIbLswQUI7Pthv/A==","signatures":[{"sig":"MEYCIQCd+4aMvy6b8WqLpdDbXeZHGXyakTOZniYvPjurvpBZuQIhAKQPmNXMXbcPShLpemXNYMJh7qi6VyPrKsky7J1daj/a","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8243937},"engines":{"node":">=18.x"},"gitHead":"2ca9a023c38fb4d0f202d23ffb6e0b5ecb78cfa7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-c0fa5f7-202410072009.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-2ca9a02-202410092126.0_1728509251844_0.9240598371971844","host":"s3://npm-registry-packages"}},"2.9.1-8cf9231-202410100839.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-8cf9231-202410100839.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-8cf9231-202410100839.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"08e8bb145c9ac70bc2e7443d3e678858d8afabca","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-8cf9231-202410100839.0.tgz","fileCount":348,"integrity":"sha512-pnAI/RcKoJePsak6IkIqP9El7kwFw6AUNwuDLZf+MBhVAioHrtpi8ln0Bwd+L9xRG9FCSwB0cxewJzseuP4qDw==","signatures":[{"sig":"MEUCIQCjQ95YPqhf/T2hbavjYQ/rknujKqo07k9TF9ot62eWBAIgD8yOC/KFog2IfydlthsFFdgwJUh6KeITZGRftOAST44=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8245994},"engines":{"node":">=18.x"},"gitHead":"8cf9231dbbfa6215b8e3cc3121ae1f0af556be5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-c0fa5f7-202410072009.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-8cf9231-202410100839.0_1728549641153_0.6557186732801081","host":"s3://npm-registry-packages"}},"2.9.1-8cf9231-202410101249.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-8cf9231-202410101249.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-8cf9231-202410101249.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"245965a895adf87af7305b6e2c12c87b42dca627","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-8cf9231-202410101249.0.tgz","fileCount":348,"integrity":"sha512-IdgNeA+BxdivXpeYTHLyX/DobTjbkwgbn0C5zZHly4JI++jFavzCMzUwChLn9UwQm/8NJpA/kAPUsFRGiaEs6g==","signatures":[{"sig":"MEUCIDC+eVScIL4N20kiG+ntbNRPjArBdTlPkXn1bdtSeklcAiEA4SaSJrYLEqKe3JNmhso3AGhGuBZel7Whg26FNnUXWPQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8245994},"engines":{"node":">=18.x"},"gitHead":"8cf9231dbbfa6215b8e3cc3121ae1f0af556be5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-c0fa5f7-202410101249.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-8cf9231-202410101249.0_1728564665844_0.12368957666188507","host":"s3://npm-registry-packages"}},"2.9.1-8cf9231-202410101252.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-8cf9231-202410101252.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-8cf9231-202410101252.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"757935584683c0ee9878f8b08c7b81207ef39e54","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-8cf9231-202410101252.0.tgz","fileCount":348,"integrity":"sha512-4902Sn94qMYunBdoPPbpO6h8MZsKYFU3I1dj2ZbIvCrykqLLl0WnzHncq6kmjADfuYph2NXIsHneYwCrFRnspA==","signatures":[{"sig":"MEYCIQC+e4k37FzA5RfItZoiU1jqKU+qmemJGXdlLt1ODNlDFgIhAPmLUgtgfS1CaipbW78zWQAp2NFWr+4t7XWVk8BOL20y","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8245994},"engines":{"node":">=18.x"},"gitHead":"8cf9231dbbfa6215b8e3cc3121ae1f0af556be5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-c0fa5f7-202410101251.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-8cf9231-202410101252.0_1728564808383_0.7172375411651275","host":"s3://npm-registry-packages"}},"2.9.1-8cf9231-202410101254.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-8cf9231-202410101254.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-8cf9231-202410101254.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3e994717877d798dee1c4a12b991340690e5b207","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-8cf9231-202410101254.0.tgz","fileCount":348,"integrity":"sha512-KWiHGlhfS3WJBZO1oQupFSTbLD1gpOu7yY14EmOq/q31yE7vmKMVFuvA3DKf+LIpbmD3suBnuqCKFPXMYDEvNA==","signatures":[{"sig":"MEQCIDhmIxpR8UyOg2h8+eKxkdSOdHJi5bGs/FnPVoD5XtUcAiBjNuVUAQNuHS3XxS4oBH6rbZQpCsWJmFDEqpXllSD24A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8245994},"engines":{"node":">=18.x"},"gitHead":"8cf9231dbbfa6215b8e3cc3121ae1f0af556be5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-c0fa5f7-202410101253.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-8cf9231-202410101254.0_1728564909733_0.8953200150628153","host":"s3://npm-registry-packages"}},"2.9.1-8cf9231-202410101255.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-8cf9231-202410101255.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-8cf9231-202410101255.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"db08527736cf4a701035f4bb06e6c2e95cdc45f6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-8cf9231-202410101255.0.tgz","fileCount":348,"integrity":"sha512-K90wHxC4kHNYR3xM/ury2wZvGB+QvlUrRCb6rIYYeH+9kF69ffID/OfHagYkESWIBPhwTtHg73IsKR5RuwGeWQ==","signatures":[{"sig":"MEUCIQDUtiBZS2uj6fL1+3y6B0QlFscVRS96/hrZD9ZdPxq4lAIgcSUClml3FR41ayAogoRcBthQ+2A8R8wHEMzJORUF+3A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8245994},"engines":{"node":">=18.x"},"gitHead":"8cf9231dbbfa6215b8e3cc3121ae1f0af556be5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-5069110-202410101255.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-8cf9231-202410101255.0_1728565007938_0.772802204474627","host":"s3://npm-registry-packages"}},"2.9.1-8cf9231-202410101259.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-8cf9231-202410101259.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-8cf9231-202410101259.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1c3c9d2a62c51729bab894d79522fe1a440da402","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-8cf9231-202410101259.0.tgz","fileCount":348,"integrity":"sha512-CnsGgqb1BpFoGMgAl+t1JTovoDPakut+y1xyfsQ37jyCohEl9c4eyMUc58TemWr+SDy62C8udP+P+e/V6q4feg==","signatures":[{"sig":"MEUCIQC1Spjo9oRftsqQjiJZH8dpYfc8YILaDEMT2pXFCx/9pQIga4VcPRoyBnG0/xGljyeucdPZzhjLs0XuAN9gZ2eeMFM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8245994},"engines":{"node":">=18.x"},"gitHead":"8cf9231dbbfa6215b8e3cc3121ae1f0af556be5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-cbec491-202410101259.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-8cf9231-202410101259.0_1728565259647_0.16742456231192837","host":"s3://npm-registry-packages"}},"2.9.1-48ca06b-202410101436.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-48ca06b-202410101436.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-48ca06b-202410101436.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d067920510b8721ab9722fe10f46f0545740b410","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-48ca06b-202410101436.0.tgz","fileCount":349,"integrity":"sha512-BNeVEm+fOsS2pAVonrjnRIr/Fm+sGyTJxY+QdzZKr1QCm66hez5TPzyTzyLFQTkWGx3Yx4flXsOgt7BxLURhag==","signatures":[{"sig":"MEYCIQDPDe2qlspH+G5c/9r8Ke3ob6+M8UQjk5eYXyV+ZoFtXgIhANk8QEGcshE0cmEyEwLqBojk8aOaiivqq/SVX6kJb3me","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8249975},"engines":{"node":">=18.x"},"gitHead":"48ca06b2ad2344a9cae3e1bf2983eda20b3f064b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-cbec491-202410101259.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-48ca06b-202410101436.0_1728571086511_0.2897398363474011","host":"s3://npm-registry-packages"}},"2.9.1-091eeaa-202410101610.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-091eeaa-202410101610.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-091eeaa-202410101610.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c9490e265e3da6506760e66af8cf9f12b3d0e3f3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-091eeaa-202410101610.0.tgz","fileCount":349,"integrity":"sha512-7BJ7wZStv/gsgvKLZTaG0CIwV9yY/VsaMXofHZlCderAC7DI3wXgE8aEXZhUbUe/zJphtLrBzjjsSe0//NYdeA==","signatures":[{"sig":"MEQCIG653eLYvdT1lnAit/mj2+Ene9PIUY/Y0obXgH8Yz4a0AiA+CAE/JMxrncFcY5XJ1jIi4fVB+CY319x2L0v0KgeOxA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8252127},"engines":{"node":">=18.x"},"gitHead":"091eeaa49c94153e5401e7d37873a55366361d95","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-cbec491-202410101259.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-091eeaa-202410101610.0_1728576697194_0.9398381527465105","host":"s3://npm-registry-packages"}},"2.9.1-e121a48-202410141325.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-e121a48-202410141325.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-e121a48-202410141325.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dd87483679854edabcc8e4e3ad20d02fe949c088","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-e121a48-202410141325.0.tgz","fileCount":349,"integrity":"sha512-HD6EM7eQDs03IzQmr6HFJderNLh5qQKY6DJ+Puaq11/Mkt6eeYXzofNCthqswO48El2CdS4ceryOSM7cplgTqw==","signatures":[{"sig":"MEYCIQC6an295C33Jsvwj5JtVBYW6/umzB+Qe3Z57jVwGzCZnAIhALwyHW17VxhB85dUb5Pgk0+JHFMiWNQulW+kRc32R0+U","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8252099},"engines":{"node":">=18.x"},"gitHead":"e121a48f0f2ffb9d9b939e5a425d5119cb829b7c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-cbec491-202410101259.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-e121a48-202410141325.0_1728912405811_0.41212225920455325","host":"s3://npm-registry-packages"}},"2.9.1-49321fc-202410141356.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-49321fc-202410141356.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-49321fc-202410141356.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"eacc87e9ae11e9fcd05a3b32271f8a3fffa3e5b3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-49321fc-202410141356.0.tgz","fileCount":349,"integrity":"sha512-uwOoMCSwI4/jisHQKkTPY2nXrJcXVpBIOcpy9HncZlLdly6+mjRoVmulKU3kSYG6O0zBQ542/Xjxm+58p+R0cw==","signatures":[{"sig":"MEQCIFL7VcuB+SL47hwr6ssmd5btUrFOISUZxYqf36UKQsLCAiAeffu/B5FVqWlYY+npFya55l3/Gyq1+M/qt/7/C3MV+A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8264482},"engines":{"node":">=18.x"},"gitHead":"49321fc312cc97c4a11e75874f101b40dcb45766","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-cbec491-202410101259.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-49321fc-202410141356.0_1728914289155_0.8761167321457795","host":"s3://npm-registry-packages"}},"2.9.1-49321fc-202410141525.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-49321fc-202410141525.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-49321fc-202410141525.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b4fcfc220748e8b5d3b4a541b64ef7dfc876ba1f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-49321fc-202410141525.0.tgz","fileCount":349,"integrity":"sha512-V72TYQtF5/pMm3oqTkpzkNweiPW92KsThIOQb8hkSYy0rhhqBLXvcCxCdUcIYXspSqtTAO/WaSwvazeQ8XHnqA==","signatures":[{"sig":"MEQCIBiJFBClMQKU9FC3CFae6S2X2scfklxvXwkMedcSsqniAiA53MunEXJjj5Xz3knEoVARUhzaUNgopW6CQRDnu303Hw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8264482},"engines":{"node":">=18.x"},"gitHead":"49321fc312cc97c4a11e75874f101b40dcb45766","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-cbec491-202410141525.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-49321fc-202410141525.0_1728919612249_0.6494270239165669","host":"s3://npm-registry-packages"}},"2.9.1-232eb7c-202410141558.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-232eb7c-202410141558.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-232eb7c-202410141558.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2d1214e8cc6ba824e8e3450c3304a71a00f5fdaf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-232eb7c-202410141558.0.tgz","fileCount":349,"integrity":"sha512-9ikeoPP+gN7c8AOmDKdc7Fd7o48nSGMmYG5mctbsTM7yc55x+2YzrC6ry8Y6l81hMqoMDZhbdUNqikeYDs2Y8w==","signatures":[{"sig":"MEYCIQCU8KC9KyhhicxPTU7GQD6Ph1JKZHZ8W06sz1XlGHiiRwIhANXe2J5dmYkTeFPsfHD6JVdgJOfqsba5ZUaZeQVMljyx","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8264482},"engines":{"node":">=18.x"},"gitHead":"232eb7c08480471cc0892fd210858755d8f7b3a7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-cbec491-202410141525.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-232eb7c-202410141558.0_1728921588121_0.36487567753313876","host":"s3://npm-registry-packages"}},"2.9.1-4912acb-202410160910.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-4912acb-202410160910.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-4912acb-202410160910.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5877f616c5ef310c6b3f6ebe6030aa7edd4fecd8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-4912acb-202410160910.0.tgz","fileCount":349,"integrity":"sha512-E5770fkUMyCBLsa9ujZpUcVqt+YGeRJZ8eqMg3+OLiDLQ4tMJmrbHr0h7fjmsLZTpsv9qu01cZ20SUoKDKGzsQ==","signatures":[{"sig":"MEYCIQCMjWpyT7NfMGamyG42BGsV2h2r25Ka22sERhnMHaBLYgIhALteA9UDO5VsUI2XMDkH3v4vqAlcrMgHffXk7vXrVh2p","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8264482},"engines":{"node":">=18.x"},"gitHead":"4912acb735d7bf55ddba7342ff77de3b4a45c990","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-cbec491-202410141525.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-4912acb-202410160910.0_1729069885297_0.10148085096281423","host":"s3://npm-registry-packages"}},"2.9.1-0084315-202410161047.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-0084315-202410161047.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-0084315-202410161047.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6b01ac54493c98b544cfe3569369649c72744a73","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-0084315-202410161047.0.tgz","fileCount":349,"integrity":"sha512-VjO3+L3+CMyMAyxEFlI0Hr1gKGZD15FoeJh2MpOEKKdekfme/WhfAZ512/6NBEHbKCSegv4BAwiVjL99mHt84g==","signatures":[{"sig":"MEQCIHwB7Cd5NqEEjnJKEM3NDtwxyd4vKqsCni3AxhldtCeUAiBtJiC9FIv8z6EmmFk6cMCAa6amM1Eet3hsa0HP3WsMrg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8264717},"engines":{"node":">=18.x"},"gitHead":"0084315a0e7d5cb924aaa8b5b5e01c1894caef6c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-cbec491-202410141525.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-0084315-202410161047.0_1729075718826_0.5424090207935808","host":"s3://npm-registry-packages"}},"2.9.1-471194f-202410161552.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-471194f-202410161552.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-471194f-202410161552.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f17ca604bde49f6ae51f630c46b83e919f236a30","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-471194f-202410161552.0.tgz","fileCount":349,"integrity":"sha512-ClH+RFiwwQ8LLYtvGb8SQpyewA3OPtSd91RSdoqE/2Io0H0FvI4I+cmAaO+VQCoy5x23gW5PbQZ3kbj4eocizg==","signatures":[{"sig":"MEQCIBzMo9Rw4S3SFOhhPzIo98Ru3ceoHKXXL/qsuNBXuP1qAiByObsOmYSoU6LZBQ1Qvsctx8qWQWp+Ij60puYkJbQKIQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8264701},"engines":{"node":">=18.x"},"gitHead":"471194fa752fa80558284fde7d8c2cdc85ecd861","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-cbec491-202410141525.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-471194f-202410161552.0_1729093990332_0.8564998745907602","host":"s3://npm-registry-packages"}},"2.9.1-712c411-202410181347.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-712c411-202410181347.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-712c411-202410181347.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b97271e9aedca07a85480ac6e931524b45e2e6d7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-712c411-202410181347.0.tgz","fileCount":349,"integrity":"sha512-lSSzRp9xEufbkOpgD9f3r9P2RLKGibzZRhM+jqb2LbCKXhNSjVyrBemV2AcptekzqIwkXCwGVWQqNG+Ky/BsrQ==","signatures":[{"sig":"MEUCIQDOnUGlxwqSkKZ19i9APcwdu4Nrfzw2arzCJzrqe2aH9QIgdPpmGDNpQQs+mYpuZqMw6pBCTEjAuzFaddH5TGP+/Zc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8266157},"engines":{"node":">=18.x"},"gitHead":"712c411c738e7368d4932cb17f6733cd4028e8be","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-cbec491-202410141525.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-712c411-202410181347.0_1729259329074_0.3952166720031218","host":"s3://npm-registry-packages"}},"2.9.1-712c411-202410210625.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-712c411-202410210625.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-712c411-202410210625.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2e35a33409a1324ed124c484f3278c6f70ec5bcb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-712c411-202410210625.0.tgz","fileCount":349,"integrity":"sha512-K3T/Xnu1qKV5OcHqY/Dj3foApoVYp7VNDnQ3LqzAb77yKAGASRSfQZbzwtHQsXp3wCuHyCKKlcgdurIecneLMg==","signatures":[{"sig":"MEYCIQD8HGYNVJ24r1FwEDYvqk4QTwZYTcqlUTbLvtzSrESGOQIhAJl3RX4dfdBlLMblIEvr8hVzDuVNXy38GogKoj1t66/V","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8266157},"engines":{"node":">=18.x"},"gitHead":"712c411c738e7368d4932cb17f6733cd4028e8be","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-cbec491-202410210624.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-712c411-202410210625.0_1729491970287_0.17716052567828444","host":"s3://npm-registry-packages"}},"2.9.1-46411ba-202410210921.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-46411ba-202410210921.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-46411ba-202410210921.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3785bb7e2ab0aaec0711e2963b14b37b505fc367","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-46411ba-202410210921.0.tgz","fileCount":349,"integrity":"sha512-zpmdYJqMr7QNRT4qRH2iSBJGOtON/mhhxq2KKA+oVH4v4Q0Z2sZX5z/W+jNBirdX866mQJ/buDlMyckB5hkClQ==","signatures":[{"sig":"MEUCIGgjSFTFZzeEXwDo9AcHUyTsMHfyxQg5tY4xDt/4PL3fAiEAiPS943oy0b2KrHYBUc1jtN0Dmnme0viJQNd2h3L1Fv8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8266157},"engines":{"node":">=18.x"},"gitHead":"46411ba87099f1c32449e8ca41abff67dcc59ccd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-cbec491-202410210624.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-46411ba-202410210921.0_1729502559246_0.3711939046883945","host":"s3://npm-registry-packages"}},"2.9.1-d7cb7a3-202410210934.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-d7cb7a3-202410210934.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-d7cb7a3-202410210934.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"af97ba62f7b7fe475e74a155f9be5172480ba3ff","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-d7cb7a3-202410210934.0.tgz","fileCount":349,"integrity":"sha512-dKUyj8A1nOHNcN+zjdxC7lNw5LpM4ixGEu2PlvQ97I25pq1VYCs28bypvNCRFLh4QafNIJq0n8TMGSKMana+1A==","signatures":[{"sig":"MEYCIQC7b7cOxh+nK4ehoHS5SWuDJlbewptwfi25piEfHMWEwAIhALuopJmYqDop1zkwc+id6oeVzAsXekPvbuLG40h+ER/v","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8266157},"engines":{"node":">=18.x"},"gitHead":"d7cb7a363f3309702911f37526c41ba094732f17","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-cbec491-202410210624.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^22.1.0","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-d7cb7a3-202410210934.0_1729503320209_0.5527494104709443","host":"s3://npm-registry-packages"}},"2.9.1-eb4d998-202410211037.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-eb4d998-202410211037.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-eb4d998-202410211037.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7743317dffa0cd2b92a0dd2af513cd897365c517","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-eb4d998-202410211037.0.tgz","fileCount":349,"integrity":"sha512-Bje6k7jMRSqKZuetzYuEA32LOW13O5fG9+RokDs0ryapCnzNxaGKerOEkFf8qcZketrWJYnAySz6Po0+VJBtoA==","signatures":[{"sig":"MEUCIAeuKyNxIlhLhvBh93bf6SVddW6/Y8wF6JNO0YoXOd55AiEA90QlRuhFM9pC5FAhCvWPdgMm13lE5vDlBw58UtthnoI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8266157},"engines":{"node":">=18.x"},"gitHead":"eb4d998e80e616c10e711667068ae508e358f35a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-cbec491-202410210624.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-eb4d998-202410211037.0_1729507146456_0.46989090015058954","host":"s3://npm-registry-packages"}},"2.9.1-eb4d998-202410211152.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-eb4d998-202410211152.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-eb4d998-202410211152.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fce6a9acca13ab1dee7c051c8aeef4b0dfd1cfbf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-eb4d998-202410211152.0.tgz","fileCount":349,"integrity":"sha512-uHCRyEmDtfV1TuhpK3Tf60oIhs8EG9OVUY15di9Imx+fCE8A5KRM3108fg3qfgh+4ILiUQ38c5kzV9C+HT65pA==","signatures":[{"sig":"MEUCIQDvkcKegyYAU0F/v+fNhjPdtCK9kZ1Rrp0q3SGD1YSkxgIgHn0qozetuf+5vL9I57mUwkPwK7mb0sT9Ebgmg8QR2r8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8266157},"engines":{"node":">=18.x"},"gitHead":"eb4d998e80e616c10e711667068ae508e358f35a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-c96f305-202410211152.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-eb4d998-202410211152.0_1729511646870_0.8745593809491059","host":"s3://npm-registry-packages"}},"2.9.1-eb4d998-202410211154.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-eb4d998-202410211154.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-eb4d998-202410211154.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4c18c1e84e6e561af660278632f575d9f6d0a171","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-eb4d998-202410211154.0.tgz","fileCount":349,"integrity":"sha512-mC7mwsVuB8LyflslazYf11GcLNaFHCxiVSZcf3KaJkqTmStax4FP1CTqyj3MTugzdZbqEzOkeN8CYi+TdIL8qg==","signatures":[{"sig":"MEYCIQDYvHQoasL2hL3DEnrFrCY+HjDko2a0vMKvxcAFVfavYgIhAOWFT+jnCCW17bmZPG98jsNzxSrcmyAs35UP1ri6OhHg","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8266157},"engines":{"node":">=18.x"},"gitHead":"eb4d998e80e616c10e711667068ae508e358f35a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-c96f305-202410211153.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-eb4d998-202410211154.0_1729511728636_0.12120055952155151","host":"s3://npm-registry-packages"}},"2.9.1-210bb21-202410211406.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-210bb21-202410211406.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-210bb21-202410211406.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9c9cca72dfa6ac51a05c92e98e085f73e668d5a4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-210bb21-202410211406.0.tgz","fileCount":350,"integrity":"sha512-b/71/JJqRhxq3JlghWQadzJEdF12NMjJ/4/FSmAHidLyPe+XYh/YnppwKsdBd7rEQEwmkIoEE2PDWWooarpT1w==","signatures":[{"sig":"MEYCIQDF+0jtfaC+zZpHxbyNiid+nE0LF2r8CcdB9Nm72u1+LwIhAL0w32P+kA4tCAN9Gs+XsUzpYC4rh71CjcB6/c+1z8Dv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8289637},"engines":{"node":">=18.x"},"gitHead":"210bb21356c0fb60f050df896a7ef55cb992c4d8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-c96f305-202410211153.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-210bb21-202410211406.0_1729519663835_0.689563331686804","host":"s3://npm-registry-packages"}},"2.9.1-5a01c3b-202410220907.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-5a01c3b-202410220907.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-5a01c3b-202410220907.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4f8a0c8b4b6825f43c637977f5ad46086e401334","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-5a01c3b-202410220907.0.tgz","fileCount":357,"integrity":"sha512-2UAqcHljM8II5bn+YxarN7vAE9qg+AJCo8uzmyKNgo98G3dffrPydGrh44FdkfcjnHKwUdba9PFeiF93eJLhLw==","signatures":[{"sig":"MEUCIFFyhTYNFSYg55D/OpGaoYtOMd9Emr6ajCp6HhhPG/C+AiEAuxf7FL15mJKb6GcVSU8EWTz+nV6o0n7r5kVUWUhqOy8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8315737},"engines":{"node":">=18.x"},"gitHead":"5a01c3bbe632c535eece4a8211439199f71bc833","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-c96f305-202410211153.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-5a01c3b-202410220907.0_1729588123760_0.962725786940074","host":"s3://npm-registry-packages"}},"2.9.1-607e2eb-202410220940.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-607e2eb-202410220940.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-607e2eb-202410220940.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a246288e70c73e7b9b195ad81fb2cc14b961ebf8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-607e2eb-202410220940.0.tgz","fileCount":357,"integrity":"sha512-LjgwYM/O5PGLw/j+Mp80nvnN+Y2w6bfuk2RtHGJQ+mZnCR1FM+VVWdOtXSWgDTpZoV3cWZZPnb+pYtJ07/9m0Q==","signatures":[{"sig":"MEUCIDHNnYsW7vakYhwW1lgPSKRXfoc2hywUYtNA8oSKOl5wAiEAgdeZ1w0hyw1BsTq8wTg6I4YLxG6N05npWsaas23Ij/A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8316229},"engines":{"node":">=18.x"},"gitHead":"607e2eb6851cb84dcd8fec1aa8d03370b7dc154f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-c96f305-202410220939.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-607e2eb-202410220940.0_1729590076305_0.8125399350581486","host":"s3://npm-registry-packages"}},"2.9.1-607e2eb-202410220947.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-607e2eb-202410220947.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-607e2eb-202410220947.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"05756c00e6bc9df3debaf23fa55635e4d0652e54","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-607e2eb-202410220947.0.tgz","fileCount":357,"integrity":"sha512-Jos/NTdYFCqtKLyY6omScrr/BEqWxQDnbYMb/oTvszqK2GWu9M64krIPLjSQWOFRFHcK6aFyyGKY0GIHJLCtcw==","signatures":[{"sig":"MEYCIQCkjn6GwAOGjq+H6FwTZknLsLhaNtrehEz96u83qZgMPwIhAJIfwuOB9msKaNoojS1J5XcUsiIaHzObVO9LkSfZgRn7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8316229},"engines":{"node":">=18.x"},"gitHead":"607e2eb6851cb84dcd8fec1aa8d03370b7dc154f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-c96f305-202410220939.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-607e2eb-202410220947.0_1729590498571_0.7706335993609448","host":"s3://npm-registry-packages"}},"2.9.1-48a8c0f-202410221011.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-48a8c0f-202410221011.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-48a8c0f-202410221011.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ecf2dfb32ee8a63b339036428ebfad8a55610484","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-48a8c0f-202410221011.0.tgz","fileCount":357,"integrity":"sha512-qddIu83kYQk46P30tBwJMlkxT46cHyLR/oKAZoL+mPTz0aWhY6HXgrjzFi3xDaxmKEREt76q65WnzAoBsraGYg==","signatures":[{"sig":"MEUCIAsBBhKn/Fy0JFkwp8nq4KB9vq2R4Pt/9Skrf1KQgdOgAiEAq7FQMMw1c2jZ0ukS5hPwet8KyfmJT7GSXKdjMKEnnE4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8363725},"engines":{"node":">=18.x"},"gitHead":"48a8c0f9bdb7b77651575f2566842c85d074bf32","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-c96f305-202410220939.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-48a8c0f-202410221011.0_1729591971522_0.746611415950923","host":"s3://npm-registry-packages"}},"2.9.1-659f18c-202410221041.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-659f18c-202410221041.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-659f18c-202410221041.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3e29626babd40ce8ab7e91c34f6bd59bf0effc0d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-659f18c-202410221041.0.tgz","fileCount":357,"integrity":"sha512-jl6LSGEAKN6Pbq+BFASJTrZIuZ0u4x8NFo3sReiPsgbp7LvFyn8kFWuUrod8qrD3jjHixjqSvI+8uxGznRDUBw==","signatures":[{"sig":"MEYCIQCzR2bW97K2kiXEMibkUINdS9X80EedWWA6eLDzf3+o7AIhAI6fjSDjOab3LlviQVG3iCJidbiuGcg16hArb8UEiPF/","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8363725},"engines":{"node":">=18.x"},"gitHead":"659f18c9dafc7fbbe185d1976040929e1b9ef6f3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-c96f305-202410220939.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-659f18c-202410221041.0_1729593739338_0.6987532087083026","host":"s3://npm-registry-packages"}},"2.9.1-a63c3cb-202410221110.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-a63c3cb-202410221110.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-a63c3cb-202410221110.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ead96e6eee0038be0577950fa426a45318bf8b56","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-a63c3cb-202410221110.0.tgz","fileCount":357,"integrity":"sha512-mvZtpr8Duk6CdzSMg9LqI7QN+shsSXFTDHzDtwZhEFNEpouSG1FNnrmFGcT3IWBahZ0g7dVNRnstjCMnZKOZyg==","signatures":[{"sig":"MEYCIQDAgW6wzUZNdjQMhcfASrueqFxFh5wN6zL0t/3N3apL8AIhANLwMccAaw5yvLJYJTBqpwqFiMXQYdZhY6TxgcVZ+ai8","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8363873},"engines":{"node":">=18.x"},"gitHead":"a63c3cb1fae387d70707caaf9801184aa4ae8249","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-c96f305-202410220939.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-a63c3cb-202410221110.0_1729595527995_0.8478685506620223","host":"s3://npm-registry-packages"}},"2.9.1-2ac81cf-202410221200.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-2ac81cf-202410221200.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-2ac81cf-202410221200.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8796593b26d4c45125c762d139bd95601ca89adf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-2ac81cf-202410221200.0.tgz","fileCount":357,"integrity":"sha512-vkrmK/eauzFo2ofO2RbkP2ERjwPL6LdlGm2XWEyIiJbvJK6VZRWbxEHySi0gXGoCBlXaCfK4p00swrXacEcirA==","signatures":[{"sig":"MEQCIBvZcVgcl1x5/BHq7jykXxkIZtAoWw/VB4s1fzCF9wFCAiAMPU2T9chuqkq8DfzJ78p+VEdUhVI/hAzKMJMQnfbHNA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8363873},"engines":{"node":">=18.x"},"gitHead":"2ac81cf14bc88a32126d3e0214ebb68e0862bda8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-c96f305-202410220939.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-2ac81cf-202410221200.0_1729598523393_0.5954838122104407","host":"s3://npm-registry-packages"}},"2.9.1-d61857b-202410221354.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-d61857b-202410221354.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-d61857b-202410221354.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"67afa315ca684fdbdad524efcf56e34c9fcac48d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-d61857b-202410221354.0.tgz","fileCount":357,"integrity":"sha512-8KWnjCS5r60AjGivUG0UkQzcBRQleRgxCpLrHI0QYEzyzFQNgjtdK7MT3NUdo0kxMqo6MmszQhz0omnfrYkilA==","signatures":[{"sig":"MEUCIQC4ygGfF1z+rvv7eXu3jt3IUeanmVo2J+JVFzm5SVdazwIgQM3Z0DZD/SI1S5KAdvvlUew4U9/RLadfZ2ryd+ZNxBI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8365645},"engines":{"node":">=18.x"},"gitHead":"d61857bc3c03ae881d31020e144f1adfdfc7c2cc","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-c96f305-202410220939.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-d61857b-202410221354.0_1729605342866_0.37680471566449514","host":"s3://npm-registry-packages"}},"2.9.1-a1dcf84-202410221430.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-a1dcf84-202410221430.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-a1dcf84-202410221430.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"36e4b0b1656ea8e4e035ff9a0b985a5a441b05eb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-a1dcf84-202410221430.0.tgz","fileCount":358,"integrity":"sha512-QPgXsjIcZKnOeJCe2hBJCRffx5ee2JAkvQYcNU7q7tUv2Mml/XkBTOISD8f2SVtYyCM6NmcdBQsvptgisBw3iA==","signatures":[{"sig":"MEUCIQDjUMbGshGESJKa2iSKE9gblZK4k76b7+kU0ih2SvespwIgfKZU2ildhMveIc3gt8AhxXbLXN9Fajmac575lzn5Hh0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8405332},"engines":{"node":">=18.x"},"gitHead":"a1dcf849059af53912852859e56abd8f73bf1f63","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-c96f305-202410220939.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-a1dcf84-202410221430.0_1729607503686_0.6932002676789639","host":"s3://npm-registry-packages"}},"2.9.1-c1b46c6-202410222024.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-c1b46c6-202410222024.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-c1b46c6-202410222024.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bd113535fe7492a3c1d4d564f196909f7e76271f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-c1b46c6-202410222024.0.tgz","fileCount":358,"integrity":"sha512-0lu/FYHcKrtw6ByP+XaEOD+BDaFr5M7ygWF5fA6h9klcKFFIH3i5gmqH0bXpWRdP/HPCURI4tT393gNxiUJoMQ==","signatures":[{"sig":"MEUCIQCFM57dPWjAgno4/+kT/bbCEH4/bloXnSByLntFZuFtwwIgacH+mgg+pRohyICxp9paa96YNcyHIcNHs/pLYtHelsI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8405332},"engines":{"node":">=18.x"},"gitHead":"c1b46c66f1d915b4ae632f3a60ce747a840fd918","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-c96f305-202410220939.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-c1b46c6-202410222024.0_1729628745182_0.148076572482172","host":"s3://npm-registry-packages"}},"2.9.1-9f6fc28-202410230857.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-9f6fc28-202410230857.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-9f6fc28-202410230857.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c66622390124c0605c46b355a8efc2f3af9ad5a0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-9f6fc28-202410230857.0.tgz","fileCount":358,"integrity":"sha512-e+ts8c1/p9ezfQUIqi3jtALQRAQq66sAQtX4fCjTb1M+4Pp79590GYZspqFLtxuBKEaB650iH3rb/D874hz3Rw==","signatures":[{"sig":"MEUCIBreiDqrRjmB2K2xk+etvgoq8klw+C0YjKEpUABPfioJAiEAoPULfmUXXiOTPIKUebjxGB6Jtl5SgQ/J/zX4NVxxc8I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8405712},"engines":{"node":">=18.x"},"gitHead":"9f6fc289bcdd3161d71e102d25ce251965a82a99","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-c96f305-202410220939.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-9f6fc28-202410230857.0_1729673889304_0.060904969212125515","host":"s3://npm-registry-packages"}},"2.9.1-f52c2cc-202410240758.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-f52c2cc-202410240758.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-f52c2cc-202410240758.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9dd355aeea12b21491ea1eaf1125911496273818","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-f52c2cc-202410240758.0.tgz","fileCount":360,"integrity":"sha512-5XMR2CuITxE3RwWHfKrTtNIjMO/9nY/Cu64c70vIA5mmMVKoIqxnv5Sji+XDDde3BZ3jPY43DpaxfqxP9WsZ+Q==","signatures":[{"sig":"MEUCIQC7ym1f2C7xs4Di6UhO6MISpRG/1es2aSQxcPqHzogGVAIgZ9k5pRCrfCf2Sbnh8JZsjANLCLiGC6bqs1KAZ9X6Vl4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8490853},"engines":{"node":">=18.x"},"gitHead":"f52c2cc5c666325ed749d7bc080fd84d77b1ce4d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-c96f305-202410220939.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-f52c2cc-202410240758.0_1729756773115_0.8597685564130968","host":"s3://npm-registry-packages"}},"2.9.1-aea67e9-202410240847.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-aea67e9-202410240847.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-aea67e9-202410240847.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d772d1232e716ce787562a10fb445154a5a0a0b3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-aea67e9-202410240847.0.tgz","fileCount":360,"integrity":"sha512-bsORJBvRJtnLXH0GIeMa1x8aHBPe24IzQcXyHrP1xCavpRB/7NOaaxseWGsULppXtmpLRZwNkz1z7BCNoEjeGg==","signatures":[{"sig":"MEQCIEyHC/nCfgeIY6yFIDBPFcwD1tH9OZQHv+o5g7z2cDqdAiB1ZROFIZcmL8rdA5Iycfm+kShLh6OAaA65s1NiXtjJgQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8490838},"engines":{"node":">=18.x"},"gitHead":"aea67e93f06c7a4d6018887296afa3b269b12b66","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-c96f305-202410220939.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-aea67e9-202410240847.0_1729759724353_0.13705896642108129","host":"s3://npm-registry-packages"}},"2.9.1-aea67e9-202410240854.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-aea67e9-202410240854.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-aea67e9-202410240854.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f27b846edd05a5b557ca33655614a7a493bf9b64","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-aea67e9-202410240854.0.tgz","fileCount":360,"integrity":"sha512-ZzBLIGT4ZjtJsnj3pH+N1UBwNrc0OoayTjpLvI/zBQPc27Hs33GpRkHy1mkQ1cFeO+CYE4RqvJN0g8SaWaW/wA==","signatures":[{"sig":"MEQCIERVo09/dFEeo2oQJ+SliPkOo+wjh5aW3+WO7wUuDKlmAiAkVLwnSH719/45drs6fxO3majqgphcmT41Job1tBAruA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8490838},"engines":{"node":">=18.x"},"gitHead":"aea67e93f06c7a4d6018887296afa3b269b12b66","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-c96f305-202410240853.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-aea67e9-202410240854.0_1729760149067_0.37608723577951686","host":"s3://npm-registry-packages"}},"2.9.1-aea67e9-202410240919.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-aea67e9-202410240919.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-aea67e9-202410240919.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"741e75f44524c2df01a463f7951642291f705307","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-aea67e9-202410240919.0.tgz","fileCount":360,"integrity":"sha512-tzD6vNqjfKRSDBd1V3b2YMUW4k7NPZ5yj80b4o9zAYj1ZGAOWhhyprqy+a18kdIWk4eyvSwj3DgZ0Ge1wf7J8g==","signatures":[{"sig":"MEYCIQDmfxUvLe1Aao8o2ckZ+nLOzaaisEd7NwHmgpup17ThfAIhAMRtGp5fJC4SRwm12Sr+RH88zH7K9gmAvGZgseskzSwu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8490838},"engines":{"node":">=18.x"},"gitHead":"aea67e93f06c7a4d6018887296afa3b269b12b66","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.9.1-c96f305-202410240919.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-aea67e9-202410240919.0_1729761647360_0.5750400183609525","host":"s3://npm-registry-packages"}},"2.9.1-3a3d590-202410240951.0":{"name":"@flowfuse/flowfuse","version":"2.9.1-3a3d590-202410240951.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.9.1-3a3d590-202410240951.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"519f55a763187d41dfd6d8013791364312972154","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.9.1-3a3d590-202410240951.0.tgz","fileCount":360,"integrity":"sha512-SKN7lLIZHGsUz9itnZwuIdhusqqkCGOh82OytV/UOtn4GdPzxcoSKJ0YmM4tARa+fv4DInoqZiqvYaYWNPVt+Q==","signatures":[{"sig":"MEUCIQCBM1U8p7WLUGDqnvOh2Tww6PqaW3LgbCertU2Y6Kw0TwIgUz7oxY+g18qSqz7Yp/UyLHddfgGnEdcTV+6kUhBTE9A=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8491017},"engines":{"node":">=18.x"},"gitHead":"3a3d590e11af35d34b704e801e20b64796d2b000","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-7b60151-202410240950.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.9.1-3a3d590-202410240951.0_1729763546466_0.5397820342958719","host":"s3://npm-registry-packages"}},"2.10.0":{"name":"@flowfuse/flowfuse","version":"2.10.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a2f37ef3c3df5696e644eaf702645f3a9e4a8d75","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.0.tgz","fileCount":360,"integrity":"sha512-mv76U+T9MoEdllU5evIL4thin+nzrWYwzv/+x2MWNbKVzm2aJpDpevlZpVMCbyFgzpWykAf4Vo0R6VC/f1PcoA==","signatures":[{"sig":"MEYCIQCDxIP1xTOvh5BWPAUdzJsQyKxp88SttKvex9yXPKpOjwIhAJNLI1d0gltwNAk6bMYPtJeQS4C70KTO7f+ttD5riFqs","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8492064},"engines":{"node":">=18.x"},"gitHead":"bea512f46a86836b255d091606ed12fdc4181805","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.10.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.0_1729764077143_0.6252859424798298","host":"s3://npm-registry-packages"}},"2.10.1-bea512f-202410241005.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-bea512f-202410241005.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-bea512f-202410241005.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b181c3b776b35f05036a7065bbc91b7026bc6cb0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-bea512f-202410241005.0.tgz","fileCount":360,"integrity":"sha512-xIgT06ymPvD3iXAW1bZqPWeexP9/yS1731aI22vaWe/dHDlA7apqLhfLb+1dv3HaA+jB6xCRJlTZp82Dmn3xrw==","signatures":[{"sig":"MEUCIEmoE5yXoS2fNrfSb7VPaRK8VMdijsIgEygHLYP1KL9IAiEAg9kNqceKnqfsrnBAUdjMgY0r/wPKoYj/mgwnvst+WQE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8494728},"engines":{"node":">=18.x"},"gitHead":"bea512f46a86836b255d091606ed12fdc4181805","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-7b60151-202410240950.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-bea512f-202410241005.0_1729764423624_0.4412989437748567","host":"s3://npm-registry-packages"}},"2.10.1-bea512f-202410241009.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-bea512f-202410241009.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-bea512f-202410241009.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7a1ad0bec0db4bfa8c6891c12e1224d31afdac73","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-bea512f-202410241009.0.tgz","fileCount":360,"integrity":"sha512-CfPynY6w98wzxfLymIBJUSFBwlRJob30lWiBweRAb4LONaWd9gmOCLt/v2cxQz7Xfcn/86f1K2P0o0SdOerLXg==","signatures":[{"sig":"MEQCIHcIdIePnkXu/hAQkfpjIUSzb81uTlter09RKD8rKo7fAiAp9i4utDZzQ7oQ3CylxeTUFMn6qesNzGM28haM1egEoA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8494728},"engines":{"node":">=18.x"},"gitHead":"bea512f46a86836b255d091606ed12fdc4181805","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-7b60151-202410240950.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-bea512f-202410241009.0_1729764616536_0.015822915251331393","host":"s3://npm-registry-packages"}},"2.10.1-179e4d8-202410241347.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-179e4d8-202410241347.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-179e4d8-202410241347.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9eeb4a3e16acfa302420778d275d77ad0f5c43cd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-179e4d8-202410241347.0.tgz","fileCount":360,"integrity":"sha512-mxx8AMQDl3lH8iBiNfKsQGXWV6OWlwU9LjdZqPj8DXtrr0WeqClZXKS4G4ErovYwi7iJSkswRylCGns/10xdoQ==","signatures":[{"sig":"MEUCIQC16pimROsbrqoXR426LQ6mdnzidMlI5jEphxr6FpS+zAIgb7PmtAYaT9HILctFBiOrgKGmL7E8lBP/HGzy9kAvWIM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8494672},"engines":{"node":">=18.x"},"gitHead":"179e4d8e736ca2b28feee162e2e9c48450ee464c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-7b60151-202410240950.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-179e4d8-202410241347.0_1729777724186_0.31643679089210797","host":"s3://npm-registry-packages"}},"2.10.1-d59b3fa-202410241356.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-d59b3fa-202410241356.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-d59b3fa-202410241356.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f8aae4271c4149fbb0188136426fdf9856c21cec","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-d59b3fa-202410241356.0.tgz","fileCount":360,"integrity":"sha512-XKn4rxBk5SCLW1qRxIPRQWvTbFLZzVQZMHuonQeWhZbfi0atL3sbmnVcFPLQ2RKEtKOcRCSys7wjFBHGJPnWiA==","signatures":[{"sig":"MEQCIHiays0a7NuwKun5lXaqwltrpRtdeCKvzKPHKVXyjUV4AiASbW/g2pMcOYETkF6nAVy1wKpSFyzgIM3ZiTyacuVQDQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8494672},"engines":{"node":">=18.x"},"gitHead":"d59b3fa235fdbbdaabad7a3d4ca21983ec54c406","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-7b60151-202410240950.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-d59b3fa-202410241356.0_1729778233100_0.2111846193756719","host":"s3://npm-registry-packages"}},"2.10.1-49caad0-202410251026.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-49caad0-202410251026.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-49caad0-202410251026.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d5058821c7867b472a23b96f4b866ea9424b6497","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-49caad0-202410251026.0.tgz","fileCount":360,"integrity":"sha512-WU3Tpqrdb6Op9sCOFRUX2CUc/reEBP+7HOfAmCaYUEhM5Tkr3DgHViV0R+2WrBwH8Xk+ZtUpWhPO5RJu6aCMxQ==","signatures":[{"sig":"MEYCIQCZmuaPQ7AbDBK2v1CzpBwwWrbQ36e+LUxLlbqBi+saowIhALeXpvebXWR8FTR6Q+ePZH5LMGs5mUK40qbEFFyXERxE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8494672},"engines":{"node":">=18.x"},"gitHead":"49caad0a707590fb89743182dd388c1a6add94a5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-7b60151-202410240950.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-49caad0-202410251026.0_1729852042739_0.7946429421622185","host":"s3://npm-registry-packages"}},"2.10.1-2e86083-202410251039.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-2e86083-202410251039.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-2e86083-202410251039.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"291459c9476ee7cd7b06c197f4d568508f67cab4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-2e86083-202410251039.0.tgz","fileCount":360,"integrity":"sha512-+Eyn4Ed8M0UoE6dB62UFrQIWo50fqYNHKpk4azqyZhG4Dvx0yAropQQZTN9zqP82netKZ4tylvaD6SDEVV1g3A==","signatures":[{"sig":"MEQCIHHh/WnnZC4NMS+Y7vmQ3tXGxU9TpFXS+Gdtbom73D06AiA1uu6IfxoUQrwDS6GkvHtiJ5SQ4yg4prfkRkwFU/0vJg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8494672},"engines":{"node":">=18.x"},"gitHead":"2e8608334d4b98b9979ea0b3223bc73080414b8b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-7b60151-202410240950.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^6.8.1","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-2e86083-202410251039.0_1729852865378_0.47246958861211485","host":"s3://npm-registry-packages"}},"2.10.1-3f48e3f-202410251425.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-3f48e3f-202410251425.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-3f48e3f-202410251425.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1ce9cbf02546e2de0be467164cc911a5829499f9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-3f48e3f-202410251425.0.tgz","fileCount":360,"integrity":"sha512-JGnsvcX+NGteaxEIfZi51JD5MgEadlwvZ8q+bF8xIgAsw5XirTPgnW/5w8IzooDEdTPUPKSzTxdMKTTzM/mCxA==","signatures":[{"sig":"MEYCIQCu1rq18QbZZkUio1FijKj0EUfMHQLLuCAjGMsWXL7CsQIhAJl/S4UrNUP7I6b9HRcXJOhiwHgQm0Tpf2+uQIgVnUpY","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8496036},"engines":{"node":">=18.x"},"gitHead":"3f48e3fe507b369ee5c143fa83d41777195715a6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-7b60151-202410240950.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-3f48e3f-202410251425.0_1729866387489_0.7318446486791874","host":"s3://npm-registry-packages"}},"2.10.1-887a0a0-202410290833.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-887a0a0-202410290833.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-887a0a0-202410290833.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c30175778ca1d8cf3250ad698e6740c400c35402","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-887a0a0-202410290833.0.tgz","fileCount":360,"integrity":"sha512-BQe5SGXS+yb88oN611Dcpma0ypSvjYHCMKfQMvnaWIfnliHdNf6S0Of/9xts/IiWP67YeYWWoNmWL825+I88eA==","signatures":[{"sig":"MEYCIQD7Pxf130KJsPIPN87vCd/dSwipY6idHUKj9pcjurs/HwIhAPz33e2aq4evYXt+2PFtwhmNTAGImWazLlceZPXctmdv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8496036},"engines":{"node":">=18.x"},"gitHead":"887a0a0f104ee44981f86110f01de28c5b52c79e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-7b60151-202410240950.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-887a0a0-202410290833.0_1730190878895_0.8523526552261629","host":"s3://npm-registry-packages"}},"2.10.1-bf8a395-202410290938.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-bf8a395-202410290938.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-bf8a395-202410290938.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"eca54ff68ed2f066824ed89bf17228daba5ccbac","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-bf8a395-202410290938.0.tgz","fileCount":360,"integrity":"sha512-vMXpsJWu0nZQtU62J8OWVMMRTO1xnwamhf+bjKr8JMHG4MPhg44fdtwe9B5mWVoCoSb4yDVB7COuUo0depMJng==","signatures":[{"sig":"MEQCIE4X211zfZkyop3q22ZDIsAS2q5C6oPnq40iG0TuR4BRAiBpuuXOxBICgsS5o1mClU5l+SjcaMfZm4Rwov9OrEXUBg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8496204},"engines":{"node":">=18.x"},"gitHead":"bf8a3953ac3a6100580390fdb0309f47d373b6c4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-7b60151-202410240950.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-bf8a395-202410290938.0_1730194753624_0.032669468377590105","host":"s3://npm-registry-packages"}},"2.10.1-1c49da4-202410291358.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-1c49da4-202410291358.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-1c49da4-202410291358.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ea87241cd3863f08f8264b1a4eebbf090cb716ae","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-1c49da4-202410291358.0.tgz","fileCount":360,"integrity":"sha512-uvhjZk4Wogln/P4rl+27GY8oDEWmXCCc1SXvYZtyX6cscQQahu/b5RGVXw1CAQisqOw4j5VkVl5QlcCSevWI/g==","signatures":[{"sig":"MEQCICujYyueq5/gZkmT+xIEpfpFXiUyJdrI/s+pJfTOcXjfAiBg07JwrcrhGEahwj3rEQs2NJEsxb5bNIZ8Zb8b43BFrQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8496600},"engines":{"node":">=18.x"},"gitHead":"1c49da4eafd1a9ea7cb142b6728e6e0311399bec","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-7b60151-202410240950.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-1c49da4-202410291358.0_1730210406034_0.5234808826932447","host":"s3://npm-registry-packages"}},"2.10.1-790f476-202410300944.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-790f476-202410300944.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-790f476-202410300944.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8c90a40815b04c872b61b2733b3311e550771cd8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-790f476-202410300944.0.tgz","fileCount":360,"integrity":"sha512-PM9/H/7xGx+3pffPCbjtAdYXENBKIT9Zbr41GTTYqdQsG8EFlOcqp7tuTNMODCdnxzSCdWfoCE4i1eMpj5pjRA==","signatures":[{"sig":"MEUCIDMikS1MhsHVutKd5wR+VuX82QsSDjqcbbGXnQGr3YzsAiEA9ohM12ZaLtAsKEHBqOXg2x26Y5Fb7ZOKbQwgo7aEiRw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8496600},"engines":{"node":">=18.x"},"gitHead":"790f476cae1121cc7363c1c8f04512eb9ab1d297","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-7b60151-202410240950.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-790f476-202410300944.0_1730281547684_0.49631798752549416","host":"s3://npm-registry-packages"}},"2.10.1-1fc01fe-202410301100.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-1fc01fe-202410301100.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-1fc01fe-202410301100.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"318102cc3d0d2d208660f3807b06dcbb00e91058","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-1fc01fe-202410301100.0.tgz","fileCount":360,"integrity":"sha512-iAx4kePawc+lPcyObUKH6WfnNRWV3XtUSbH1go0qIwTJwhtvLP6PZlS+/79JGHawNccrKa9iOMXWoBlCtfJI+g==","signatures":[{"sig":"MEYCIQD1mEw8dytt1+8kinANVeOIG7kK2OX9xgxbFSoEbarvegIhANgQelWNHqe90xiLYTY1zMAUlEYQzbdT4jRuzg18W6bB","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8496600},"engines":{"node":">=18.x"},"gitHead":"1fc01fef34ff029d4beb4b6fa75641d3a66c2193","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-7b60151-202410240950.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-1fc01fe-202410301100.0_1730286101128_0.6559694094381556","host":"s3://npm-registry-packages"}},"2.10.1-f87e25b-202410301807.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-f87e25b-202410301807.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-f87e25b-202410301807.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"70a063843db1b4fd7246fee6679a08c12025f5c2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-f87e25b-202410301807.0.tgz","fileCount":360,"integrity":"sha512-gru05O2FEWmfH7w5yD0579NDD3l3llDlv7dFQuswSFastf5ykDcdwG5Ge+M+TlG7EyJzkZ1RDRdThU0lVgtJkw==","signatures":[{"sig":"MEUCIDfdyqbRiHmQ4IhD0+5wLDKXt9N5hyVOP/8r9PMefUMIAiEAx8+Dz49Zw9uyR4GsgP7WBLW9aj+gqXuO67OQIUUgR10=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8515160},"engines":{"node":">=18.x"},"gitHead":"f87e25bd9af8762c8421a774bfc2b3eb9815bcb5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-7b60151-202410240950.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-f87e25b-202410301807.0_1730311743163_0.43086019513560125","host":"s3://npm-registry-packages"}},"2.10.1-81a0b6d-202410311117.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-81a0b6d-202410311117.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-81a0b6d-202410311117.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"96865243f01bd1e494ea33f42c4c840aba1af725","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-81a0b6d-202410311117.0.tgz","fileCount":360,"integrity":"sha512-3PyBp/QdSQpajb7tKY/WFo09CNMGtIPTlg2ZFcyrx9ubeE9wie0G653+QmHLDSBKpXB+aChAWg/gR2E4HZpzrA==","signatures":[{"sig":"MEUCIFbKqBTWJqocxS4pDdY5Ojup+FyWDauGQdGagyPNzYH3AiEAgMXZF4+ZTbvuatnWZr+qmp9wZ0ufL7GAFZrsNXn5z94=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8515160},"engines":{"node":">=18.x"},"gitHead":"81a0b6d53cfce0f4f798b1e7294fd7914301876f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-7b60151-202410240950.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-81a0b6d-202410311117.0_1730373491519_0.9260800466553805","host":"s3://npm-registry-packages"}},"2.10.1-53bd98f-202410311306.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-53bd98f-202410311306.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-53bd98f-202410311306.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c8a301147920a3ef4fcf66dfdf62a5112c11beac","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-53bd98f-202410311306.0.tgz","fileCount":360,"integrity":"sha512-EylfSkdIw7Jo1M86RxYmY61jLYbkiFcE1DDhmjENZ7roGNVp+TasO+c6JchSdtAz+tvUV8GG4vQcO3HN0DrdVw==","signatures":[{"sig":"MEQCIFNB+8Nw6JMpJ34um2QjaMj8Rk8pfDLuh3pZiheACPggAiBXeov2MBR6k0epNjykMeekeUf0byciYOp4LlMxZZFtZw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8515160},"engines":{"node":">=18.x"},"gitHead":"53bd98f4472622cf909832302bf6e453435ccadf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-7b60151-202410240950.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-53bd98f-202410311306.0_1730380079518_0.5261155010685397","host":"s3://npm-registry-packages"}},"2.10.1-5b509c8-202410311609.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-5b509c8-202410311609.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-5b509c8-202410311609.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c5b31bbba35aceeded422be4ba977d76324c7905","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-5b509c8-202410311609.0.tgz","fileCount":360,"integrity":"sha512-ECtxrpFY0KTZKC7OVdtCDz8mqNupi3dzhOYHSVvSu3cfFllRm95eAErdCZbutHoPm9Nqu+oFcpbt36DUCHt8GA==","signatures":[{"sig":"MEUCIQDQBY8kMIUdkI87CXahPukWTdjfnaoKfHNSW1thXYBDkgIgXaQmqZO4o5jTcMR+DEPM76J4qd2/t06tsZsn/dfoI4Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8515159},"engines":{"node":">=18.x"},"gitHead":"5b509c8fb5db262f7ae5c5c56d001717d9410e58","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-7b60151-202410240950.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-5b509c8-202410311609.0_1730391022797_0.8684560410467559","host":"s3://npm-registry-packages"}},"2.10.1-9af3aad-202411010952.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-9af3aad-202411010952.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-9af3aad-202411010952.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"76f524f3325708beea960d6914b966ec59eae0ae","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-9af3aad-202411010952.0.tgz","fileCount":360,"integrity":"sha512-N0otxt2F2A5itAPJrCK++zBT4gt3Y116xVs6j8asJttI7EoXrupDKrpdPiu33VSiBIOnYpI2x6UlncfhRi1yUQ==","signatures":[{"sig":"MEUCIQC6qpQFMs5iKs+8YDnSIizebHnvPg52s/dlLmMI4kJpbQIgZyEv/dO2w8HMkF9rcCDaVn21SaFpKdgA/mJ5UEnCGic=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8515159},"engines":{"node":">=18.x"},"gitHead":"9af3aade883d06c3f23062220b1b4c9b87e83e59","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-7b60151-202410240950.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-9af3aad-202411010952.0_1730454796697_0.11837626898444631","host":"s3://npm-registry-packages"}},"2.10.1-7c83bf6-202411011040.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-7c83bf6-202411011040.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-7c83bf6-202411011040.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"61f9f241960adf6995ee2116372ac2ab28d528f6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-7c83bf6-202411011040.0.tgz","fileCount":360,"integrity":"sha512-rev4O3T+FjjnJiI+C2k4YaDceLY1IUwz9bnf6C6glE8lIVTgTy9gDbkov3X/geJ1xag2kW7pNhJga7wHU0ymFw==","signatures":[{"sig":"MEUCIEDNX7xM/k7NL8v1pQTuwMINeP7Ynl/hwuJPfMLlZONqAiEAiWqCpnAITY/nJcsdTknMVVnBOL8BOAwL1B7EkCRVNxI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8515159},"engines":{"node":">=18.x"},"gitHead":"7c83bf69e9d3217a88658ee1845f103e4d42830a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-7b60151-202410240950.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-7c83bf6-202411011040.0_1730457712450_0.021908982825690204","host":"s3://npm-registry-packages"}},"2.10.1-7c83bf6-202411011048.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-7c83bf6-202411011048.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-7c83bf6-202411011048.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ec89a9f9ed0575b6e407be0c886d61a8152651ee","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-7c83bf6-202411011048.0.tgz","fileCount":360,"integrity":"sha512-D6KXa0osfeO8qk3yb1nXI7oyiR/OmhpclXGRSRwtJH5AJc6gXQW3lTWxdZhq2j9/9Q/fepNMy0ZtOJY/4pFeWw==","signatures":[{"sig":"MEQCID6XP7UqwBedLDZUSdRZ5s8NnituVCVydRgF5ko6lAuEAiAOllftSMnNhOgAEIyj1wtr6ztKVdNopHyin5VOPF9rUA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8515159},"engines":{"node":">=18.x"},"gitHead":"7c83bf69e9d3217a88658ee1845f103e4d42830a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-7b60151-202410240950.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-7c83bf6-202411011048.0_1730458175507_0.2983675472210825","host":"s3://npm-registry-packages"}},"2.10.1-7c83bf6-202411011050.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-7c83bf6-202411011050.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-7c83bf6-202411011050.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fbb17907d91d3f6e8321ee43ee1151c7ac7e48d8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-7c83bf6-202411011050.0.tgz","fileCount":360,"integrity":"sha512-gConJ9emw0bOTkGAdy5cK5fFbtdWDFDDOUlLSHYrfATjifZaoNTfDgxoueMFHNpuinGfvV16ityTr9pcnYOXaQ==","signatures":[{"sig":"MEUCIDc3RpmDJ3xQ8bGlUrjD8OV7VRRRRHcyFb9W3AQMUNlFAiEA6nySyFKublIuanVMWkqS3a6AoU+IrJYa17+U884ub6g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8515159},"engines":{"node":">=18.x"},"gitHead":"7c83bf69e9d3217a88658ee1845f103e4d42830a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-7b60151-202410240950.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-7c83bf6-202411011050.0_1730458326048_0.7851184332779049","host":"s3://npm-registry-packages"}},"2.10.1-53b25a8-202411011128.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-53b25a8-202411011128.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-53b25a8-202411011128.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a888e6d07a9ec2929182866bd9923d2f7e9a9010","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-53b25a8-202411011128.0.tgz","fileCount":360,"integrity":"sha512-XunPzcDBpjkJ+m9odJXLPg8QfBhJEmOF+tvUfmdnryommgXDkXfhDf8AtrJJwT7TtOCy/B1I2/R7DNG6LUK4aQ==","signatures":[{"sig":"MEUCIEFmx6k0SNPEe9Oij3cgJ9RIUu+sfaFboTQ6ClSaOLHyAiEAzib97ZF5gxKUgo5QuyziYYIsAEChgEwE0lvHKT8YF7c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8515159},"engines":{"node":">=18.x"},"gitHead":"53b25a8e17a34ab32b023add0997635f92a3600f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-7b60151-202410240950.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-53b25a8-202411011128.0_1730460561052_0.8018443189750435","host":"s3://npm-registry-packages"}},"2.10.1-9b8fffc-202411011431.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-9b8fffc-202411011431.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-9b8fffc-202411011431.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"14942f903a56ea9789add5b70a8047189ddf90e8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-9b8fffc-202411011431.0.tgz","fileCount":360,"integrity":"sha512-lpcabqNGNkBbBwf1nhIXEbIvsuN66bj2dZSrmVzqLU2S23DdkrLLvPnEE+9g1emeCCI8jcQnNQMMAVWB685PWw==","signatures":[{"sig":"MEYCIQD6piIEoBO1mMDUPGHRWc9L0hKleJVo1DJwj5glcqL30gIhALgJCokL0js+h5dS6HGYl/rX4Z8DxsTQmrq43fE1g1Bx","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8515159},"engines":{"node":">=18.x"},"gitHead":"9b8fffcc154b21dc90b4bd393fbe84be490e3fd0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-7b60151-202410240950.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^14.1.1","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-9b8fffc-202411011431.0_1730471557079_0.8468094392680201","host":"s3://npm-registry-packages"}},"2.10.1-bacc9de-202411011738.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-bacc9de-202411011738.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-bacc9de-202411011738.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d8dffbb5c5828a6af71482d1c839a5ff6de8618a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-bacc9de-202411011738.0.tgz","fileCount":360,"integrity":"sha512-8FucJUKu+di/W847M567IdqnTNe3J12WihP34oXY0VEpLhJNE9sSgI/831jlH6gADrXRbMBGGzHfDJPpiBhxrw==","signatures":[{"sig":"MEUCIQCn34xO+1p4lvnfiwVOr/WkyQtVT2R+19jxswubPm2igAIgMgtM+f6cYBbl+r8vZNALZVFK6uo087XZ8vO13Rr8iWw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8515159},"engines":{"node":">=18.x"},"gitHead":"bacc9de6e36802a512c83ad17074b11c6cfa0d42","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-7b60151-202410240950.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-bacc9de-202411011738.0_1730482805171_0.8027802374934625","host":"s3://npm-registry-packages"}},"2.10.1-bacc9de-202411041328.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-bacc9de-202411041328.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-bacc9de-202411041328.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2c2a167b5afec649a1c30bfc5bcd850122d7fc46","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-bacc9de-202411041328.0.tgz","fileCount":360,"integrity":"sha512-2e2/dWs59Qp5cXh8DHJ4bA+yS1UDZyfUIFWKLY7XUH+DBrhYa3MnW7cL10XfGTXoJg0iYuMQyFOxEpwqs6oJog==","signatures":[{"sig":"MEUCIQC0lOctNaozCxiZJ+GwY0EiG5KFinc+hsJzfFKVf7eB9gIgJyraAP9WYxVr4Ir3DUz7BsSC+NSqAPHaOBrAADrZfzM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8515159},"engines":{"node":">=18.x"},"gitHead":"bacc9de6e36802a512c83ad17074b11c6cfa0d42","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411041328.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-bacc9de-202411041328.0_1730726984945_0.27984693906851765","host":"s3://npm-registry-packages"}},"2.10.1-bacc9de-202411041331.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-bacc9de-202411041331.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-bacc9de-202411041331.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"708fb47c462ac66571a17faa06d675398f8e18d0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-bacc9de-202411041331.0.tgz","fileCount":360,"integrity":"sha512-j6GwWLD+MkMHA4bPuAoY7uxNmy296IPkk963ummyb4GwC89eGP4VlA9m7IQRthTi2QlrShhSxYeguFtRb2oUgA==","signatures":[{"sig":"MEUCIAGqh3/yVY6JKRA05vLyyxW5hZvs9lW8iwrSLuHqDioGAiEAjbC2APMVqo2P2UFVdYQFqZE8YFdCt40KlaMMLwfPAnM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8515159},"engines":{"node":">=18.x"},"gitHead":"bacc9de6e36802a512c83ad17074b11c6cfa0d42","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411041330.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-bacc9de-202411041331.0_1730727149120_0.852661132756785","host":"s3://npm-registry-packages"}},"2.10.1-9a222d7-202411041413.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-9a222d7-202411041413.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-9a222d7-202411041413.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7c44a161938d8900423df2fad69ed862e05c5311","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-9a222d7-202411041413.0.tgz","fileCount":360,"integrity":"sha512-ng3EuIedawmHd21JudhzeeMz1VFaYljAXah3fvpWX8wOwQGsLl5tlsro2p9fsFMQ7afdIJyKeb1SjaG+cL9nxQ==","signatures":[{"sig":"MEUCIE7fU8POr1MOTmhXGKGUe6ibsfYjn4GkjWZgQ/t8IrLOAiEAwmSoVTfWQ8Ai0J6Pgsoel45Sq57d2jIxEWAt5UBcg0E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8515159},"engines":{"node":">=18.x"},"gitHead":"9a222d70616d33da45408ecbf11fd5c226ff7f89","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411041330.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-9a222d7-202411041413.0_1730729709525_0.28421793967557596","host":"s3://npm-registry-packages"}},"2.10.1-9a222d7-202411041506.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-9a222d7-202411041506.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-9a222d7-202411041506.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0d154c0b463b9b28e9b6fe2342a2bddb4e6bbf72","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-9a222d7-202411041506.0.tgz","fileCount":360,"integrity":"sha512-T8C7aWpiKpvqFOOdWVfzYet0kOdfN59LC/wTdR9B0adayV+QpC/L9ZwUzfeEuAGmupr8PkY2Hr8R3NwWUKKdwQ==","signatures":[{"sig":"MEQCHyx3PPpTB0gxBoS+39G10cZj/FfKdd06GgNksM7Qo18CIQDBnrqAWPG9LGAU6TVx1vig68U+QwKA47QZyVCpd8Az1A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8515159},"engines":{"node":">=18.x"},"gitHead":"9a222d70616d33da45408ecbf11fd5c226ff7f89","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411041505.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-9a222d7-202411041506.0_1730732836430_0.19332505874603423","host":"s3://npm-registry-packages"}},"2.10.1-1836ec2-202411041558.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-1836ec2-202411041558.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-1836ec2-202411041558.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e47117baef16ae8327731e5b340ebfeaec6c442c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-1836ec2-202411041558.0.tgz","fileCount":360,"integrity":"sha512-TNSXiuYfIpzbaa+c4U2CZ8tifvkIw2PHWlUmUYvmS71MeLn/U1PwF8/wyfRAORwiwbRN5mC9KbSGb5oxZyu01Q==","signatures":[{"sig":"MEYCIQCMgqhQBxcJ+T9pkBQMn8zm4Rmqgm4NOQTX3H7d00BU1gIhAMg/a3tGTOrqFJiE2433YNUWRjGCAWEZidtRrk1ImYtm","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8515159},"engines":{"node":">=18.x"},"gitHead":"1836ec2d48ab93b756624840333ca5195b53769c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411041505.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-1836ec2-202411041558.0_1730735974406_0.16352098801486692","host":"s3://npm-registry-packages"}},"2.10.1-1836ec2-202411051036.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-1836ec2-202411051036.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-1836ec2-202411051036.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cf053895e6d3e47b4a73d943b7f751d044e0f7fb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-1836ec2-202411051036.0.tgz","fileCount":360,"integrity":"sha512-j0l9UxLr0q6LryOaMs53kppWUsDIuD3r9n4DBEysJjQ8l1fn7flEkAQFTZKNgYDgxh6r4ZBYUsjSzPJTTH2Iiw==","signatures":[{"sig":"MEUCIQDg2nJ/Hk2rwgjw5weuefpgDWvyPs3p9fqsxS6A8q6ICAIgCT9NoTjqyxmSCJuLau7/5P9qWqtVx7hDbTN7CCzHHj0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8515159},"engines":{"node":">=18.x"},"gitHead":"1836ec2d48ab93b756624840333ca5195b53769c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-1836ec2-202411051036.0_1730803060408_0.86162851361136","host":"s3://npm-registry-packages"}},"2.10.1-019af80-202411051401.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-019af80-202411051401.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-019af80-202411051401.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f67b0d857ae58fe362488343ac8cc11c4beb04c2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-019af80-202411051401.0.tgz","fileCount":360,"integrity":"sha512-y8n6ifgnQGEG4CvzE3pfC+7JiYaHYlrOQJE8BTlLpu3PrBjtbHYxeiztcJ4Y+/QtjvzNV6ZtwvIl4RmeBzsC3Q==","signatures":[{"sig":"MEQCIBpQd1KeenkI+ZjcxMAF3ELoc3Bb1CzLGHkTR+an/hO0AiBD9hECExCMo/O9wpqjk7DbWy8JKykKVAgfqzxOQYjTUQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8517896},"engines":{"node":">=18.x"},"gitHead":"019af80e42c012fdb6299712e307a52f5ec7bfa0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-019af80-202411051401.0_1730815346733_0.9473349767398962","host":"s3://npm-registry-packages"}},"2.10.1-77865ff-202411061356.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-77865ff-202411061356.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-77865ff-202411061356.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e321a8fd91475a2f284460c6d8f8858207cb76a6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-77865ff-202411061356.0.tgz","fileCount":360,"integrity":"sha512-PDlWe6AricqGQxK7WQ69GKVkFuZyWwiMBK/cytiIVHUXtWWGJwJo38K3hK13TKjBiOFQNa+zcIUvbHTIY5MgNQ==","signatures":[{"sig":"MEYCIQD5LnoNDpjjqQIdtRcJv0Y8lGsJWpAfG7FfGfJ+rTp9/AIhAMInLLIvcDIIrK7QoOq0uS7sLKFE5gDEvPX+HJE93uYM","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8537526},"engines":{"node":">=18.x"},"gitHead":"77865ff3a205651cab25056f7ea8148a67cffaa7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-77865ff-202411061356.0_1730901458928_0.5510796802687679","host":"s3://npm-registry-packages"}},"2.10.1-334f787-202411061512.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-334f787-202411061512.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-334f787-202411061512.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ff3dd413e352f89b18d4e307c3f5335dece42d1f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-334f787-202411061512.0.tgz","fileCount":360,"integrity":"sha512-K5jDsaK/2LNBOPCHyf1rVkpaliwiY8qSVBQXsVtwrdWNCD5pSvh5qg1PnNrQLAsNOMRhdj5DpoN32WG9s8j71w==","signatures":[{"sig":"MEUCIQCIKTI5zCMBmbzf8lvpjUT1zhwtR8vN7NL0lv5TOT275AIgQoe+ECV2Qge5jm3WmxHF3S6UrEBQ1lkSdHmhBFn2J9k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8537852},"engines":{"node":">=18.x"},"gitHead":"334f787402734b6e95fad56bb8197e1ac5c766fc","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-334f787-202411061512.0_1730906014894_0.18766325000459583","host":"s3://npm-registry-packages"}},"2.10.1-605166b-202411061712.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-605166b-202411061712.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-605166b-202411061712.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ecd65f1d89ee662c41505ea52bdbf1857a91fd40","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-605166b-202411061712.0.tgz","fileCount":360,"integrity":"sha512-41i0kVKQwsJGKMIvUS14zaH9/mUkXlxjqQxHUUDqTF9Lz0wFU0EPRkZmuITX8Js19SuR/N+0B3s9qd4evBWGUw==","signatures":[{"sig":"MEYCIQDeYDCzWw4QVxI4RsjBeMqmDhsDjE+0XK5Q0ukf/aE/XwIhAPA21NJch7Uaj24Z2Mr+19NMrkDV5s6vXw0KGE9E1S92","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8541546},"engines":{"node":">=18.x"},"gitHead":"605166b12d11fc5167f29e8c193577a7c9fb8b37","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-605166b-202411061712.0_1730913215819_0.8743762745469785","host":"s3://npm-registry-packages"}},"2.10.1-605166b-202411061714.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-605166b-202411061714.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-605166b-202411061714.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5095be81f06d282f91ee9f6095eda85741642a91","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-605166b-202411061714.0.tgz","fileCount":360,"integrity":"sha512-6v3CnWq5hJIXwUf/l/sE9S56mItSa9ad7GY+ogT1UA5oaMcNvHNVc/E5VX0f/9OUJSNHJRTUqT0VPomreJ278g==","signatures":[{"sig":"MEYCIQCu+qsbGdFewSJKiwW7iPDxAVSO1d8PwV7FdZmrECJxrQIhAMhBU3IPKKL8ONZ8ELvdrUlWYr/da2Z9Ri0FZ9wAkJXF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8541546},"engines":{"node":">=18.x"},"gitHead":"605166b12d11fc5167f29e8c193577a7c9fb8b37","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-605166b-202411061714.0_1730913338181_0.3472704491193239","host":"s3://npm-registry-packages"}},"2.10.1-8b24d64-202411081101.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-8b24d64-202411081101.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-8b24d64-202411081101.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c40aaab859ddaae9a75a9dc47b0d4263f5367497","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-8b24d64-202411081101.0.tgz","fileCount":360,"integrity":"sha512-lttHhi+cgU4U4brZabiO3ZE/zW2N2Ay/XMdIzsyFyR+247mLOAxtPd1DpBxi0N1GJKGb6GIdTllJRzp/b3Yf6Q==","signatures":[{"sig":"MEYCIQDb3yxQ6z2BLj4WFW3BDb8qqPbjo0u1kfL/IwPzY55tSwIhALbfuhThajRokTC5jK7+KE7XpSoOiSBXBU2eYe2mVik6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8541546},"engines":{"node":">=18.x"},"gitHead":"8b24d64b0578d3507140acfd02d831b2f13bb341","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-8b24d64-202411081101.0_1731063744967_0.8792462081810961","host":"s3://npm-registry-packages"}},"2.10.1-ddbc002-202411111358.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-ddbc002-202411111358.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-ddbc002-202411111358.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"392f64bfae70f2eeea4795d8d37be3081eaf528c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-ddbc002-202411111358.0.tgz","fileCount":367,"integrity":"sha512-OatqIjuzE2b9edbgMCjoabAZj3Ua2XzQ4dqY5WKb/xeCZv8DFLgild/o7WzqSTCvu6qyDnCiZo7kRc6kgca4zw==","signatures":[{"sig":"MEUCIQD7XoNV6geTCi1yT9+ab/3bJcndghi+ERXRQP5llWC88QIgTmMnn78fcLzpyHfUc79V2oz9njakYC9JE0GWIVjK9lA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24070491},"engines":{"node":">=18.x"},"gitHead":"ddbc0024e8961b94f262ce03ed116d9958ae05fe","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-ddbc002-202411111358.0_1731333564738_0.5320011775442537","host":"s3://npm-registry-packages"}},"2.10.1-ddbc002-202411111408.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-ddbc002-202411111408.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-ddbc002-202411111408.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f6e6b77e79ae09f3137c4cc1d228a7d938839b1b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-ddbc002-202411111408.0.tgz","fileCount":367,"integrity":"sha512-41d23DdbYvAjdTv3kYDDJDdg/GZyVez+RDGl8i97ZybwBp+WTHWiWwcS0AbLbS1hcvhOvHl1XtjPMDvV0OAYuA==","signatures":[{"sig":"MEUCIFAwd66omMampC2XPmkQU9Fug5KBPJBPUyDUWFUxfILPAiEAxHlJSolLFBTtbpWEnRQvPrYDLLJENQL4XRSTyZ0GKao=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24070491},"engines":{"node":">=18.x"},"gitHead":"ddbc0024e8961b94f262ce03ed116d9958ae05fe","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-ddbc002-202411111408.0_1731334217103_0.4398273567969322","host":"s3://npm-registry-packages"}},"2.10.1-cb64b73-202411111535.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-cb64b73-202411111535.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-cb64b73-202411111535.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"27d5a194e3b64c02d3de8be63153304c18f432d6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-cb64b73-202411111535.0.tgz","fileCount":367,"integrity":"sha512-ZIcGXok2Z0wZJOwbOiqeSdCeAUTr1YVP68ruWCsfLUfGPXZMjOII+5y1GuVX9EuDzYf6AREtuRP/LPdsZTs8uw==","signatures":[{"sig":"MEUCIGcz8cfBP5QbTXP4Jgz48UIhI8t4nsykfDD9gfEZKlfaAiEApWVDTApoOi2hZYRBtOp+q9+e+fzLasMeJSyjZ4RlnXQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24069070},"engines":{"node":">=18.x"},"gitHead":"cb64b731d5141ade95d675f90577022bd14e29d0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-cb64b73-202411111535.0_1731339406304_0.779974024858358","host":"s3://npm-registry-packages"}},"2.10.1-ed3a4a1-202411111633.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-ed3a4a1-202411111633.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-ed3a4a1-202411111633.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1005b1a43a7fd0f90a72b874201be4141fb2fd2a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-ed3a4a1-202411111633.0.tgz","fileCount":367,"integrity":"sha512-YrPpLji75pNMHXjSrK6W/GCaLhwKh8gqtEmdHQjQVd7gemDy8pyswEzA65XiN1klqpmlSdKJmmqUhGaYj55FcQ==","signatures":[{"sig":"MEQCIHMmh/brjMCjRAB9xfqANeaqwOa8+ZFDr0Goy14B9PRsAiBmYoQbncZGtobPY4xLyxK8/MZwsMWEx5u0VuDqMAOXVQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24069106},"engines":{"node":">=18.x"},"gitHead":"ed3a4a1f7aad7944920e88bd11557138c97898e7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-ed3a4a1-202411111633.0_1731342913363_0.47352287893065226","host":"s3://npm-registry-packages"}},"2.10.1-9e7b1e4-202411121031.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-9e7b1e4-202411121031.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-9e7b1e4-202411121031.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e52f894c0f3b5a898a9307b0596101e153951a91","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-9e7b1e4-202411121031.0.tgz","fileCount":367,"integrity":"sha512-vqoLHFb7HDOvGnI0iRTskCK1GF/7HwWzay1c8y8SvSGqQm4/c/czE3lJzIMQwBm071ISddsbNLGiMjBkX8OKbw==","signatures":[{"sig":"MEUCIB9E4rlC2N9hnXyVXIrKIBlS1lIDh7vpPTNGQQbjtma0AiEAvhL2yg2uq/sioMn7SGMxfGqfkUUPRgArYGJgiukjy6Q=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24115540},"engines":{"node":">=18.x"},"gitHead":"9e7b1e4cb01dfe2d1bcf6df03486fa6695fd60f3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-9e7b1e4-202411121031.0_1731407593567_0.5381731108724714","host":"s3://npm-registry-packages"}},"2.10.1-073d514-202411131017.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-073d514-202411131017.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-073d514-202411131017.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1ed0bd483ff85fe6680aea8fc332a4494263d335","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-073d514-202411131017.0.tgz","fileCount":367,"integrity":"sha512-Dp+QLIH6cJ8EZmy6CLL/LR//2m4bFhJD4LtJyIeL8JEx44LQirp89M5kpQeu+5/Wv8kyXii+1TEc3rIjgBNrPg==","signatures":[{"sig":"MEQCIDtQUfN2LHeLL0INSTqH7qphLL6ybqCu3NeZfaC6N89uAiA0s/BKgHmenjvw8mEbDTpwdxJAHWGrA9iN58aH7jqatQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24115885},"engines":{"node":">=18.x"},"gitHead":"073d514e1df924d0feb0c8075033bb4ef418928f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-073d514-202411131017.0_1731493122840_0.17164258851785097","host":"s3://npm-registry-packages"}},"2.10.1-0b4c35f-202411131356.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-0b4c35f-202411131356.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-0b4c35f-202411131356.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"41e0622ec3c9ea31be709c82168a5fe1b75ee8e6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-0b4c35f-202411131356.0.tgz","fileCount":367,"integrity":"sha512-fI6yrgtk+gY/sY8i9oHhwur77fqpFFH5YP1uhee8KdDvOSjBUWAgLbL7DyWsm1EytkPk4/qCH7RD9u+st/cjDw==","signatures":[{"sig":"MEUCIQD3MwW8sbHtdI+NhiaLsYKpkvSY4HaEypl/q0a2r6oWcQIgTUVBnQxcNOW2pZYrW5zQxVAHSzENEgczB41ZzG/FBTA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24119099},"engines":{"node":">=18.x"},"gitHead":"0b4c35f9b8c5758b4fd2a2d1b39d10f2ee5f32fb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-0b4c35f-202411131356.0_1731506258519_0.79084599195996","host":"s3://npm-registry-packages"}},"2.10.1-58a1c56-202411141557.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-58a1c56-202411141557.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-58a1c56-202411141557.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7933f5ff64774c70fe38ef6bf7caa7b8947b76af","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-58a1c56-202411141557.0.tgz","fileCount":367,"integrity":"sha512-e/VdAR29MRrA+qUkIenEfUocgUsaN1b1R3pUKVvxwoCZHFaGe5PgxzBufg4n+hUcC16yHM8ESRLHDBFm1SWFKQ==","signatures":[{"sig":"MEQCIFlhiWPGIJ+l2oIapSgfyCm/k6dgQmp6+w3I5pa6gn52AiAOODNKw7t8iQqQ1rep3uk+PiZN4N5s9w3fVB0+dJDy2A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24119810},"engines":{"node":">=18.x"},"gitHead":"58a1c561f5ff9c0a6522d3a8d6affcd6af4ab378","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-58a1c56-202411141557.0_1731599905711_0.1331385440498063","host":"s3://npm-registry-packages"}},"2.10.1-5278a37-202411141734.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-5278a37-202411141734.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-5278a37-202411141734.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"76e451efe2400f480acd7d944b72a81c9e877383","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-5278a37-202411141734.0.tgz","fileCount":367,"integrity":"sha512-7WxHBx8N1ZqEplzQeaOERPP2UshlOoypUYkaS27VQB7onuES0P7uYNigUcTitsnvdmKgKMfSj3O9YriqMKXHGw==","signatures":[{"sig":"MEQCIHkPi64p0bCLAEvokxhpchygXytcyzqR5PRr2i0MeT7YAiAmCBy4N+jzbbtkd9drU6XKBxZ4R6RFiwpLDL16NzqoTQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24126191},"engines":{"node":">=18.x"},"gitHead":"5278a374a797a0d919a8cef757d23ab9edcc70f0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-5278a37-202411141734.0_1731605771686_0.691372460461571","host":"s3://npm-registry-packages"}},"2.10.1-e173733-202411141825.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-e173733-202411141825.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-e173733-202411141825.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ea2e0cf1ea96dd5d8ca0ccc81aced51c8545f078","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-e173733-202411141825.0.tgz","fileCount":367,"integrity":"sha512-06RqKg52bg91aMOCQeQP1802Ft19mgLONDQ3GxYSfQrBpjyRisDJD7dq2EC1ZF/FVKi+hybJyGHPtv99WNgpWQ==","signatures":[{"sig":"MEQCIHRiz4c6kMgEiLbw503GMxdjhWXS954XfPrN8WGFJGftAiAc8bGI3nHFAawlRsb0QgDf/g2pOZYVFS7YP6xbqUYshA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24126317},"engines":{"node":">=18.x"},"gitHead":"e173733d01a099f2262f1c4916dad852c20548cf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-e173733-202411141825.0_1731608816544_0.4492414801490807","host":"s3://npm-registry-packages"}},"2.10.1-2fc508e-202411151024.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-2fc508e-202411151024.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-2fc508e-202411151024.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ffdf47c509c624bc05b97284d86798436335ca52","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-2fc508e-202411151024.0.tgz","fileCount":367,"integrity":"sha512-lkmSLNA1DVXH69ipWUnX4I9x4s4tsr+nzq4Ky0GKv9Pn864bTq3pH+rdWqu/cwowOwRuG/KfDsj8WIwW4OrMwg==","signatures":[{"sig":"MEQCIAFxZ40hezl+aMi7x175a0nB9pDBULUPy52uzgTRBUpcAiAwMjg1woPojW9aJgwsQpq+s6+491eExKfzH8TgnbW/ng==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24126640},"engines":{"node":">=18.x"},"gitHead":"2fc508eb9825410a7d38401dbf96cec25d455a5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-2fc508e-202411151024.0_1731666368504_0.038678160852623655","host":"s3://npm-registry-packages"}},"2.10.1-9c1babb-202411151055.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-9c1babb-202411151055.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-9c1babb-202411151055.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ddb62cc4763c0ef5d165ae8cfc7d5e66e026bd03","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-9c1babb-202411151055.0.tgz","fileCount":367,"integrity":"sha512-8MkJHgADuzXTSi1TcXIfaPWGNlqAPkv/G5qNYi1IEAjzTFQ3OZgwCg2TqQEaQhZFZfr19Rkm5HJCBsVl9M5PRg==","signatures":[{"sig":"MEQCIBuQJoj7KgAu99E68IrQgJgHsRYjV7r0eu0tZSQHLfcsAiANpxGKxjsw65GB1TR7naL4w4KR8RUIEbb97W0rSj8UMQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24127144},"engines":{"node":">=18.x"},"gitHead":"9c1babb1272de863ee32afdea5913929ad6d0495","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-9c1babb-202411151055.0_1731668195702_0.20866658582608233","host":"s3://npm-registry-packages"}},"2.10.1-becdc3e-202411181413.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-becdc3e-202411181413.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-becdc3e-202411181413.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8aae300c93b6c2e58ea4a362926080b51261b044","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-becdc3e-202411181413.0.tgz","fileCount":367,"integrity":"sha512-Pi9JBkSt/P0ewlkU1EghHuTk4R+FHjZC8Ht6qPnsa+/vA4QyEYNeRjthFBEHHKTgtW1iaUF2qmtAt4+FUeihAA==","signatures":[{"sig":"MEUCIQC7m3GR41tgGHQOvENvY3E8bPqM0Z/58xvanEb0NsH56QIgbbpk3X+Ou3XrCw8Xv5eypOXjHoM2koFigl/RryBJLc4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24127449},"engines":{"node":">=18.x"},"gitHead":"becdc3ebb6007d999cbb8b4da6388ae8d35ec451","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-becdc3e-202411181413.0_1731939299300_0.8939826824732475","host":"s3://npm-registry-packages"}},"2.10.1-76c061e-202411191028.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-76c061e-202411191028.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-76c061e-202411191028.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"37b356b6bab9598d937c5c966f6ebecf4d5d3061","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-76c061e-202411191028.0.tgz","fileCount":368,"integrity":"sha512-BFh1ND8w0fsel3RMpPwJIa+jhFV/yv44dgUUx4E6wPKBM3H7xhquOT/UUWs9f+wOrI0S45aFcZlzu8ih6pJeUw==","signatures":[{"sig":"MEUCIEAs2nDASw3166WXqajVtcATOgN37n0/8/lXzssIIfXJAiEAhtV20llnYSVyZ9KOpjAHmzKWhMyyxT6HmOtMzC3quPY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24142759},"engines":{"node":">=18.x"},"gitHead":"76c061ef6654177fca598b00f700a46677df5f0f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-76c061e-202411191028.0_1732012187457_0.1459164777030939","host":"s3://npm-registry-packages"}},"2.10.1-76c061e-202411191035.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-76c061e-202411191035.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-76c061e-202411191035.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f4c4780714420eb4b19e9150612c723d74f74cb4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-76c061e-202411191035.0.tgz","fileCount":368,"integrity":"sha512-t1MOhfQhdbOuiCvLIwhigv1+d1NtY2w0vsYvRkWyWvotADy3lWO9bWIzmnp3quRsErxr5MQhJS71f8+a3bOe0w==","signatures":[{"sig":"MEUCIB1+/gAWJ+QnfMSOv/MLazP2EJYrhdZ1vUFLE6BtRZwuAiEA893h/CFxrxS7gt7Aivl/shJfH0VgadjsoSPyIL09NNA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24142759},"engines":{"node":">=18.x"},"gitHead":"76c061ef6654177fca598b00f700a46677df5f0f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-76c061e-202411191035.0_1732012594465_0.18122188810819595","host":"s3://npm-registry-packages"}},"2.10.1-ccb0563-202411191148.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-ccb0563-202411191148.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-ccb0563-202411191148.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f3dbbc98666e9bee498ab27af98810b9c7d75829","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-ccb0563-202411191148.0.tgz","fileCount":369,"integrity":"sha512-VRykYB9ztYIBvg+GlLFzFdXsY35y02PCZY2rbYXvNQwf/EL24EvKi0q+Jj6wjSCCzri3ChMvfBDkgFpBre/LwA==","signatures":[{"sig":"MEQCIF5y67JmIy2oXwGyl8iZRPk0gvo2e+Xc9+cq2Sbhf8ZJAiArRfg4hr9VLBa/bq9kAsnCNZvVDkjeDKuiyQSalaB2SQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24147018},"engines":{"node":">=18.x"},"gitHead":"ccb05636c2ebe67bd96a726e33fe5a5277a724ae","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-ccb0563-202411191148.0_1732016962711_0.8247004904120867","host":"s3://npm-registry-packages"}},"2.10.1-650d303-202411200946.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-650d303-202411200946.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-650d303-202411200946.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2bf3ba41a43e7afc99b29f40b1305f8cc6af7648","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-650d303-202411200946.0.tgz","fileCount":370,"integrity":"sha512-UVtxsTUtezab62iwwgjyYaHqP0bB73uPqOgzKsplstni/MuvhstVJ1om0FtNMxbFu9pt0YhnJmaJLgaRlT7vwg==","signatures":[{"sig":"MEQCIEF9y597JznxDt0vMjXs+jHTIdmdB1F9ILvP8vNfmM7LAiB62UPC8MqqghGAnHcNB2eGsRonzk4eZCmtykweikwiXA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24204771},"engines":{"node":">=18.x"},"gitHead":"650d303f2decfad1858cb8c681ef2fcbdb026b3b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-650d303-202411200946.0_1732096045172_0.7354520787180163","host":"s3://npm-registry-packages"}},"2.10.1-5475a81-202411201052.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-5475a81-202411201052.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-5475a81-202411201052.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"914027c7cc00df46ae10693afbcc526669c3ba7d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-5475a81-202411201052.0.tgz","fileCount":370,"integrity":"sha512-oOJxDCSuunnpFrXnKdsgX5bVKhuwH8jGe6BLGrOCuYHD1htSXxc+N8kjx1BDIUYXbTRJ9hKOGEyomVsugT4CYQ==","signatures":[{"sig":"MEUCIDM5HCwWqHwkcc4FJgsZc6Ny+GS5flYGP1HPnC+QeemtAiEA7Fegav+Bt9CyVbwB39ggymiDHR2lJ1MWwbhhA9KSRK8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24217686},"engines":{"node":">=18.x"},"gitHead":"5475a810a2a47b1e408530116386ab05b7edb09b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-5475a81-202411201052.0_1732100000198_0.9212501110624483","host":"s3://npm-registry-packages"}},"2.10.1-8d89832-202411201408.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-8d89832-202411201408.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-8d89832-202411201408.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3358ba25e97a1270db9df693341b19908d50c299","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-8d89832-202411201408.0.tgz","fileCount":370,"integrity":"sha512-JXq8+9XBBaPpIugvTjX4r3x3z59OeFSrasjUNgqEvudAEcLYarWVbwV2ikqKdeWqT0GZpFOztw8pDXNFwHeAmg==","signatures":[{"sig":"MEQCIE+GKp/F5QvO8bbO8ACOCYSDNm0gSY7XEM49v1RR5bqBAiAeNpYAA+OUZptwd5a/1lm1tVonH0UmY3W597ffATNzHQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24324303},"engines":{"node":">=18.x"},"gitHead":"8d89832d110449504f3f0706fdf072fb664bf5db","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411051035.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-8d89832-202411201408.0_1732111793773_0.38397456108589445","host":"s3://npm-registry-packages"}},"2.10.1-8d89832-202411201516.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-8d89832-202411201516.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-8d89832-202411201516.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"099d2c8902173dabf73979dea454bde8aa0cf9e5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-8d89832-202411201516.0.tgz","fileCount":370,"integrity":"sha512-EiPacoFhpVmco/4k+/FQu+7VZLIByXei25a5xqt5okeQ0MkRpIMRkvVkXwtrwcBhmTfTI/++0oCg8oF41XD93Q==","signatures":[{"sig":"MEYCIQDuphgDt45VPfxDFVZjbSe4ptwyp5f0tk2fhAya+gxt4wIhAI7IETO7eXDEtQCpga9r+yAE3I2AiL3flBi5+bIBtPTr","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24324303},"engines":{"node":">=18.x"},"gitHead":"8d89832d110449504f3f0706fdf072fb664bf5db","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411201516.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-8d89832-202411201516.0_1732115878862_0.09504046201647598","host":"s3://npm-registry-packages"}},"2.10.1-bb77f60-202411201545.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-bb77f60-202411201545.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-bb77f60-202411201545.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"11ee9aeacb5ea77480488fabf4973eb2e7e5d75d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-bb77f60-202411201545.0.tgz","fileCount":370,"integrity":"sha512-4pqqqyoVPtqHJantf9A1J0SO2+3/Z7roMhlpE+MPD6NlGxtkksmvbLlteAQpR6u18WmUN7c2GSQVcrjiFBRBQg==","signatures":[{"sig":"MEYCIQCCBfRI0gePW43dDPpz08EptVheduRRy+spdzJfonqqPwIhALcn93kqNl+13yjGJfFmNDEigiC5yRLDyncpOKGojE1a","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24325439},"engines":{"node":">=18.x"},"gitHead":"bb77f60d88e255c586d891c7dc67b6338326cd38","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411201516.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-bb77f60-202411201545.0_1732117595045_0.7804235744795165","host":"s3://npm-registry-packages"}},"2.10.1-4e32fe8-202411201718.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-4e32fe8-202411201718.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-4e32fe8-202411201718.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1ce37189c30e8431ccd7030eaa54bc31a2f98113","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-4e32fe8-202411201718.0.tgz","fileCount":370,"integrity":"sha512-bkiewy1LKXpKkIPaV+HvAsp14qMkuN9ochO7pY7P/Zw49vI6s3zJyK6xGtlH8yH+5bDOQlZHtuNJ+Hc6LFiX8Q==","signatures":[{"sig":"MEUCIQCN9CVYyW4sylWfKqyY30xu1a0izICfJxjck5WNmGryygIgWogFsgLAjkQwHPImofmZJKKy0mv/Z10ZHr5GMvX45+0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24326494},"engines":{"node":">=18.x"},"gitHead":"4e32fe8f262e47c4e095fe5e2d55763e61df69fd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411201516.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-4e32fe8-202411201718.0_1732123213909_0.40523374943482215","host":"s3://npm-registry-packages"}},"2.10.1-8ea4910-202411201757.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-8ea4910-202411201757.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-8ea4910-202411201757.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7663f4a3bd4ebdeffc5522fb56f5870f8833d27d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-8ea4910-202411201757.0.tgz","fileCount":370,"integrity":"sha512-+yCeYMImgHoGVH5SHOz8bvVdN+q84pjRhqgA6ela0fC3C1ZWxqZK3gKLeEV9CXM7Zu0MNZvA2xHI+ro7umo6Jg==","signatures":[{"sig":"MEUCIQC5H4mvNl9GI87evLO9ATHlEe+1ECljLWlc79ZtCHU2PQIgV9P8GDhkehy3X5xsVRxAqzcru8FqdEvvxdFdzcVJIJ0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24417553},"engines":{"node":">=18.x"},"gitHead":"8ea4910b1e2381e32f3f2baf8908bc03a05fdbb4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411201516.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-8ea4910-202411201757.0_1732125543384_0.371495138950257","host":"s3://npm-registry-packages"}},"2.10.1-ca00928-202411201811.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-ca00928-202411201811.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-ca00928-202411201811.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ce69f87b2c1f6a8e9944bb1672593b807afba85a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-ca00928-202411201811.0.tgz","fileCount":370,"integrity":"sha512-Z8ZqrFQ8Ms8asZefGkB0X5TiSASZCnFR+c045qgyLK+BqqhhJsGJhYapKdVgjOHr7U0GqrGyVNp4fxAy/wwYdw==","signatures":[{"sig":"MEUCIFRFr6nYdN7RVi4cZflDaTBwUdt2s4OiR3TFlqa21ZBGAiEAx86Sws82hJ404Ny9No1JFeIcNbz0MmFCBwyi026ApoI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24417611},"engines":{"node":">=18.x"},"gitHead":"ca009287e2d50f3db45442873dc1cb9757b24d87","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411201516.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-ca00928-202411201811.0_1732126380729_0.8116706592072078","host":"s3://npm-registry-packages"}},"2.10.1-9222adb-202411210756.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-9222adb-202411210756.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-9222adb-202411210756.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f1ec5eed9b38066c66a0e2b96afe906b0b38e21c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-9222adb-202411210756.0.tgz","fileCount":370,"integrity":"sha512-evRI68jgLWxKHOTe44rAh6Lm7vaH9ILLCcbrWiZ7XT0Z4iTdgRKZ36xFYnxpUu+o0bCl0/KXYQHFa9yf8G0CyA==","signatures":[{"sig":"MEQCIDAl9bZMksjC5wz4Gs9zAE5uw7hRndpnpOJG0bj12WNsAiAwtTQJmSte8V0lfiLTtKzrjJcM7DX8zpETNAZ5P9Ek2A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24417947},"engines":{"node":">=18.x"},"gitHead":"9222adbb6fa88c306627b8cbda1b1d280c741fe9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411201516.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-9222adb-202411210756.0_1732175859863_0.5516040288166608","host":"s3://npm-registry-packages"}},"2.10.1-35924ed-202411211014.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-35924ed-202411211014.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-35924ed-202411211014.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a3eba28968982f41c330219637e8efc271d5566b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-35924ed-202411211014.0.tgz","fileCount":370,"integrity":"sha512-/5+/Z2RW1h0tl03sGkD67tBMoqvIXGPHRwoSHnanC39SaQdFnqYi/Ot6AVSbJjaei6HWygm9o2FFcqQdS2JM9w==","signatures":[{"sig":"MEQCIGz1VtqDvEimWlao4SjFjyXjjWPndVtB8fhPOCBsW8SxAiA/Gq8+zTZRR3cSxBW66a2gl38Nq0Z3Ho2OvU1khRq+eg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24440007},"engines":{"node":">=18.x"},"gitHead":"35924edb5e76db9fb40913545295bffe48cc8f05","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.7.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411201516.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-35924ed-202411211014.0_1732184155866_0.41930338460085936","host":"s3://npm-registry-packages"}},"2.10.1-35924ed-202411211018.0":{"name":"@flowfuse/flowfuse","version":"2.10.1-35924ed-202411211018.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.10.1-35924ed-202411211018.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"69d8aeeebb7f77b1550bdd0b2bd0d05fcac88c66","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.10.1-35924ed-202411211018.0.tgz","fileCount":370,"integrity":"sha512-J3vByhNyhFYKjnqRL3YoXNz2JZZwzd9UyaLk98c6gdKvjUAsl8q2kO0mMuZByp3o0rBGpxV2Fb2Z+ccIe+4znQ==","signatures":[{"sig":"MEUCIHEaqzO71+DYmbRwABBQGb4I8BNNMxbDKyjW9lja8T2HAiEAsJXlMxsEaUFLvSw9zhn/JlXO61n3UCnTrSJ+WJ5PDWA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24440007},"engines":{"node":">=18.x"},"gitHead":"35924edb5e76db9fb40913545295bffe48cc8f05","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411211018.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.10.1-35924ed-202411211018.0_1732184450090_0.6894338637194233","host":"s3://npm-registry-packages"}},"2.11.0":{"name":"@flowfuse/flowfuse","version":"2.11.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"325489c7f44cc87edeca26ed9b3ea39f228e09e5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.0.tgz","fileCount":370,"integrity":"sha512-F5ZPvGxJyuHZq6bYEXxLzAsU6fyWWQbECLZfTNry6N4xxWJ1TUZ4YYQwNYxrHRGEKN3GnFKeY8sJ/hdP+Vnd2A==","signatures":[{"sig":"MEUCIQDTGtMQRDdk3b/Hpbkq0pUhIxYk7jFioORWm5wvCD/37QIgDbm+kJx5a32f56/kLq91Bre3NGL6CjiHQoN+DNStXV4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24441294},"engines":{"node":">=18.x"},"gitHead":"eee84bc062ef237f4fee570c5a2213dc16a8b2b6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.11.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.0_1732189077751_0.31285873228965877","host":"s3://npm-registry-packages"}},"2.11.1-eee84bc-202411211149.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-eee84bc-202411211149.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-eee84bc-202411211149.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"703f7468f2dca383a010249dfb297b4102cda81c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-eee84bc-202411211149.0.tgz","fileCount":370,"integrity":"sha512-g5U9x+RTDJblH16Ia4dzPHUFuxO3i37BFmhqWvcS2V3WKoirv7uYxF/j3VKVoAETQav1bJaI/Nh6sARbne0q+A==","signatures":[{"sig":"MEQCIHFdC4k/VvWqrXzdcaim6wyalDIbZWi4NSFIpPtDR1UKAiAYk07YvtyBVOiGORfvZUFz4SqTMdJLwA83D7v00MCIpA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24443963},"engines":{"node":">=18.x"},"gitHead":"eee84bc062ef237f4fee570c5a2213dc16a8b2b6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411211018.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-eee84bc-202411211149.0_1732189858446_0.8623892808770419","host":"s3://npm-registry-packages"}},"2.11.1-4902e4f-202411211407.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-4902e4f-202411211407.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-4902e4f-202411211407.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"767af802c301f077cdbb4d373d272c8b451f33b9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-4902e4f-202411211407.0.tgz","fileCount":370,"integrity":"sha512-tDoR93btAVswvbevzBNTyJvg8ha1N8WnuqvtXBHNrgcXbOj0T8zpT9iN5dQXnrHORe7sg7b4ccc0yUnvRY73Tw==","signatures":[{"sig":"MEYCIQC2p/yNqtvrAV1LGj/80T5dHP57LTty9Cf4Kh34nTFPIwIhANvvxykFjAejJMd0RLZu5sxIar7WIAgD6uLxwzAUkpsp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24443963},"engines":{"node":">=18.x"},"gitHead":"4902e4ff6b35463b9583bc7da670c9dc8a3a8997","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411211018.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-4902e4f-202411211407.0_1732198146745_0.7339570004805054","host":"s3://npm-registry-packages"}},"2.11.1-43277d8-202411211550.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-43277d8-202411211550.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-43277d8-202411211550.0","maintainers":[{"name":"flowfuse-user","email":"nick@flowfuse.com"},{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2a7c0449032f728ba1b4fa83a40c8393067d4c3d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-43277d8-202411211550.0.tgz","fileCount":370,"integrity":"sha512-PaklN3d0T4j3Kvp++hAiNJYNMfH/sJC15aSBdGfkmNgJa/FY50x5Td4/rmNJG/A3c1OiVo8sLz0xydE2ZjmG3w==","signatures":[{"sig":"MEYCIQDCh8+A3vdJdtJAhxYVqHBr+BYNsjbTQFyqNb764dM8EQIhAJhrQBrqA13Ygw48WQsgBH652xvKZRoWuTar4pSOrUbT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24443963},"engines":{"node":">=18.x"},"gitHead":"43277d855a0a7e9aeb6ce4fb834af86e0bcbac33","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411211018.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-43277d8-202411211550.0_1732204330985_0.4707652267255513","host":"s3://npm-registry-packages"}},"2.11.1-58be955-202411251132.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-58be955-202411251132.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-58be955-202411251132.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d7276c2576927e47777dfd633e598a4058b28060","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-58be955-202411251132.0.tgz","fileCount":370,"integrity":"sha512-8mUkdW59hZoepMPh8WZmrZIe/PD9Dkp4Bf89aNHxsRJfyx51O7wQzaXUUNyHY+1XrJ4Lwn0Loq5vrV6lmd4mBA==","signatures":[{"sig":"MEQCID1NSbsMyYWgOpjKfgQoP4LYq/gl2NoS4pewMeh03favAiA0Lm8/pVOtDAxujBvKxV28t9/iPH5ZKWkK9TzGQ6KRqQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24457780},"engines":{"node":">=18.x"},"gitHead":"58be9556ffed4521072d20b71178862475db50d0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411211018.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-58be955-202411251132.0_1732534438742_0.031902162698820735","host":"s3://npm-registry-packages"}},"2.11.1-4ab0fb2-202411251456.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-4ab0fb2-202411251456.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-4ab0fb2-202411251456.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5a3a3b4dd9a2c566e28f544099dd232a04522b4f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-4ab0fb2-202411251456.0.tgz","fileCount":370,"integrity":"sha512-oSKSFHx+BwFcM6LshIvuks4vt/lwDal6KoZAzmh7oMWvooprIV/7vBPm5IOk0GTHFklLyXGsNNZP8v21lGb7GQ==","signatures":[{"sig":"MEYCIQDDc+YumAGrZgwC9uWZEAWLgzdy1Afn1ffUyiYhw0kQeQIhAJgeHbBQOH0/7mo4S9qcjCOJBWtCCslIADPmYh7c7uHn","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24490229},"engines":{"node":">=18.x"},"gitHead":"4ab0fb2cc28ca4a61ef1e363fe63af7af8933a4c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411211018.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-4ab0fb2-202411251456.0_1732546672981_0.6761129358397706","host":"s3://npm-registry-packages"}},"2.11.1-f299fd4-202411280925.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-f299fd4-202411280925.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-f299fd4-202411280925.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4cb5fd9699ab8f0edc1026c61cd20468f011d7db","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-f299fd4-202411280925.0.tgz","fileCount":370,"integrity":"sha512-s+80KCRrkIq9fJsV7DSge2Dkakc90MqwQrZ1bGyWnMOV0xDVXjtFZCAhwyDeb4UTWRpX2vYLujZBY9SYQM3pSw==","signatures":[{"sig":"MEQCIAcsMfrQ3CnHmEoezPs2Dubf840QAWKeBLHo0BzL3mDuAiBhbnyT+rID9iUpJc9tm+s0zbNvlIclfKPjOQZy+uIr3Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24490229},"engines":{"node":">=18.x"},"gitHead":"f299fd46e8886ac9c3a071fea9d11376f64bf46f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411211018.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-f299fd4-202411280925.0_1732785990823_0.08826176428547283","host":"s3://npm-registry-packages"}},"2.11.1-c88e070-202411281142.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-c88e070-202411281142.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-c88e070-202411281142.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d29b18499a878e026e3a152df849831ce5461dca","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-c88e070-202411281142.0.tgz","fileCount":370,"integrity":"sha512-sd1P5UgLdhdXnbl/pQMqq3g0/rkcoJFuvt+KS1Y14M/O3ISRH1Y8AZf31QN8fFdhXggGva5ElzTTK7RXwBoH/A==","signatures":[{"sig":"MEUCIBlpettR8IOuKfwQ7istBPRDQBjaO5/YtqV59n9ADYW4AiEAuOJY3LPyyF/TJS+CFFsk3eT+DEh1rJcNKwTbGcs8atA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24746538},"engines":{"node":">=18.x"},"gitHead":"c88e070aecfd20fe9d58c2a8a310fa8f6ab58184","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411211018.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-c88e070-202411281142.0_1732794220428_0.7016603125597414","host":"s3://npm-registry-packages"}},"2.11.1-511acde-202411281213.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-511acde-202411281213.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-511acde-202411281213.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ba23101f43e628156c543aaf623db9baeb3cf857","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-511acde-202411281213.0.tgz","fileCount":370,"integrity":"sha512-aswTidBBdGwjyc1/AA1MVlPrYn06rpgMwjXW0RxwF+M0iluVNTy/fqrE50MSYNe08CfHDRI2b3M98mvo3rUazw==","signatures":[{"sig":"MEYCIQCVKQVjrfZH+J9JfU0j8y5atAqeqS2Xvsf3CN/uUbOpKwIhAKop8Ogx5pOLXJ6kg7ndEo9NaiBN27caWjiqiZiurOi7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24746396},"engines":{"node":">=18.x"},"gitHead":"511acde95302c60a731f2b4c3f1bbda25c67411d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411211018.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-511acde-202411281213.0_1732796086664_0.766298020663071","host":"s3://npm-registry-packages"}},"2.11.1-645a2c7-202411291554.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-645a2c7-202411291554.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-645a2c7-202411291554.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c17208dac9e1246edb8b848bca66f292320c9347","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-645a2c7-202411291554.0.tgz","fileCount":370,"integrity":"sha512-0SI/YrGV2JPN7KbLsoHP0nUl1C7cDmDK5B6kPsYPrHsywJcESq4wvgvD7KwYZqhcZCLM9zuMSZrgeoqUThp8JA==","signatures":[{"sig":"MEUCIDRvrvEPJkXD+2DBTMOvttUbVVvYKs3NMSW22jqabvy3AiEAsMmLOcaLe1IKV1KkAM1Pxmd01X8j7D04tbCiQDSSJmU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24746843},"engines":{"node":">=18.x"},"gitHead":"645a2c759bc0624ed889ead96b1796d2abd2f3f4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411211018.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-645a2c7-202411291554.0_1732895724218_0.445277952111478","host":"s3://npm-registry-packages"}},"2.11.1-fa4f8c4-202412021250.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-fa4f8c4-202412021250.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-fa4f8c4-202412021250.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3aa6ad3f43f07d4d52b5953280f1372fa829a9b1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-fa4f8c4-202412021250.0.tgz","fileCount":371,"integrity":"sha512-fxP42qYYS15hPKQi8P7GgPWPYOlteb0uD7ru3BM6yGnTrVPiGmewZOX4+o/QVlz6/hUcL6DZRU0cjxQAsepArA==","signatures":[{"sig":"MEUCIFphuR7vhT0fCEPzpY313p/4z6dXnU+Kk0d/BcUulhuYAiEA0Wqe8mmM+c0DrhJS44Ph7VBTRWuVcG4LkmHJYfvyOuc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24750151},"engines":{"node":">=18.x"},"gitHead":"fa4f8c4a9c46b43ce76b6e8defb80ac37a76fa03","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411211018.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-fa4f8c4-202412021250.0_1733143879248_0.536183207777672","host":"s3://npm-registry-packages"}},"2.11.1-499b7fd-202412021615.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-499b7fd-202412021615.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-499b7fd-202412021615.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2eee33c4e853e471bcedfc688cccb0c0f94dfabd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-499b7fd-202412021615.0.tgz","fileCount":371,"integrity":"sha512-fdTlhDlozTknXF079sbFkIMuLPpxBV7paJQ32WjMNUaxg+y72VtJYFXppoWkKr3ZQ2p6B9E2AW0Ka2pmucQ1XA==","signatures":[{"sig":"MEYCIQCbcPPR5kMFyPvdM1T0Qir3nJ0ONC3/D9spRI05uwFsYQIhAPC6JxuMVTEIWgeDeg7Ut9U5zOwgNnlIqVuuEulMqaF1","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24756163},"engines":{"node":">=18.x"},"gitHead":"499b7fd8fec87ee7b4032ead0b3666bfe4a31aa3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411211018.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-499b7fd-202412021615.0_1733156215140_0.1235294638346931","host":"s3://npm-registry-packages"}},"2.11.1-7eebf0f-202412021708.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-7eebf0f-202412021708.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-7eebf0f-202412021708.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"84ad3a55bbf98ee1bb1b7ac66cecba0ba558765e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-7eebf0f-202412021708.0.tgz","fileCount":371,"integrity":"sha512-Pkh2rhvQncQWCaXzjT8cdDyulm+iHQr2PqhCjslp6NlvmFIdt5myk9epruGxyOaPXWjZ0N+oEfWqIIZX1hH6fA==","signatures":[{"sig":"MEUCIQCL5Zm9ytBXeupq7we/3WqMgGPogtcAeY00ot/XvbGyUQIgTzHRsxEpxlMS9VCRpaLDLuTa7e68CoicSd91PtrBHYc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24884406},"engines":{"node":">=18.x"},"gitHead":"7eebf0fc231ab1114dd42c92a0cf1901e98196ad","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411211018.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-7eebf0f-202412021708.0_1733159385605_0.16986053212402363","host":"s3://npm-registry-packages"}},"2.11.1-5b7a813-202412030925.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-5b7a813-202412030925.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-5b7a813-202412030925.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3fcfb08919a7fc7c0eb27917c02491dc391e5252","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-5b7a813-202412030925.0.tgz","fileCount":371,"integrity":"sha512-cavROQ1KwO1OCjWvCRxJIMVmfyzMYwDGhtSVZKitn7we/MWvbqoxrAZhvi+2OluOLsIAyebZquFV7rjyerr5cA==","signatures":[{"sig":"MEQCIEzzWJq/Szlh74mY4MnVIQbk9TeF1RffriGDXgzxQh33AiBmqka7bh1NLoS6daznnJmGMcTB6IAq/JHaPpiDIGFfUg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24886133},"engines":{"node":">=18.x"},"gitHead":"5b7a8136dad592639dd4ab42a42b4397f696e071","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411211018.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-5b7a813-202412030925.0_1733218041384_0.8893141875495072","host":"s3://npm-registry-packages"}},"2.11.1-12e82ee-202412031002.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-12e82ee-202412031002.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-12e82ee-202412031002.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"888cdd18fe7effecdc267d18186720d1b232e66c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-12e82ee-202412031002.0.tgz","fileCount":372,"integrity":"sha512-RHHc2SGnOv7VA+g1VRgmgjonA8qCREmTM/ioIn7pikEn1tPTdG5+BwlGwMpgA0QDdoTevdirUUzuz5BRsoTeSw==","signatures":[{"sig":"MEQCIH3JhqcpDN13ynZFCbPLus3beZzzp3Xq9KmSqb9URUckAiAFpcf5hUxauMRZjQU6CkByzt6pit33yE7Lt4ujkNupDA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24887919},"engines":{"node":">=18.x"},"gitHead":"12e82ee324cd77f1e97e98a21421bad97a35499c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411211018.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-12e82ee-202412031002.0_1733220245311_0.4603888960532838","host":"s3://npm-registry-packages"}},"2.11.1-12e82ee-202412031011.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-12e82ee-202412031011.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-12e82ee-202412031011.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0d091047a137d606a1b79b2dbb03bba5b8caf59c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-12e82ee-202412031011.0.tgz","fileCount":372,"integrity":"sha512-/pyX+CRRwagQTKoh+6r6PHgBwUn12MCE80r8xoJrhLPhTgYX7MSCyHSFf4ynAlkbLTAOQ3z+xOJIRjF8bTnHjQ==","signatures":[{"sig":"MEUCIDIGTTJ8XlL1GX218x2E8l05IUUBXTGMPpwKo/JWD1eBAiEAx9EfVOMBYGk5Rz0a9L6rNdjYk8F45XFbSNZxw0G9M0Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24887919},"engines":{"node":">=18.x"},"gitHead":"12e82ee324cd77f1e97e98a21421bad97a35499c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411211018.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-12e82ee-202412031011.0_1733220761727_0.36115583658733796","host":"s3://npm-registry-packages"}},"2.11.1-ac51a56-202412031101.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-ac51a56-202412031101.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-ac51a56-202412031101.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"817d7417d05ae89853751f4347d6772f785d85c4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-ac51a56-202412031101.0.tgz","fileCount":372,"integrity":"sha512-HQvdSJBKDuFqu+3o54aTHrO58AQrl+ZURw9hdzFnadw86j8K1/McTDiH9KGzR2QC1Dc1v87e7IL18Bf87cwBoQ==","signatures":[{"sig":"MEUCIC2YHrYsI8A3nKpuF2/gdJQV6O6zBi9+ACvjH5kuUvljAiEA8uUulzXS5s0N8wvLnzqhVefDDjFnWQ1kwQEVcMuYolI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24889730},"engines":{"node":">=18.x"},"gitHead":"ac51a56784e037cc9aa2d6268c48422aa44e4ee4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411211018.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-ac51a56-202412031101.0_1733223757842_0.756364106116806","host":"s3://npm-registry-packages"}},"2.11.1-5ee7616-202412031448.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-5ee7616-202412031448.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-5ee7616-202412031448.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a1628a9c0c3811bed06653a4ad8e8cc8359ccd54","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-5ee7616-202412031448.0.tgz","fileCount":372,"integrity":"sha512-t7CRYd2nzvBdR3fBnQytrCQ/RG9QL/leLLVTFHkx8NcyQfhv4bG+PJ6OQzYUB+w9fpy93W0rB40j/rqLIqT6IA==","signatures":[{"sig":"MEYCIQDZmNBwF7t2p3XC4ToDzHJXmB1vLeA70NP2PFzgLkkjswIhAJCrQSKaS221fxZ3nnVDDIEwUpOoNITn2c4sqDksQuXu","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24890465},"engines":{"node":">=18.x"},"gitHead":"5ee761671d657f36ca1a05da68bf5c351750fae8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411211018.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-5ee7616-202412031448.0_1733237413286_0.5479845680386652","host":"s3://npm-registry-packages"}},"2.11.1-cd97da9-202412031640.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-cd97da9-202412031640.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-cd97da9-202412031640.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7a17a58ee24c8307f38584d88c24d34cf8f64e9e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-cd97da9-202412031640.0.tgz","fileCount":373,"integrity":"sha512-MHdRfZtheqJHxwmOa3XCHsK+RO7OWsVNYtIWO+ZVQNLS5HSMWjD+YzfqI+Dik6SjrPGWqLn/eYaTegHNpUUxNw==","signatures":[{"sig":"MEQCIDYQzgWzMPhXozjZHh97zg8VeaF/I03jc94/pXMrIbqFAiBQF3IlgR6LKFdAz5ObVbmpkBbfveG+ufuOE50gwxnG7w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24917742},"engines":{"node":">=18.x"},"gitHead":"cd97da9b69b56cb038e26dfe1709f7e7ce861f6d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411211018.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-cd97da9-202412031640.0_1733244121922_0.5182616218543092","host":"s3://npm-registry-packages"}},"2.11.1-f77d1d9-202412040856.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-f77d1d9-202412040856.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-f77d1d9-202412040856.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bb735eb16eed1ddac569c3e9c670becf02b2c287","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-f77d1d9-202412040856.0.tgz","fileCount":373,"integrity":"sha512-jD3MwOO2P/osYP5Hw8Qn40jJq5H6XrrjtWbtdAuzFe5B/49VjC88jQgc+MW9I4bcRuyoLJRHo9pgb/U736C3QA==","signatures":[{"sig":"MEUCIQCaTdtdkxOYnMyvY0WOs1ncKqw8zxy4L7nmEUpvPoYWkQIgcS42CHgsRA43okMTkG5wwKW1376WiSxUxHj8N1zADHY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24955393},"engines":{"node":">=18.x"},"gitHead":"f77d1d94dcb8752dc091ee4a9530876f1cc2815a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411211018.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-f77d1d9-202412040856.0_1733302679229_0.13469068524403238","host":"s3://npm-registry-packages"}},"2.11.1-80a6de9-202412051155.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-80a6de9-202412051155.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-80a6de9-202412051155.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a4735aa04168b8d64d50f24f00250fe882feb0b2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-80a6de9-202412051155.0.tgz","fileCount":373,"integrity":"sha512-nSlOleKAqkklMlm9qLbsSU3xUGntlJdJbzg0v2aRCFf91zOM4LkgWH+dLzG8dfJA1Yc5o4UTzErGP3lxDnFEAg==","signatures":[{"sig":"MEUCIANAZIskE/KOWwoWd7pPCIKwTaY6eYf92XzlIHINlctyAiEAipJZBtPhlfILFZAtcKtZg5BFrjyEwwvY7nMOTZJWgDg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24955425},"engines":{"node":">=18.x"},"gitHead":"80a6de9305b3a2f2eeda1995793aa8fcb3662eba","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411211018.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-80a6de9-202412051155.0_1733399790596_0.7081416036376287","host":"s3://npm-registry-packages"}},"2.11.1-e13231e-202412051356.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-e13231e-202412051356.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-e13231e-202412051356.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fddc3d6da5d8a34fc772cb52463f543c90dfb0ab","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-e13231e-202412051356.0.tgz","fileCount":379,"integrity":"sha512-pjn+HRkCddfAtcxW3Zfbp9gK+vM6BZkrOmuta0EzwEuUguJjAzWCLSad7noxwYxkaFE0fWbIzAF/c6KUdj0VcQ==","signatures":[{"sig":"MEQCIDCY2wS/LGDyc62xuoXLhX3D2AOsX1gNBbqQOoJyR4VFAiAcq6S/4ADvpa5kC9+qsfzxGOlulhdwJjmIZwNDUEmYnQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24960900},"engines":{"node":">=18.x"},"gitHead":"e13231eb879d46d8abebdbbdc023b69368e63d29","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.10.1-c298fa2-202411211018.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-e13231e-202412051356.0_1733407067515_0.042903901554595336","host":"s3://npm-registry-packages"}},"2.11.1-e13231e-202412051445.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-e13231e-202412051445.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-e13231e-202412051445.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3f7b1c7d1d804f1f69894eadf91fe8c2c3ba4218","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-e13231e-202412051445.0.tgz","fileCount":379,"integrity":"sha512-rfju+5qlAmTfv5+QH2vEiPirHEdnX5Psf0ATDiygf9MwFM10DgTIidtJxuJu8A4II3g6EKBmyRnKLXkJTtqihw==","signatures":[{"sig":"MEUCIQCxZsZSXiWPuBQCFRT3lGNTMPLaolbtNrHrRvx45GaGLgIgcA9hdiqori1moOodChN7BWO9JPxC7AcAY04hW0Wf244=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24960900},"engines":{"node":">=18.x"},"gitHead":"e13231eb879d46d8abebdbbdc023b69368e63d29","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-0f0226c-202412051444.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-e13231e-202412051445.0_1733410029955_0.8713335984161548","host":"s3://npm-registry-packages"}},"2.11.1-6f5148b-202412060847.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-6f5148b-202412060847.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-6f5148b-202412060847.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4663ccfe078e85995aa5268c81538167470480f0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-6f5148b-202412060847.0.tgz","fileCount":379,"integrity":"sha512-xe6sAebLjabVwli1q4ZJrLeeJADVQXqKnBex818e6u2YDBvTgXzJy1d8i55BBMLqdvvuwYkLz1MHvsMyZi+eVw==","signatures":[{"sig":"MEUCICjGexcF4Ao8asr57g5rK1E54MTI7gTxgDAWpaQfdLV2AiEA2A0BhZRaF31gf7VyaE0P3sHiAVE0FKYB3XURYB3i1Mg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24960648},"engines":{"node":">=18.x"},"gitHead":"6f5148ba2976d4372d8c22fd133b945e1defe640","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-0f0226c-202412051444.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-6f5148b-202412060847.0_1733474924547_0.8109022838172655","host":"s3://npm-registry-packages"}},"2.11.1-9bb28ab-202412061220.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-9bb28ab-202412061220.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-9bb28ab-202412061220.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f5e8253c8978259ea4480b9dd7072610b99b00d4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-9bb28ab-202412061220.0.tgz","fileCount":379,"integrity":"sha512-BLZvPjINCAPUI3fc3AdpaPh9+dEHYA1Q0lxl1UlsnO2OaqlloFCVHz5PBuOJmg/qnE1zV517q9NEHR3cORYTFQ==","signatures":[{"sig":"MEQCIFiRUoFSpTJlWZeWVwOUCN+MZbLisyoMkWW1JzogYcbnAiBCnRnRhjveVFTr2xrpEgpEPAMddR2E9NAEiMqMNJgfYQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24960648},"engines":{"node":">=18.x"},"gitHead":"9bb28ab195d3eac0d6fcdc693fabfdf4794ac986","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-0f0226c-202412051444.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-9bb28ab-202412061220.0_1733487708706_0.33356507707905836","host":"s3://npm-registry-packages"}},"2.11.1-a8478da-202412061319.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-a8478da-202412061319.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-a8478da-202412061319.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a808d321826b0768a44db36725f318da0f601802","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-a8478da-202412061319.0.tgz","fileCount":379,"integrity":"sha512-en+32T9t020tX6pGwiz5QphaKx+4Zugwpak/4nzaL80w3UFm11Vdlth5YPnY3gQ/JvPrreYMX5uAO2TG66QBmg==","signatures":[{"sig":"MEUCIGBvMQE74dmqgQqY6spfGK+9bw9lnFLqDXSpHguPX9oLAiEAhFODhUqgRpEHRcgE4o1VNYAQ/99Kaz2UIy0iKC1/5Hs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24974878},"engines":{"node":">=18.x"},"gitHead":"a8478dab65593ccd4e007f293b2e4eb127f9ea88","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-0f0226c-202412051444.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-a8478da-202412061319.0_1733491239445_0.29490379108649023","host":"s3://npm-registry-packages"}},"2.11.1-a8478da-202412061323.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-a8478da-202412061323.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-a8478da-202412061323.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9022a681a40cae923304e289cb766fb67bbbdf68","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-a8478da-202412061323.0.tgz","fileCount":379,"integrity":"sha512-7otZ9QvAFH6wivegXIsVhx+svLpyZ7Wa0Cl/FnRAtOh/uB4vjU9HmKTt+o2fH7eP6JFq44qRd6g9N/Jhy3dAIg==","signatures":[{"sig":"MEUCIFusDYMTTBGYNy0dxDd6Q6dDOKWyAtzs0B8BK96tSS4aAiEAmzlCd8pB4vyjgoLCeLwPvfQmXqaIP3vW3NEvHUEAeY0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24974878},"engines":{"node":">=18.x"},"gitHead":"a8478dab65593ccd4e007f293b2e4eb127f9ea88","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-0f0226c-202412051444.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-a8478da-202412061323.0_1733491503531_0.2921159471980881","host":"s3://npm-registry-packages"}},"2.11.1-b545283-202412091750.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-b545283-202412091750.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-b545283-202412091750.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8711f6369b708736677944fa3332944695629788","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-b545283-202412091750.0.tgz","fileCount":379,"integrity":"sha512-GG8hfdp2BcDnTgrb42x2WVT2i/pf3AchAMbFnPxz8I8oSy/zfraOqklusDHuD6yEpOL6Z0XCX/d7uJ0LgD+y8g==","signatures":[{"sig":"MEUCIQC6pYlyzNVSGLCfycy2CFFPsIJdOQd5+JKIFrNwWO0IpwIgEXVADFXs9mP3/4dCxR4c//DguWf5wdqKNd86Wpwat5s=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24974878},"engines":{"node":">=18.x"},"gitHead":"b545283e8c56666c16ec21b3aa69fa38b21c9095","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-0f0226c-202412051444.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-b545283-202412091750.0_1733766681293_0.8924106762345243","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-56e68ce-202412091937.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-56e68ce-202412091937.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-56e68ce-202412091937.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6e314ee3ce103c8b7a2db69a3789c7051f8174e8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-56e68ce-202412091937.0.tgz","fileCount":379,"integrity":"sha512-DHrESD5ce1FEeSaPdsSzhEzuzPPtNNESbSjrcNp3j+3/S7wL5KLuxyxa5sQJeUN5u7TAot7O+MKqJRfyp83RXg==","signatures":[{"sig":"MEUCIQCYyakPSjiyZllmlWmX7IglVwNr3GvX+TIgcIW16oAt5wIgJyHskhPvHftsLPXl+hO8ndAtyc/AJeujDxh1anXHGOk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24974878},"engines":{"node":">=18.x"},"gitHead":"56e68ce551297e8dd5d96ac8484e30e091eb5cec","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412091936.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-56e68ce-202412091937.0_1733773114685_0.43541122730092985","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-56e68ce-202412092127.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-56e68ce-202412092127.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-56e68ce-202412092127.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f3f531b66491d85e638cdd9c0be40f81330b6f86","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-56e68ce-202412092127.0.tgz","fileCount":379,"integrity":"sha512-FBW8j3CuF9br3MPcuZlz4GQvFfXKt0FhH+I/9YuFqZ17jxu9RhLTf0mHIugaS/TeZ0mdrq+xZ1JzTtSMc+cygA==","signatures":[{"sig":"MEYCIQC4+D3tLc4F/gLd9QxwdPx5P7DOhVSg7cOzFmYkNubu5gIhAKkbkHF96CIn76pMeswQ6AVQm+j+NlbbZJe78Xy5UEYs","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24974878},"engines":{"node":">=18.x"},"gitHead":"56e68ce551297e8dd5d96ac8484e30e091eb5cec","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412092126.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-56e68ce-202412092127.0_1733779722795_0.9480027271922293","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-922ebbb-202412101605.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-922ebbb-202412101605.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-922ebbb-202412101605.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"aaee80b48cf4e389265378afbf23d1ffc9bef96e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-922ebbb-202412101605.0.tgz","fileCount":379,"integrity":"sha512-x7/GkwP/Fgi5NtTBnHcN422QGfLjFIX/FMWMkznphTXL2/toCdcI0CZGqhVBf3uIEuBxkLRTjZYnxF4DSkGWkQ==","signatures":[{"sig":"MEYCIQDh/LYxwAH4IB1TY8y+Eq+32Up3DSqS6ocp7wl36IU/rAIhANgRDmYDdVifoThJMmL3BAD+xaCc04t0CHgliaNnd5cP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24974910},"engines":{"node":">=18.x"},"gitHead":"922ebbb291473c8eba265c62cd1ddfe8e32525ba","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412092126.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-922ebbb-202412101605.0_1733846786181_0.3559078078407889","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-0445a24-202412111456.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-0445a24-202412111456.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-0445a24-202412111456.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"053e7f77f11757e92b9e01a90e25408abef331c4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-0445a24-202412111456.0.tgz","fileCount":379,"integrity":"sha512-m/kI83L4x7AclIzGtYUVvD6kw8k03ivz399SSoL0P9vblRGdd9/q5t2QPYdFT9ZNj5CpI+VHp8gnASyoxy4LLw==","signatures":[{"sig":"MEQCIDeWSuoHTucyppWtzHJNL9bLxwREVez+FWnS+BGh45gjAiBoIdvdqXN/SgYShROSlJZsEQQmHjMQ4fUuk8ju7gpm+A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24976451},"engines":{"node":">=18.x"},"gitHead":"0445a246ff423db58013923af64aae1543189765","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412092126.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-0445a24-202412111456.0_1733929088829_0.24577537170347186","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-0445a24-202412121106.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-0445a24-202412121106.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-0445a24-202412121106.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"860d3ab969c093e5ce02a0a3ecfe2533c51ef33d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-0445a24-202412121106.0.tgz","fileCount":379,"integrity":"sha512-y0GPuFHRwWrJUUGMuC3ag+QWQfu0GA2gQmZNhpGepKpU1xtxOssxwHnRxI5bBRpPKMS0ztRUsxBjvzMR/CRHbg==","signatures":[{"sig":"MEYCIQC9O21fSn7uuPm/sipbzqb86KAaNBxacwD60KThgW+8mAIhAPyfA+Sqmhm3Q4sUVdRGECwAGlj6YCts7uHBp+309T6v","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24976451},"engines":{"node":">=18.x"},"gitHead":"0445a246ff423db58013923af64aae1543189765","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412121105.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-0445a24-202412121106.0_1734001668917_0.9321349046880893","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-1f241e3-202412121114.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-1f241e3-202412121114.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-1f241e3-202412121114.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a3d1568f1c7e2d595a53e3106aea35ca4cc40315","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-1f241e3-202412121114.0.tgz","fileCount":379,"integrity":"sha512-lOXSjeWG5OvHJa5cM3kDK5SHK4K4fgpSwT5cVgDtS1kA4wq55fQ8ytYj5AZAOYDL8/2Z/5/HbQ/jqFvbGAxoCQ==","signatures":[{"sig":"MEYCIQDtXch2sLAQCm4YO5bdh45fAdhQVMVNV7SHD12FAQJ/CQIhALhM3FS5vrrLEGtbQK8/NtJZTw/sqnyZyeCGv+fTfF+u","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24977311},"engines":{"node":">=18.x"},"gitHead":"1f241e342bd8d1abc4f00d206c82bc2bcfa17915","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412121105.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-1f241e3-202412121114.0_1734002127196_0.11153209202954573","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-1f241e3-202412121123.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-1f241e3-202412121123.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-1f241e3-202412121123.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d98fccbbbc892299ed3727bb3a2bccb0aa73d2ef","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-1f241e3-202412121123.0.tgz","fileCount":379,"integrity":"sha512-g3zIpE5hIPydjmTrfn4+615IyCraKD/FuLnODHn+RxXvdd5tHYzpn8suxogzluz6KIeuq038feXTvmM9DBCkuA==","signatures":[{"sig":"MEUCIH7Z9eje/Enhd9mi11nIlSrFgRjmioQgbg+pHTlVJipYAiEArt0nSDo2eQZuH/i6xAJLMaVlRlZpJg8Lmzca2fcRorw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24977311},"engines":{"node":">=18.x"},"gitHead":"1f241e342bd8d1abc4f00d206c82bc2bcfa17915","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412121113.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-1f241e3-202412121123.0_1734002709574_0.7890284211646417","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-d325765-202412130942.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-d325765-202412130942.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-d325765-202412130942.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"09f6e3320a48a5a4282cb620103248ba7c104158","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-d325765-202412130942.0.tgz","fileCount":379,"integrity":"sha512-y4KFHLMY7u8IZATqNwigoY47dp+9+GsiqKjLL4fWgT3z6SZ4JHYWhN1bdjP33Jo+UrwPs2nAbcQ0yGe0BwG07g==","signatures":[{"sig":"MEYCIQCvxx6Bhav9+N8jrdPCNI9ui+Tai5TpdKqKsYcDq9t5ZQIhAKua7qkld+RFJi2FNg19r5X3JZYSPsIvHx48bbld7AwW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24977582},"engines":{"node":">=18.x"},"gitHead":"d32576545832cae1fbe94b9b72dd746942f483f7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412121113.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-d325765-202412130942.0_1734083023510_0.35706870026329884","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-d325765-202412131017.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-d325765-202412131017.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-d325765-202412131017.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cf4cf3aed234ddfe33773b0be73db0111f54d1e7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-d325765-202412131017.0.tgz","fileCount":379,"integrity":"sha512-OJRwoo9T+rChFI1TbvbENi+tL7p94cl8OmBL/9OXguVKV9EN0sNM1LqtWCFOYq5dJkIU89P5jE7NIM8bAdUMOw==","signatures":[{"sig":"MEUCIGkBnOSNMnGaCZh4YNRRndlLw3TVmd0au7QN0tpfflJnAiEAw7Lhi9H2Ox+Zp3p9ZwTR3ucP1eBkFCgacqTDP5yzO14=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24977582},"engines":{"node":">=18.x"},"gitHead":"d32576545832cae1fbe94b9b72dd746942f483f7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412131016.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-d325765-202412131017.0_1734085125152_0.5108880376981233","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-529c85c-202412131403.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-529c85c-202412131403.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-529c85c-202412131403.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"be90f17cc1277f2de9ad7520e263370f64c6155a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-529c85c-202412131403.0.tgz","fileCount":379,"integrity":"sha512-it5+mTGB99LRTUYXDNEv3rZSVkZACKDSigww3/FgeFhuoIgDULX66LZGI94T9IzrY78rIKWfKc0+7S61+a6sRA==","signatures":[{"sig":"MEUCIQDpwakGrSSPXnAQ9/9YC3gyd1rPX5Bd/gRSeVZwFj4SSgIgIYvkSBW2iqjD7hj9cKEPoKhKbzNbLg9+5A0KfC4QRY0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24987623},"engines":{"node":">=18.x"},"gitHead":"529c85c9d4022ae560f0705deeaeb6cd7c6160c4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412131016.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-529c85c-202412131403.0_1734098700335_0.5110644187201578","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-6bdabe5-202412131423.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-6bdabe5-202412131423.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-6bdabe5-202412131423.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2620143d369e658fed41ff3386d8a7fbd56f9b92","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-6bdabe5-202412131423.0.tgz","fileCount":379,"integrity":"sha512-sfj+Q/tBO8x0JrUqe1+HDtXnjLbQIdTf1zy8ea3QZcA6D7VegpnrHXO/NdFHcqgCB5SKnWM9eYh5GHwefjMJyw==","signatures":[{"sig":"MEUCIQCtNd30mpWifMEFlmT2TtIELnVnhUSE80YRA33GGuKviQIgYW0IQ4GaFD0sLi+iVnLXa/VCfG542+oyOU+cW2JUYd8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24987197},"engines":{"node":">=18.x"},"gitHead":"6bdabe59d5aede3398a5f3f792ec2c4218be37e1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412131016.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-6bdabe5-202412131423.0_1734099888160_0.3092561902250692","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-d636c16-202412131520.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-d636c16-202412131520.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-d636c16-202412131520.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"43b08b8ac85061b956cb756f5c80d33cd32f62fb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-d636c16-202412131520.0.tgz","fileCount":380,"integrity":"sha512-et2r4GL2Rz8fe6UGyG47MiGhesubCGdiMmksQsyi99gdZ3LIrfyFam4gp7N4mRZFt+vaf2Ay2WVLIE3Bb10Vzw==","signatures":[{"sig":"MEUCIFNmvQX05VjCtfCL1/u7S52qtzW1QNFqGwxw9kUKb5xlAiEAhn6FtvkPquh8UqfNWAHyfJwNxSqKPWIAE6ZR6/cZ1OA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24989322},"engines":{"node":">=18.x"},"gitHead":"d636c161e1036d78e0ad2891d8162a3b16d4a1e7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412131016.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-d636c16-202412131520.0_1734103306323_0.002878082720596309","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-4884866-202412131626.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-4884866-202412131626.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-4884866-202412131626.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a2f25db6267935122de223186b31b219eb1ddfc5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-4884866-202412131626.0.tgz","fileCount":380,"integrity":"sha512-TJQEOQjtH2I2rYp/Irrfve3+j14D5H0NlvAyeknkZVdGgVRvIGnQwTM78X8ggp+ue4V+LEw5dEPSIkIAvFbMEg==","signatures":[{"sig":"MEYCIQDSqOuk4/GRC21/PiU6QvGIzYl4+X6eua2R740ES/zucAIhALRxuLO8Sq1aYcCutfMQfu+RQHCVujksheZC4eVM06Bv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25038996},"engines":{"node":">=18.x"},"gitHead":"488486683858581044a69fa3d716a95f27103d00","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412131016.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-4884866-202412131626.0_1734107286960_0.1817699876742862","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-bdf5dae-202412160951.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-bdf5dae-202412160951.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-bdf5dae-202412160951.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4f767f7e8162b7b9f59a4c62a306ff230202f85e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-bdf5dae-202412160951.0.tgz","fileCount":380,"integrity":"sha512-clp+K6d5OhHD4f0uashwqaE8lT8Mt5s5TxvYpdSUFduK/iUYsr0z8KeBj7UHKivOB5nTrvY0XxOuWMUU4wF5ng==","signatures":[{"sig":"MEUCIQCbl0Ra1SH4xEjmOvNLEH7QF4kdbOvVXoojkkXq0tpYLAIgOvCqe/R+Ni4YB6wBy0+EsL1ksmVT1F5BjQJpN4Mqgk8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25038996},"engines":{"node":">=18.x"},"gitHead":"bdf5dae3a3a26c9d4158e8cf60f5fba90b55394d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412131016.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-bdf5dae-202412160951.0_1734342778442_0.8574258293205388","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-bdf5dae-202412161054.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-bdf5dae-202412161054.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-bdf5dae-202412161054.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"604c4b0e668bf91e11fe80c24a052cf52a8cda38","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-bdf5dae-202412161054.0.tgz","fileCount":380,"integrity":"sha512-o9PlL/7kQUW6jJjaT9rpGotLGRdKEAB5zcqQp7MwP5Lt4QiEeMM907rwVP1fRxLa8YgtlsE9NGc620A4z5DAww==","signatures":[{"sig":"MEYCIQDd5ucYWmIJk6ELYJ/uoy7+FsGv6fhKc4xlTXTvbnkjRwIhANzu3R6btnZFLSTlAOb8ESMvQoEte6ffVl/f6yAcBNNy","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25038996},"engines":{"node":">=18.x"},"gitHead":"bdf5dae3a3a26c9d4158e8cf60f5fba90b55394d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412161053.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-bdf5dae-202412161054.0_1734346520592_0.380192631725937","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-bdf5dae-202412161708.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-bdf5dae-202412161708.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-bdf5dae-202412161708.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6be78ea7b5d37983c1d91b1984cc0bd9f3a16f25","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-bdf5dae-202412161708.0.tgz","fileCount":380,"integrity":"sha512-tJQ1b3Y27pyPf5ok64em1z6O4gTz0A4bDfLXOJWg68aqGgE0MzjlQMsNiReQo8fTVKjQ1mUSPl3PIlvZJ6aDPg==","signatures":[{"sig":"MEQCIGyNS5iuGyqbexhkc13FJSDUKcxw9GhiHAHF2ljUrTgCAiBxEvN6lC8/YaUn2hNeZrdsVscI9VbFqX4xRDY3+VGOiA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25038996},"engines":{"node":">=18.x"},"gitHead":"bdf5dae3a3a26c9d4158e8cf60f5fba90b55394d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412161707.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-bdf5dae-202412161708.0_1734368981509_0.8057695561133769","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-2c8fea7-202412171109.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-2c8fea7-202412171109.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-2c8fea7-202412171109.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"00ca7346f4d8378521304ba236241ea234799335","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-2c8fea7-202412171109.0.tgz","fileCount":382,"integrity":"sha512-WP24Oatq3sPTtrGVBQs5m1hD2LeKM6p8o2DjYNdgZDhECv5UuhMU6254pn2YBFZ6bbEr/iYeqRSd0oXe3D1oJQ==","signatures":[{"sig":"MEQCICxOyE5XjJZKzinyP+muzLQiOtZFBa/j+/B/HhoyRr67AiA6gvzFBP5lFbYSF3l4Dmz5UFRk3b/SKIRygmiatLm0eQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25255797},"engines":{"node":">=18.x"},"gitHead":"2c8fea76c2ac034a5803202e1cd6fa52bf507789","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412161707.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-2c8fea7-202412171109.0_1734433869891_0.2205668362683122","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-be3af14-202412171222.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-be3af14-202412171222.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-be3af14-202412171222.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7bab7184d2c6eedcc169878d3bb91336bea833ec","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-be3af14-202412171222.0.tgz","fileCount":382,"integrity":"sha512-G7mhQL8atyVJRWgtQx9keI3pRT3Es/U5a/FBcHqxZ1fn/3uCY6TFGbGvZdlOWnQbxCP9F15q5H25vvEXwNGYGQ==","signatures":[{"sig":"MEUCIQCA14aQnXUOf4q0EN6xqJ4EUlN9RJAnWtkeb1e+OfwgYwIgbuw0pGv5/DIyfWtOf/wKUczL7yY/Knud8jbLiRE4e8M=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25255087},"engines":{"node":">=18.x"},"gitHead":"be3af14d51a8f04637cd077ece08aea8686e1761","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412161707.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-be3af14-202412171222.0_1734438256814_0.38287799059717753","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-181b34e-202412171313.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-181b34e-202412171313.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-181b34e-202412171313.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f8510884c5f8f80341896a35eb3d81240498372a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-181b34e-202412171313.0.tgz","fileCount":383,"integrity":"sha512-A9RD+gL+dGY15MLNNYV9WtY030p2yI0bfc+wvGiaNLUP5K/+0fJCYhvHIgSZnY6CKWyQjdnz5pfaaHR+HIvn1A==","signatures":[{"sig":"MEQCIDfc3ogLJQTJG0H/An8vx1GoO6XryfWtw8ckXJRTdgFBAiBJ2s9MQC0pMS5QVKclfiHZJIj+d1TImLt4nM3NWGS2wQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25265276},"engines":{"node":">=18.x"},"gitHead":"181b34e4c37835e9a233e1b20f61e7ba3fe0fe2a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412161707.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-181b34e-202412171313.0_1734441292102_0.7442186080016091","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-775c19f-202412171525.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-775c19f-202412171525.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-775c19f-202412171525.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fd2e5c0ac6e763f4913b1f56c6bf21761f949f26","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-775c19f-202412171525.0.tgz","fileCount":383,"integrity":"sha512-CGl2QSSxbeQImWx5cW9lWnq2ClC1NjyAfqXhJKffHjuQi556UfjLxq9n2XmEWwYtyr5EUhpF1HijsNeYj2n2YA==","signatures":[{"sig":"MEQCIBVnYWr8GOi6oSYGa6qXwZ+KyJVw94LOOLBld+th9MAhAiAImqVkDr42RJ6Yh2jcqF1HjKrLwATz4bUzEURnpK+A0g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25265276},"engines":{"node":">=18.x"},"gitHead":"775c19f620442e1c8e49d4528f610280d0ebc1ae","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412161707.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-775c19f-202412171525.0_1734449188628_0.8117722886499499","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-33ac8f7-202412181005.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-33ac8f7-202412181005.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-33ac8f7-202412181005.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e2a1eadd5b0315f5d97c72fd170d78d45a9ba9fe","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-33ac8f7-202412181005.0.tgz","fileCount":383,"integrity":"sha512-chBrN1NiFC+wzqsQWH6ckOpf8d8Ocd835y9ptSUTYSX28un+Fuv4oqKTbNVCBSlx5YjfMDbXzv8q1OlJF7lDIw==","signatures":[{"sig":"MEQCIHMiFQvYI8B8qCKMQlx7oxjGtJpx5BDk8lL3C/uKkPmzAiBNCsSglKHwgoV3mUYlUvKl9aewLlfIiAO3X25oMUP5tg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25265848},"engines":{"node":">=18.x"},"gitHead":"33ac8f743f2ee75455bd3802838399d710b19ce0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412161707.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-33ac8f7-202412181005.0_1734516429353_0.5426859027053781","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-0eb0082-202412181252.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-0eb0082-202412181252.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-0eb0082-202412181252.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ce7bb22ce71850de103dd197f200aa648d5e301d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-0eb0082-202412181252.0.tgz","fileCount":384,"integrity":"sha512-WXD1p0P6v20s7ygp2NqzRns/tE6pW1kvsICGjCx+sXonbNQrb42vw8x0O1nJs4f80pesOV9vuRj1lbuFKdvH8Q==","signatures":[{"sig":"MEUCIQDWobrJkM0Av/zMmZTz4O0BKWn0KJfhZk8QqugabrZl8wIgBL2FvtRnNmFtEzN8VYEzw58qZXVVHLtmBjyK+sFuNcw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25269287},"engines":{"node":">=18.x"},"gitHead":"0eb00828f8acf6dd787e6cfa0ec599475b9fc76d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412161707.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-0eb0082-202412181252.0_1734526457060_0.5057360949560425","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-3a30552-202412181320.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-3a30552-202412181320.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-3a30552-202412181320.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"59bef3d819abdefdcc5952dfd3c66e634ce7b810","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-3a30552-202412181320.0.tgz","fileCount":384,"integrity":"sha512-1DU8nkOra6kmjyO3JbLtLhVIXax1O4whGcpo/O6Yvss28tJcMu0EMamOgXIGxHH2qUwP/x01ZHl+L+apsJsxSQ==","signatures":[{"sig":"MEQCHyQNNPKmXdzrl6MgPzO1ZE9w2i+zZ5BOAG6SNDKitGUCIQDgMq+ZXBvlTjehQJRIuXKKPgkM22GQcGSWSV5/QPVobQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25265366},"engines":{"node":">=18.x"},"gitHead":"3a30552240e1805a1dc5c9f45e6ebe07948ef5a8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412161707.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-3a30552-202412181320.0_1734528107055_0.2311876730051441","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-3a30552-202412181409.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-3a30552-202412181409.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-3a30552-202412181409.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"84921bb285b3261cef0020a2bc84dcbb3d0d6934","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-3a30552-202412181409.0.tgz","fileCount":384,"integrity":"sha512-K5NaJ5C0cZFuP/PubAJfxlR94kIdkuRTKWFRmPbo/ELXEyzlknR/hOw2LPO4t0ZOGNWzdJ+mZD0DGTXoMG4A4A==","signatures":[{"sig":"MEUCIC6GKJN2ejZ6Pk+Q0DckFytGLzCH1eTE00DfcM4u8qzzAiEAnnXeC9M2cQrJFZ1fhgKHaHnKOYc9nKxOJpEusI2XYqg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25265366},"engines":{"node":">=18.x"},"gitHead":"3a30552240e1805a1dc5c9f45e6ebe07948ef5a8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412181408.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-3a30552-202412181409.0_1734531074723_0.9915417478027702","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-3a30552-202412181741.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-3a30552-202412181741.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-3a30552-202412181741.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b1dd8b1c41f18f60aeb543bf7c8d8ee0933101ae","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-3a30552-202412181741.0.tgz","fileCount":384,"integrity":"sha512-/S9G/gWwWSVo4jxM7oQ+fjtEcghhUPnNC5F8SD+3UxUC+z09BL6gJv9n+ZxCO/78FFhLrJr8kwT4eLP0yraY3A==","signatures":[{"sig":"MEUCICVj3Eax1SgIKyuFBNSohZzDn4I+SIBTWUgOiTXKQNQ4AiEAtEJ2DqE9DBWTES1FQsq7a18GW8bzbvqKfBdGVfS1uag=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25265366},"engines":{"node":">=18.x"},"gitHead":"3a30552240e1805a1dc5c9f45e6ebe07948ef5a8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412181740.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-3a30552-202412181741.0_1734543756226_0.1677881010517741","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-3a30552-202412191021.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-3a30552-202412191021.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-3a30552-202412191021.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3516baff08aad145b910c45f2cc163fc49e98ce1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-3a30552-202412191021.0.tgz","fileCount":384,"integrity":"sha512-4PJQhA09V5DYYkmwIrkfmMzmuyLBIGpwkQICq4UKT6fhEe52cOeinS2NzmwZ7Lv+3n2MxTZgPGJck0lK7vk1pA==","signatures":[{"sig":"MEUCICf+KXUmA9tJeIydObVrq9T826SLSjNMlEMSTO6k7vTTAiEAs2O27NbpJVm4EfpVoKiEQgLzMJE+opreMd1g3DHVEQo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25265366},"engines":{"node":">=18.x"},"gitHead":"3a30552240e1805a1dc5c9f45e6ebe07948ef5a8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412191020.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-3a30552-202412191021.0_1734603757104_0.3844392606246978","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-3a30552-202412191026.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-3a30552-202412191026.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-3a30552-202412191026.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d5349abc433be638b7359c84e69cf3e50b0f503f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-3a30552-202412191026.0.tgz","fileCount":384,"integrity":"sha512-qJeWJBqb/c5lhAV0XkmLsnRdJSOtyDeRY5prX3Z3Zpi/kInw8zy5R6nVT5wXcJBF8D221gN9eml707ztCU0Azg==","signatures":[{"sig":"MEQCIAfcXmUsNyjr7WEqnwjwhSXn83kxLp0em2hLxifmekf4AiBDt/CB/7C/GwjgPEYbnRRKWtLPmJFgM7kspe6vKVB6UQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25265366},"engines":{"node":">=18.x"},"gitHead":"3a30552240e1805a1dc5c9f45e6ebe07948ef5a8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412191025.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-3a30552-202412191026.0_1734604042924_0.605617384554759","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-17b0467-202412191028.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-17b0467-202412191028.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-17b0467-202412191028.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e1d909547eb539916619d0610220ac79975cc8a6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-17b0467-202412191028.0.tgz","fileCount":384,"integrity":"sha512-4hfoUXGFdpbwgvip4Nv33UC8E4YzWHHQFlEJgpdYVtGXsOE1P7s8NfaaX8FuJbeIEfS/YPM2vGM8O9ZS+unAQA==","signatures":[{"sig":"MEUCIQD9+tso3nPeoEhjzZbflrmJshAGeYZn0C9E7H2Lyn1eBgIgKSICNiSmJcaHcn2aUFervY9Ji6iKu0Guq+8/1vuzW6Y=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25265550},"engines":{"node":">=18.x"},"gitHead":"17b04671810598fdfac12290535f26e354614b23","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.11.1-660f2a7-202412191027.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-17b0467-202412191028.0_1734604178018_0.7636441333064852","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-17b0467-202412191032.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-17b0467-202412191032.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-17b0467-202412191032.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"01792c5b49bcfe54402736cd34efc8ec497a8632","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-17b0467-202412191032.0.tgz","fileCount":384,"integrity":"sha512-GreDuFadddCYIpXXJJ8Pj+j33v8xUVO7ldlwZ93HLohvXA+rnqDX3XMJS1gqVTYPBkjQq+FQ+fHZTDQ03YJImg==","signatures":[{"sig":"MEQCIFEEqKHJ7pZ6u+vfc0KpyP3VWou4FHhu0GQqIbJOEeHiAiBWJB7JlzD+IJXR12zIJAbaNGkDfkNHGT91B7SA3ddMeg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25265550},"engines":{"node":">=18.x"},"gitHead":"17b04671810598fdfac12290535f26e354614b23","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-17b0467-202412191032.0_1734604442039_0.22222432138117032","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-937a83b-202412191040.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-937a83b-202412191040.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-937a83b-202412191040.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dec36dface1811ef4442533f8b9aad33e38dee5b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-937a83b-202412191040.0.tgz","fileCount":384,"integrity":"sha512-BUzBDbhvuNMrsnVMieXdszbKvyTmKWAtyD2Ft1UiX8GfC/qn/GuOyzalp3gQlUbv2DKFZzKHwxpJvm1KMv9hfw==","signatures":[{"sig":"MEUCIBuJT4sSCVsVEQs0cirbnmsmqjpNbqLkfCLrVAafnN4nAiEAzA1ag4eKQyUXoOrfgK/Y5qLXuEMw/aN/RW3X4iw9cks=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25289262},"engines":{"node":">=18.x"},"gitHead":"937a83bcc620a0435a4c2536821b6d5fca8c852b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-937a83b-202412191040.0_1734604883424_0.9645030627813747","host":"s3://npm-registry-packages-npm-production"}},"2.11.1-937a83b-202412191050.0":{"name":"@flowfuse/flowfuse","version":"2.11.1-937a83b-202412191050.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.11.1-937a83b-202412191050.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"556ec1be2831026c486761bd8323684e99e62672","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.11.1-937a83b-202412191050.0.tgz","fileCount":384,"integrity":"sha512-6UnZuEOvRgyc8Bn8LJIuf+lJrZQCp1DLkciNp+rGpw30r2sPPDYnCxINDFO0GJPYAiW3YZ96RxiaIstSDSWe6w==","signatures":[{"sig":"MEUCIDrqJVWUHiuN0VU1fKnpqXPRBP9an0OsiuW56FgYWViHAiEAlIsx/m2zVmqDrFbjvsGG0E11xRM52EURbYun1E9RNds=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25289262},"engines":{"node":">=18.x"},"gitHead":"937a83bcc620a0435a4c2536821b6d5fca8c852b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.11.1-937a83b-202412191050.0_1734605487588_0.547342357457085","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-acb38e7-202412191103.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-acb38e7-202412191103.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-acb38e7-202412191103.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"021be79d3d7ac85221e014fe8aae5c7078683792","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-acb38e7-202412191103.0.tgz","fileCount":384,"integrity":"sha512-FZ5Ygr8MJ0J5bs8JAhDC1cc7lFPgu9XzPTLdwGIA19AEBOSRQ8WNX9xU8LOhIVsPBsahkHSGZyxUAv4TrlQGmA==","signatures":[{"sig":"MEQCIDrVSTMEltg/l/h8UE9ho+8Wj6L7+janrTBTZL0EuofIAiBvj0Uu3kG69PZFdY8OnK0qTaIOKCz/DqsdC8H2s35naQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25293317},"engines":{"node":">=18.x"},"gitHead":"acb38e7f5226e2bd0e44a3db5d6ec7c4b89fe097","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-acb38e7-202412191103.0_1734606314778_0.8987698795426056","host":"s3://npm-registry-packages-npm-production"}},"2.12.0":{"name":"@flowfuse/flowfuse","version":"2.12.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f9b96fadb36392a851d08275da6456a673ec118b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.0.tgz","fileCount":384,"integrity":"sha512-4y1ppoZ4uVoM2K+Z2YCyaTOjQq1hvct0mKdC75lhFDe6QBi8ZIRCTfc6mx5dVgc0Z8ci7Qyx4Y6PCdv5DxCHqw==","signatures":[{"sig":"MEQCIHaIYaHPVwzCIndMeCe+Sriytu6ks7aUHxbRsgVdIS0CAiBYqk+di91nneM7z0jBS6VVCMhZ9wZ7dHMF1P9Dl0z1jQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25290648},"engines":{"node":">=18.x"},"gitHead":"acb38e7f5226e2bd0e44a3db5d6ec7c4b89fe097","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.12.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.0_1734606328305_0.5969955923553816","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-acb38e7-202412191116.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-acb38e7-202412191116.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-acb38e7-202412191116.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3bb6115328ccf77a887b15b93b0dbdb0efea76ec","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-acb38e7-202412191116.0.tgz","fileCount":384,"integrity":"sha512-3+EKhn9jvuNvpXOS0XdrP8PVKhRekOk+mb7iryBcKC4ZMIoOHbMC84p8creqV6JVcgFphjUGgJ7MZ7PNR5YRaQ==","signatures":[{"sig":"MEUCIQDutkw1MrskKp1kb41U9abBmomnN7NuA5sY+Czx33PgtAIgeZBUEMWT6bjf/CYnFgi8NymqNapvPsnizA3wbaYzD3w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25293317},"engines":{"node":">=18.x"},"gitHead":"acb38e7f5226e2bd0e44a3db5d6ec7c4b89fe097","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-acb38e7-202412191116.0_1734607072606_0.6866707464161252","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-449189a-202412191228.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-449189a-202412191228.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-449189a-202412191228.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2cea3a998c4c8339b491840718a0b02fc060de95","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-449189a-202412191228.0.tgz","fileCount":384,"integrity":"sha512-kvU8Y1yh7KnqM5Hc3Oh3d7nlqCu/o45bh5e59B9fPlrV2q9ITOTh+GeHM9HP5mEAcnHYRZ5NqfmjO6nwon8m2g==","signatures":[{"sig":"MEUCIAhkOTPd9KYWPx4N4cleCA1F0UvUmIfGej/cSP39RKn+AiEAqIXdKoqaXn7atyhynrMMttCXU6UzqpiYOycTRCduFxI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25255779},"engines":{"node":">=18.x"},"gitHead":"449189aeb2b8f8d416a70cd678d0ff8a61e0941a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-449189a-202412191228.0_1734611381820_0.4534606934599228","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-cf9bfbe-202412191258.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-cf9bfbe-202412191258.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-cf9bfbe-202412191258.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3be05577ec5b2c0eeabfb3f407b9041fd663fbef","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-cf9bfbe-202412191258.0.tgz","fileCount":384,"integrity":"sha512-Q3vJbPERGQ3Yv89x6HvuEhgmsPpDzhoerChIMab1cO3ch/IBPLSeBXafuNpp4o8x0MQqvoIN84Z7L2FLEwWn0w==","signatures":[{"sig":"MEYCIQCdq5mfSIb0g8LFaC6bmDjkDUkgju7+OWYF9UNhvDbusgIhAOkUzbeKmSnmxid/4qqhnsyjqd02FN+r0wI+uctIidWX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25310621},"engines":{"node":">=18.x"},"gitHead":"cf9bfbe116115d32f0783c3dbbd3401133c36c9e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-cf9bfbe-202412191258.0_1734613174981_0.5537036895873007","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-d29e97d-202412201611.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-d29e97d-202412201611.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-d29e97d-202412201611.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fd134a6f083088bb39fd2d8730a7abba5b88f1d6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-d29e97d-202412201611.0.tgz","fileCount":384,"integrity":"sha512-kHNN9rneZdQuna8qEJwvuwfkWNb/EseCTDCB41dt2vXALXoHUpYtYSO4RfZ+F57q18u53LHJ3hzaHMWTiay/gg==","signatures":[{"sig":"MEUCIH1AR5705BH/wNKstF8jxvKcyRNXRPElS+yVigMQdiDNAiEAqcaWyvBKN7prqlwyc3SQGc94t/b0OngCnAaNnRWV8YE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25310307},"engines":{"node":">=18.x"},"gitHead":"d29e97d8c86ce5f6856149fbe25c4953716161ba","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-d29e97d-202412201611.0_1734711144339_0.6918985594101514","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-d29e97d-202412201614.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-d29e97d-202412201614.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-d29e97d-202412201614.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"afa1967b37bc14db28c170449ee0b5d44b2e16d6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-d29e97d-202412201614.0.tgz","fileCount":384,"integrity":"sha512-5G71WxGIn9Lm2UfEl9ENyVbS2hmjs0/e7/GNBB/svJsNZMgh75InFkugYMbVMKYgLAljyJr6XvTmSvSDKTWy+g==","signatures":[{"sig":"MEUCIQCRvhAaAIMtoiZCSI+k6Zbci2PZOlRTXvyKMelq8Q8bHgIgNtfyKHEdRYjtSHMiHxu3Yhp0LWMAdXQQi2jPgHHCbcU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25310307},"engines":{"node":">=18.x"},"gitHead":"d29e97d8c86ce5f6856149fbe25c4953716161ba","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-d29e97d-202412201614.0_1734711371008_0.28158770608207484","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-aa77197-202412231719.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-aa77197-202412231719.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-aa77197-202412231719.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c84474f04f1ea19ee1570424f65d21ca46a6d80a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-aa77197-202412231719.0.tgz","fileCount":384,"integrity":"sha512-FyabsgkLPzNJus8elwi8z4qX+MKNPw7PKlfnHwyPNj2pfwDCVoBaQsuaRG1fzTcfHqcR87NS55JkhyJ7GQQCvA==","signatures":[{"sig":"MEUCIQCmhWE3CivDO2TdYrrS8bbq6Kts3YcOC6ND1o/di6hE3gIgc+mn+3s9kMeSSgFeEjQJqlnyFDBCaElKfTRIKT9GYm8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25327993},"engines":{"node":">=18.x"},"gitHead":"aa7719791b8ca074473294425ac1937bc834ca59","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-aa77197-202412231719.0_1734974453691_0.6689409417889156","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-bfd9fa3-202412240944.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-bfd9fa3-202412240944.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-bfd9fa3-202412240944.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8220c5b941077fbd0dc736f1f32b5a7ef9ee8f70","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-bfd9fa3-202412240944.0.tgz","fileCount":384,"integrity":"sha512-2Fz/K3cR8f9PBBJouqwEn2nRuc354UqZI2dGApSJMnQbESxaTBupdSf8O2l3MtX5V1thDWgNUWncTYDLV/hBLA==","signatures":[{"sig":"MEUCIGfLBi9ZOpz4lt1qGb0glMhGYZlQuddJFss9H8vVMXJEAiEAwrab84kLhUlexAIGtU7Ajwth8YZ9KeUl58JRG6TUahE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25328225},"engines":{"node":">=18.x"},"gitHead":"bfd9fa36a09e4f171c19b2a3a841cf6c1eab2a8c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-bfd9fa3-202412240944.0_1735033566003_0.6850359411799596","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-69a00e9-202412241013.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-69a00e9-202412241013.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-69a00e9-202412241013.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6b97b2712571469ff990cd9b8ca62faa0de12aae","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-69a00e9-202412241013.0.tgz","fileCount":384,"integrity":"sha512-Je09Vonf+J0H6VmP/7WrcBljVSCSZuTM5ZFb1EBlW+32P8zZmUrTHiTIE0KhRI2uOpXCsb8PsHR4BQrZiT9DAA==","signatures":[{"sig":"MEYCIQDVRzt9Z+RW02XylENrKfH6xLCRs1ezGFQrEv1miVEXMwIhAOYWnFgBH0V/wZoAtFcU77Yt7H5eOZS4Ibed9AtO0e2v","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25328187},"engines":{"node":">=18.x"},"gitHead":"69a00e90e5738d660722e51db535a16d474eb26d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-69a00e9-202412241013.0_1735035269248_0.9402914692053594","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-6d814ed-202501021224.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-6d814ed-202501021224.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-6d814ed-202501021224.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4dbd31a0aaa774064ee217665d8972883d5efe80","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-6d814ed-202501021224.0.tgz","fileCount":384,"integrity":"sha512-j/LiofyT0zI1NLuxzQhxHFM478vP2mW7TitJrOONuzTO2RL5jGIJGg1Kx7IAm08q+iV90474mhmr6uROHnlNmA==","signatures":[{"sig":"MEUCIQDC5LNFB8Nva+Jmkm8ZuQ5esrZR2W6AiT2iiPnILrug/QIgEMdwFC9OK6rS38jy1YkOIKm6T7RWcs8d8dp6Yfvs2gw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25328226},"engines":{"node":">=18.x"},"gitHead":"6d814edcea4422f243c0eb92697513599e08dac9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-6d814ed-202501021224.0_1735820770228_0.8103076895599375","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-19a0a08-202501031234.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-19a0a08-202501031234.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-19a0a08-202501031234.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b6b23afeb3251a3fcebd1ce8f716e1edf78c3b60","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-19a0a08-202501031234.0.tgz","fileCount":384,"integrity":"sha512-JQRlV/oJSWRFyPXuwP58HLatb267cFaSQCBz92ZC8w8TwIphTDNgJpX42RAKJtmLqK4XoHcUUjGORd7Pa0KdNQ==","signatures":[{"sig":"MEQCICLXP5edSQwSJN/GHEIDTPz5xlLt0fS0sSmT4KOK2eU8AiBKwz36ZbMH5ybfql3mUgihlVuW3tGUyt/Ja5aiLRT89Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25331689},"engines":{"node":">=18.x"},"gitHead":"19a0a08f281a84cc8f7479c0c4b96ad9e4f53aca","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-19a0a08-202501031234.0_1735907747360_0.1369884159672925","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-19a0a08-202501031238.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-19a0a08-202501031238.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-19a0a08-202501031238.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6b8f7d08fa210f34f0145a505ff031b3dfc0f663","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-19a0a08-202501031238.0.tgz","fileCount":384,"integrity":"sha512-253bv8c0O0jKdxHwDuzlSisRICyGNxVIKzA3nDV2KtNb2riCL0nCbikrcnrOIHYAT5B9WPZDNeS/RbNW1skYVw==","signatures":[{"sig":"MEYCIQDDEbxeBlW2qb//r3rUJsdG4Zk7yIR9zbdYq5637b8ckQIhAJKuR04HjrAxjOgDr7/WcpqCP9o1+4Y+YBKOZsH3ZSrh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25331689},"engines":{"node":">=18.x"},"gitHead":"19a0a08f281a84cc8f7479c0c4b96ad9e4f53aca","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-19a0a08-202501031238.0_1735907991548_0.39822359449794553","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-b9795ee-202501031602.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-b9795ee-202501031602.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-b9795ee-202501031602.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b743a125ef52b1e3962c4d1ec5dbd6140fcddc42","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-b9795ee-202501031602.0.tgz","fileCount":384,"integrity":"sha512-0N77IP9zXyY8pwrtrEZM86JYSOydZnLppG+FGYHSTg8bJ1jlrrshWdBTLwWrzfvTTNn5dpm2GpsUPuoB/BqGmQ==","signatures":[{"sig":"MEQCIEgOR8e1OikUseZV1NPPaxZmT4nFD0f3c5Rk5TBWWhI2AiBpuYbQ2TjoxcA61SENWAtAVaIWFqaNG+pIZFy3utNH3A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25332562},"engines":{"node":">=18.x"},"gitHead":"b9795eec1171318fdae48100299780cdc072439b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-b9795ee-202501031602.0_1735920256295_0.2877872611176302","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-605d471-202501031633.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-605d471-202501031633.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-605d471-202501031633.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d2f336b2ee32b6447299c07e445009c8e16d1848","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-605d471-202501031633.0.tgz","fileCount":384,"integrity":"sha512-ffk+A87TcCGwdwnqXk0SgazuWGg6nBgW72ynfta9/XhjlWMiShTOfxwZgL6ScxrMFSSi6gpRDZmOX2vcT1L2SA==","signatures":[{"sig":"MEYCIQCmPeHr5YT38gX5FJub940XOscAkAiTJVQwp5vtI155zwIhAKccI7gGfBdzfTMgPF4xJNpS/dDgGUvxsJD2lx+wypP4","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25334250},"engines":{"node":">=18.x"},"gitHead":"605d4719cc60f37eac4250f2a892d2a261019082","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-605d471-202501031633.0_1735922105714_0.6643706461602836","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-e36db74-202501031744.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-e36db74-202501031744.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-e36db74-202501031744.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fc807aa9a2fdd324632c7f8e30c43e4d68bdd48f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-e36db74-202501031744.0.tgz","fileCount":384,"integrity":"sha512-/xmJGn3FET3xfgD52BZlFiIFoxLuj2b949XR8jgFdJo2q4J9EdMCsgfLRMVyVX86uHIX+ZDOrYL8y/gGJE7x0Q==","signatures":[{"sig":"MEUCIHY8h5nsjklkHhqeN18YnHBvTkLgGBBUsVuBND+tjOsBAiEAlns4XvUQi8fKioOhyTQvqrNPpmlBJfkJG1BR4/vB7BA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25331661},"engines":{"node":">=18.x"},"gitHead":"e36db745b0dfc4d6ca2dceb7237856f797f069e3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-e36db74-202501031744.0_1735926337691_0.7357349025575377","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-ea96922-202501071001.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-ea96922-202501071001.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-ea96922-202501071001.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"290760d67631e8714c65bcd79d95d70887d8637d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-ea96922-202501071001.0.tgz","fileCount":384,"integrity":"sha512-an+TzbxSdwVWwge262R8oBnnWKFHckCO7bLoalQWG7mMnf6pcGFp5upA0/fdzRo29KWsSOPDTmDKiVg88v4rIA==","signatures":[{"sig":"MEQCIDBZ7a7DVPEgZyna6KoX+YBmj5d329OVlpjcVNW91jl3AiAGdyrRzlhJsp328eqIl/pwCiAxoliR/nUT//2j3k8o/A==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25335410},"engines":{"node":">=18.x"},"gitHead":"ea96922efe1dc525540254e0e61d6b46905d5c43","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-ea96922-202501071001.0_1736244177400_0.3554908539258921","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-4f77403-202501071209.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-4f77403-202501071209.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-4f77403-202501071209.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"75add85d5d0a06515aca8a1179a52c2aa0919c48","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-4f77403-202501071209.0.tgz","fileCount":384,"integrity":"sha512-irfj7PAXViP0SlrLfINI1D29DIpNGegRX6uHI5N//WF6zjq15jDPqn1UreeBolc6gRh5qroNAfb+0B1JfizL4Q==","signatures":[{"sig":"MEUCIEMW9EfzttOi1+r4uWlHI1lxLJBxCyWtpSoATx+ooJn3AiEA61EtDbmbuFeOD5QAQC676TaxeLTgsCZM8THtAk1+4Pk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25351487},"engines":{"node":">=18.x"},"gitHead":"4f7740393c729971fa467cf4ea4271869d6dfcbc","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-4f77403-202501071209.0_1736251843516_0.2364682730049601","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-24999ba-202501080946.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-24999ba-202501080946.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-24999ba-202501080946.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1203e3c084b256a899b40fea4fba56d21990e2ba","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-24999ba-202501080946.0.tgz","fileCount":384,"integrity":"sha512-uUStqrNVrwzBHn6thzjxSdgdFv4h6rhu/sM29DVgMe58KwVY3v8zd21OJrAZWMookZiHUBYd8w4c6kY/wNp6Sg==","signatures":[{"sig":"MEYCIQDRmD3SBI74QhZNrj41D9LPDqqbwewqTgt6BhNsmVAnGQIhAOscFHZlonWfL4jkpdTHLpg2EX1t6RXozqwNOCxRds1F","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25350840},"engines":{"node":">=18.x"},"gitHead":"24999baa1de7e4d6111eee6ac6db6a7bfa1521f4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-24999ba-202501080946.0_1736329647843_0.24418411218709668","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-540dd70-202501081015.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-540dd70-202501081015.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-540dd70-202501081015.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"089bd7867322eb4045ab15a29bbb53b46b69ed10","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-540dd70-202501081015.0.tgz","fileCount":384,"integrity":"sha512-wh+cuiD0s4dkFq+PLiH30mxHWnKGMncEVB6lQkFzh1rI6cZq0C5YjdnjeNu+YuKP9R60TjCpEXN47X4K5PGPdA==","signatures":[{"sig":"MEUCIQDfuVwS0v+7hvZtXuihWS7QxDD80bECPL9n2PyoEYjfIgIgWl6U1t7gTORS+WLBeheIvevMBzt5vhL3k7lmtRyXXvM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25355262},"engines":{"node":">=18.x"},"gitHead":"540dd70b14c9e99579a8a3b5c194a8f99937101d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-540dd70-202501081015.0_1736331386303_0.18610716001270577","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-e84426f-202501081137.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-e84426f-202501081137.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-e84426f-202501081137.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5e2b870e54228e76759da4ee21fff14d1f0565a4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-e84426f-202501081137.0.tgz","fileCount":384,"integrity":"sha512-shHSctnCAlMSeZp1bqSqsFAZvCVwvic/gGvpHsx6fKy4JoIA9wK/I7eFS9XlUHlikQgrQQBR2E4VVfbu5ILbEA==","signatures":[{"sig":"MEUCIQDeeA8xE6TeFQrXwmd8BmWbzkhSu6qu772Iw07eEmpAQwIgGAfPgYPRZ/FNqa7fVwMaKiunif4FQpoi1tJtZr1cLug=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25356149},"engines":{"node":">=18.x"},"gitHead":"e84426f58d210f4b04511cdda632fcd4a833182a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-e84426f-202501081137.0_1736336327952_0.8311632014559656","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-a54c833-202501081320.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-a54c833-202501081320.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-a54c833-202501081320.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3a9e4573aa73b39100e92e79df495d5d38bc3744","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-a54c833-202501081320.0.tgz","fileCount":384,"integrity":"sha512-YK1yRp7nHCUH8UPS4NuK9os0zpBBc2wy/uVxcW96CW2WZGjIeM56Gs1c0eSNqNaYZ5JfJs2CVUTUWDhZW0d7kw==","signatures":[{"sig":"MEUCIDOPgdA4EtmapBXb66410JY7tj4B7xPxTGJR1NidE2j1AiEAycYsyARTeZ8arFZiGJZx61Jv4rMPgo7ep/wnvLlDud4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25357146},"engines":{"node":">=18.x"},"gitHead":"a54c833d33808883f09497ae500a92797f5f5475","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-a54c833-202501081320.0_1736342485016_0.8674143330776596","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-c0e2da7-202501081726.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-c0e2da7-202501081726.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-c0e2da7-202501081726.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6d13630177e132662a9419a68be1c87e91ef4baa","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-c0e2da7-202501081726.0.tgz","fileCount":384,"integrity":"sha512-D4h4GOXozx1aGkyQKvpkepFChzFjVxChbtgkHN5TLXgB175WJ4E7UsGR+J5H09WAJj/aGgOUTGdKqH7+KtahyQ==","signatures":[{"sig":"MEUCIG9YeYzL0ZwouH0xeelSldsbKzenZMY4VMV9g3SNc+82AiEA6uuZoocDBKXdCwNiyZeUQL7CRJRBEmXLYBHKsjs4W+8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25357014},"engines":{"node":">=18.x"},"gitHead":"c0e2da70847e98b1ca01db397659a511b235c21e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-c0e2da7-202501081726.0_1736357288122_0.783966823294143","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-3c9ec14-202501091553.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-3c9ec14-202501091553.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-3c9ec14-202501091553.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0afc66359220625f42bc0dc4cd7b202417d8dac3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-3c9ec14-202501091553.0.tgz","fileCount":385,"integrity":"sha512-j2S2AQ4KIuLNOFeiHEAFLi2jMCOis6VrXDsbykF6Ik5s2jGYxD0hSQIM9zPyZ+1xdXZxMtKEGEC36r7iseXLzw==","signatures":[{"sig":"MEUCIGb2xVdHfRJSH+PyXkZKRfUpFV5vdo7s7dPD18R8EHRoAiEAlg6D/4gVDJxIHtjGhcn1kiyK8bf8acyqc1byecIJhdg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25358804},"engines":{"node":">=18.x"},"gitHead":"3c9ec14d4a75568f42082e7707bee4b0399dd45d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-3c9ec14-202501091553.0_1736438116550_0.29672250439029524","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-3c9ec14-202501091559.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-3c9ec14-202501091559.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-3c9ec14-202501091559.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d0c758eb41bd1184c06b318c87328434266ea53d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-3c9ec14-202501091559.0.tgz","fileCount":385,"integrity":"sha512-i0JIpl0kjDXCdHWysRPeztNnjdpvtKX0xFJFByMPDKWMaCop7hAXUrwDZtBM3wcGAywz3/82Ob6zahF0NHNU7Q==","signatures":[{"sig":"MEQCICW91EFo02HrsfeYVp9Q/ilUJeN39Gd3swIRSjBbSn+HAiA3maXZEaNah+Olk3/oyEL2aEd6a47+YECnZLKBVUoEbg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25358804},"engines":{"node":">=18.x"},"gitHead":"3c9ec14d4a75568f42082e7707bee4b0399dd45d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-3c9ec14-202501091559.0_1736438442266_0.8228915702700699","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-9c75a03-202501101108.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-9c75a03-202501101108.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-9c75a03-202501101108.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a21d745d0ab85f5fcbc2cc9793e581287609ca8b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-9c75a03-202501101108.0.tgz","fileCount":385,"integrity":"sha512-U+vRi6ysAj3LY3rsZpgEys4AUuLL9598u6LebX5+bzn3zxLvnjk0ABLtneu58c+nHVMTEQg9K6ee7iZ/dE/+Lw==","signatures":[{"sig":"MEQCIALIkmytA1LapVyEHXtTIUgrDm95a9b0xgsCmfHXHzOoAiBtKkAr3T+T3dWVm8KvcRsVZ1B3KWoEboTZ6yqH+YG72Q==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25359838},"engines":{"node":">=18.x"},"gitHead":"9c75a03f13974a57960ed4f50281b0b63359bbc5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202412191032.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-9c75a03-202501101108.0_1736507378617_0.14410914930479257","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-9c75a03-202501101508.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-9c75a03-202501101508.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-9c75a03-202501101508.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"22f756fb78ae995e6b3ec6aa777cd686849b4747","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-9c75a03-202501101508.0.tgz","fileCount":385,"integrity":"sha512-FWC4NS0TG2YJjmf1MKPWonZh2XU48skd4oyd9Wnl/d4P/NF5xY9DVJcHH/DiWDzOXXmQSWC8oQv/tkvepiKSlg==","signatures":[{"sig":"MEYCIQDeAqVJb8jk0ib0/eH6aMW9fPiFVbg+zzVUz0KiqWq+rgIhAP1URHUbXKqh92Rg7lnV0WoebypeZT9pP5t/04LVWlFp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25359838},"engines":{"node":">=18.x"},"gitHead":"9c75a03f13974a57960ed4f50281b0b63359bbc5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202501101507.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-9c75a03-202501101508.0_1736521782671_0.17571416941959073","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-ad8ffa7-202501131825.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-ad8ffa7-202501131825.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-ad8ffa7-202501131825.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"386ff9ae52d25bf95e41593aab574b8e8427d7d5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-ad8ffa7-202501131825.0.tgz","fileCount":385,"integrity":"sha512-msLsnkRf5MUN67uzwhRmL8WsKPiFrXGIP4+mqdiLn3iBEL6opWAoyY4Ye9d5GCkJuUFae+ED8aVCzsDqhQnS2A==","signatures":[{"sig":"MEUCIQDoE655PDoVeOVH5hy3Qii0xsMuzfbkhIRq8xBof46izgIgbqgbq34drNXYF3gQ7bVkSEdEhLIuY4K6MVipcclkfmI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25360120},"engines":{"node":">=18.x"},"gitHead":"ad8ffa7e7b0ac9fae70f5c8c2b3d79d3e6288575","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202501101507.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-ad8ffa7-202501131825.0_1736792815604_0.6994123525009066","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-ff70a8a-202501141038.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-ff70a8a-202501141038.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-ff70a8a-202501141038.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5e7a6d0b60ef7e7bb286efd8f530060bc05578fd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-ff70a8a-202501141038.0.tgz","fileCount":387,"integrity":"sha512-CcpXuoGux/uqfNdKQB7vZKK96uJdDWRpP9OvPUaQn4UMXYin9zbXzlQMwFNBtxiETlq0+v8ym5j5so3htCvbXw==","signatures":[{"sig":"MEUCIHxBVR2TIcHvDSJoLCU8m5DvnRr8j3AA7EmEXix39DdiAiEAy12owgOP1U7vgeSJjIL7BSe/06KXeKfWuTJls/9jMhQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25369928},"engines":{"node":">=18.x"},"gitHead":"ff70a8a51b34c5b328290982f2e7c5b107d7e109","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202501101507.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-ff70a8a-202501141038.0_1736851181493_0.4501908145151672","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-3bfcb8b-202501141620.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-3bfcb8b-202501141620.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-3bfcb8b-202501141620.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"127f3995103a3ddc9bde685c73fe96ec05dfb79a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-3bfcb8b-202501141620.0.tgz","fileCount":387,"integrity":"sha512-nye+IcIJMOTu5gEZrY4R6qST6q8idj9ATQ3A7TnZUsJCeUbkVvEqdHYfPcfOmTFnofYOJKy40tbGfoidpTZIPw==","signatures":[{"sig":"MEUCIQDb6BzHmmIRVbTcVztUaN0H5uLWzblNvyMPHbWd1ZaPQAIgSalPg8XUQHyLcHkD2aaUvlPoc7etW6QZtRnHZrXt3vA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25370552},"engines":{"node":">=18.x"},"gitHead":"3bfcb8b87f4c025d622dbe06e433965c11513a56","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202501101507.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-3bfcb8b-202501141620.0_1736871712683_0.3101330413124075","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-e511833-202501150939.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-e511833-202501150939.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-e511833-202501150939.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9345bd25e9baff6e89941775dae93b24c3c9904a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-e511833-202501150939.0.tgz","fileCount":387,"integrity":"sha512-3f9xFJJyeTqBlwU+cZ6hDM2X/Vq7ecINbBvBfAvatslDyniLzjMwfwqFBNGhCljMvxlMXp8dxRkaMv2cM7pAyg==","signatures":[{"sig":"MEUCIQD038kH2N6v5mwcWQywfWRwiKmghwh2pnFtqvnp89A78wIgEWL4sDLbzw5qyjN2PKflkOVbuyhHb8Q9MuzXjHhizPA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25374415},"engines":{"node":">=18.x"},"gitHead":"e5118335ad5a537d343a97da4bbc71b2c4d32474","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202501101507.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-e511833-202501150939.0_1736934022740_0.2197987454049144","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-6927cc6-202501151501.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-6927cc6-202501151501.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-6927cc6-202501151501.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"813b22d562348c50dc7017482b6e3230f6c27b7b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-6927cc6-202501151501.0.tgz","fileCount":388,"integrity":"sha512-sv3iu/XNgPHpw/s8mlNF6Fwjx4gJyvi0VgvQ37MmPrT7yz3lX8kKH3rVe3Gjv4TabbsLVfeUOWn9y3S7guR9Gw==","signatures":[{"sig":"MEQCIAERwGzn8QsP/IknPCWDXgSsZlHWdwFvY+0xZNKC0oqNAiBwlhNj+Bw9eIrU/y12pZR3470iQFG1PGLdKIXtg+M3Qw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25379676},"engines":{"node":">=18.x"},"gitHead":"6927cc6af0bd86c40fc76eb6ceb12036bb4b3fc5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202501101507.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-6927cc6-202501151501.0_1736953361667_0.2974070434801783","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-5b66f52-202501151732.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-5b66f52-202501151732.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-5b66f52-202501151732.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3e23449b72b8bfb5d90867b69c5a884c419e7765","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-5b66f52-202501151732.0.tgz","fileCount":388,"integrity":"sha512-QiQjNd226CUXr7fnqq/BX26GdC9ByTBovg/7F3PihGpJlz3huDaHaEjXKvNkeF/5en6reQn2w2PupLmMg5/WrQ==","signatures":[{"sig":"MEYCIQDrD9p80W3mzbUjY4WEMu8AJD57+t6V7UTHPrqg+4g2GQIhAJiBGDWpacjx7FdcMalLcS6pH690pE3QQefIobb4+pXX","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25379716},"engines":{"node":">=18.x"},"gitHead":"5b66f52fe80e5c81ad9b2cc111a88b83abb9f754","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202501101507.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-5b66f52-202501151732.0_1736962449123_0.11176180099406308","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-5b66f52-202501151745.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-5b66f52-202501151745.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-5b66f52-202501151745.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f1a8476224dedd541fdcbb6aebff75bdab61f837","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-5b66f52-202501151745.0.tgz","fileCount":388,"integrity":"sha512-BqCMGsC0CDUcqi1XyPo1Sm2ESJE2GDttTwHCoZXaVsbr8VU12fT3voJwonWEsF2j+0c01v8TUP+W3XxUQ6CtBg==","signatures":[{"sig":"MEYCIQDBy71aY7und3jdziCNGWe6PnxzQYdjB3R8P09frriELgIhAIjMxyoBa6v5p8qHLRSGoBS/ZG5ws+RsJEZD3mHMkhq5","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25379716},"engines":{"node":">=18.x"},"gitHead":"5b66f52fe80e5c81ad9b2cc111a88b83abb9f754","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202501101507.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-5b66f52-202501151745.0_1736963195234_0.899284432787415","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-a08ba1b-202501151810.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-a08ba1b-202501151810.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-a08ba1b-202501151810.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5420b094f60bb1953fddaf7cd5828deb4e299513","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-a08ba1b-202501151810.0.tgz","fileCount":388,"integrity":"sha512-BnCybeaTZ77JvfCWTf9eXd8fnpxU8+CzJqNJjEcGfLFdq6BQre1hMV58SxSOwyyU0inbDrE29HVDa2XGUCFHUA==","signatures":[{"sig":"MEUCIQDKxMnsnXIvubebLcSZEI2cZPrdfCGXW5OVcZLNgT3/jwIgSpWSWDupAVqz2yumbraFspICHjpIuU2PHMmQy6RGPcg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25447017},"engines":{"node":">=18.x"},"gitHead":"a08ba1b0f38c715c636e1c45a0c71a4ba4c16216","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.12.1-b6fbf90-202501101507.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-a08ba1b-202501151810.0_1736964718340_0.14622366813130427","host":"s3://npm-registry-packages-npm-production"}},"2.12.1-a08ba1b-202501161013.0":{"name":"@flowfuse/flowfuse","version":"2.12.1-a08ba1b-202501161013.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.12.1-a08ba1b-202501161013.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"03e0e9bbd9bad17397c66d946b89995e6a37244e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.12.1-a08ba1b-202501161013.0.tgz","fileCount":388,"integrity":"sha512-fsMcENZieseGogljXD9b2QHD6nj0aZlD+O97Rt9KhertsXR1LsrtAL1GFdzr6TV5j/enJr9G6Qt4vcZajZFzYA==","signatures":[{"sig":"MEUCIQDtuZgQVDg6EMdUt7p2GkzZw7Cc+ZX1FVyaeHxaiLWEuwIgHHv5BnVdd3BIkRU8sXjXTYuQgKZojpXxH0z0CNyjGUA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25447017},"engines":{"node":">=18.x"},"gitHead":"a08ba1b0f38c715c636e1c45a0c71a4ba4c16216","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-b80793f-202501161013.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.12.1-a08ba1b-202501161013.0_1737022507403_0.6050101327564439","host":"s3://npm-registry-packages-npm-production"}},"2.13.0":{"name":"@flowfuse/flowfuse","version":"2.13.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"74a6017dc83dc5b82dfb68b3a33b6394826ccf37","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.0.tgz","fileCount":388,"integrity":"sha512-7/quyB/qYVtnezM3s7Z9KILY9OIpmUyqY5vNqM3tK7JIHoxP+8LfDT2l7ZFQQrYSXinwUWZGUJhi4LHzoYAv0A==","signatures":[{"sig":"MEYCIQDZrogHJhxMMfdwCV28fy9A/tLen9ooroDVbD0g2JnN/wIhAIcAeR7BgknYG0fqM3QtRVpgYuxt+zTC9n6eXUbuKkuU","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25447328},"engines":{"node":">=18.x"},"gitHead":"f808a3efba517ee35d61f7d24fbfcf78e4eff646","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.13.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.0_1737022860356_0.024740548905411552","host":"s3://npm-registry-packages-npm-production"}},"2.13.1-f808a3e-202501161033.0":{"name":"@flowfuse/flowfuse","version":"2.13.1-f808a3e-202501161033.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.1-f808a3e-202501161033.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"da7801ed1fda526ad159522dc413d1026da7fbca","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.1-f808a3e-202501161033.0.tgz","fileCount":388,"integrity":"sha512-MKqfeoHSMpCeq+7Tkw3iMt1qe0TZvyqT0D8IDSmMnJKNTlNv1f9IE1/3gpduZi2+lkdLD/ZvTjCIWTalTXJo5A==","signatures":[{"sig":"MEQCIGw4xX5sH8BcdPw3zxtZ3vsFXCoFLAzFQ/QBQFB2cD/vAiB5geJlOQ5d7etuwNODE0MmXzsr0Sl/zHbn+xDn8cYBqg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25449997},"engines":{"node":">=18.x"},"gitHead":"f808a3efba517ee35d61f7d24fbfcf78e4eff646","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-b80793f-202501161013.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.1-f808a3e-202501161033.0_1737023681237_0.8418677111015196","host":"s3://npm-registry-packages-npm-production"}},"2.13.1-e1e344c-202501161137.0":{"name":"@flowfuse/flowfuse","version":"2.13.1-e1e344c-202501161137.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.1-e1e344c-202501161137.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d5fe4f20a5f4a17eee8f1eca9b8b95c63d7c5467","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.1-e1e344c-202501161137.0.tgz","fileCount":388,"integrity":"sha512-p5fIOrO+X6aA3d2mWhtPWOsdpaSFNz/b4xwR/nuSDf1P6zMZ3q7VqQJKUNjDpP6lFPO7M/Rc8XLAXD73gl7eYQ==","signatures":[{"sig":"MEUCIQC8PER86N7AdssNMPs/QlIuGYiNzFj1iarOFm1AkCal6gIgQ7fUaBJYFKPpxjwR/Pmm7L9a0yJ+1HmRkxKpZSol87k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25450251},"engines":{"node":">=18.x"},"gitHead":"e1e344c1ff6aa84670d3c68a6aa397c659b1a848","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-b80793f-202501161013.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.1-e1e344c-202501161137.0_1737027532107_0.22115446231725078","host":"s3://npm-registry-packages-npm-production"}},"2.13.1-46cdfcc-202501161427.0":{"name":"@flowfuse/flowfuse","version":"2.13.1-46cdfcc-202501161427.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.1-46cdfcc-202501161427.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4d257f270dd3fe5e1ed4446c11b26c84f5a9ba0f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.1-46cdfcc-202501161427.0.tgz","fileCount":388,"integrity":"sha512-PzzlK/4w7OOq5wGCwQc4VYMvi6xfsis6zUTFF5nl6TW64fhqUnRcbs2u20Oa+OLsIY2BMieSSmaN2eZjm7rgpg==","signatures":[{"sig":"MEYCIQDY8NpK+sSOHXoLAu3HCAjAHPBILIiPqP3X5O9rgEgnrwIhAMNTGSiVwc2CkkK04uYThvAPWLJNJwrj5BrBbSnk7u9E","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25450251},"engines":{"node":">=18.x"},"gitHead":"46cdfcc357bfa42b031f7f3ace27ff2de4b6f9ff","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-b80793f-202501161013.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.1-46cdfcc-202501161427.0_1737037722087_0.3426525305093364","host":"s3://npm-registry-packages-npm-production"}},"2.13.1-cf4655b-202501171439.0":{"name":"@flowfuse/flowfuse","version":"2.13.1-cf4655b-202501171439.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.1-cf4655b-202501171439.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ed8204da75fff9f8175a4fbbb318c08331c7b09a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.1-cf4655b-202501171439.0.tgz","fileCount":388,"integrity":"sha512-hKP55rEnV551CthNGx+lgXpHkTU7Bph9slVt5sITiE8Ygu5WIfzaMXvL6ewuVjaCbahQSBnTLZIK6vljD9Rbjg==","signatures":[{"sig":"MEUCIFvBGzTFXaXvrDW/ajxelApDHCz6VmjhfUSWx4rkS2byAiEAhsF2u+KQ5cNthBDwwFG9Z7/5d/pWy/LZmRSo9eX1cPk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25450307},"engines":{"node":">=18.x"},"gitHead":"cf4655b05c8f3388bb628ab0350dabb2c7e639ef","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-b80793f-202501161013.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.1-cf4655b-202501171439.0_1737124867789_0.6039525763302296","host":"s3://npm-registry-packages-npm-production"}},"2.13.1-58a1b53-202501171441.0":{"name":"@flowfuse/flowfuse","version":"2.13.1-58a1b53-202501171441.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.1-58a1b53-202501171441.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d7348f8eb4db3b3e91c1ac5e2981fab6d112cbd7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.1-58a1b53-202501171441.0.tgz","fileCount":388,"integrity":"sha512-VMxB1FrIQkGT6B2yUZbQeermQlWfkoGe1OEmdZt5NCPCKEZuUOMtK6hI3okpgsnUfwg9wCDX4afHw7OXX0gN+g==","signatures":[{"sig":"MEUCIQDHE+GSEc2XxC3k/oHdZJHFEW+qNzvJxqmjyrgazjy+qwIgMpdpKjXK66WwOQWn148u7FLvmK8ah5VbcojqcotgU+E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25453899},"engines":{"node":">=18.x"},"gitHead":"58a1b534b1c26fc6551095737a832c4f1d3a1f5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-b80793f-202501161013.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.1-58a1b53-202501171441.0_1737124971142_0.9439710647313189","host":"s3://npm-registry-packages-npm-production"}},"2.13.1-58a1b53-202501171455.0":{"name":"@flowfuse/flowfuse","version":"2.13.1-58a1b53-202501171455.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.1-58a1b53-202501171455.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"215a7c822fd9c84eb0f08009f25a07f34f6f143f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.1-58a1b53-202501171455.0.tgz","fileCount":388,"integrity":"sha512-QrutvslkPcK3Td4VqWaRQtedXeevBJuY2MWDL62d8WRFUyHJNrKFzUZJhSMY97fJu4pe7xzicAciYobyH30FVw==","signatures":[{"sig":"MEUCIGJtNkOQ4V93oo/reli+mk+F2UuQ7Z6gme4BlcrRkctpAiEAyi0BwsQdm8B2QLCQKRNKLH7DyDhq2l+a2gUzwvTggOE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25453899},"engines":{"node":">=18.x"},"gitHead":"58a1b534b1c26fc6551095737a832c4f1d3a1f5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-b80793f-202501161013.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.1-58a1b53-202501171455.0_1737125807250_0.6730108179447687","host":"s3://npm-registry-packages-npm-production"}},"2.13.1":{"name":"@flowfuse/flowfuse","version":"2.13.1","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.1","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fae9bf5ddb5960d64a2a78e8a58d2ceb890eff43","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.1.tgz","fileCount":388,"integrity":"sha512-9S65wf73wQ8S304ob/8USznWSyE/tyFU6t8S7/oZZoR4JSzwE5KCyXSnyGaz4HFrIXBehmS/NxyX64xV6jQzGw==","signatures":[{"sig":"MEUCIHmjEm9H4fCVGUQ4JRxOIXTxAUBjkpsXm8ddru8UwWE1AiEA4n7Qrwrfa8tXfZd4aKnRXcMQqAEhUgzT8hX2bt5u2Gs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25451602},"engines":{"node":">=18.x"},"gitHead":"efc15ce111a51463146dfe7dcfc21d344e96243e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.13.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.1_1737126675081_0.6459540797936043","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-efc15ce-202501171523.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-efc15ce-202501171523.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-efc15ce-202501171523.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5a16ff32aefb452c753c85c492c0f251387b0e60","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-efc15ce-202501171523.0.tgz","fileCount":388,"integrity":"sha512-dvSleApONB9aTLwY09pK5z6NXYNOYeoRgG3qXNCLS+BOnHFyBrybEWjmz8OO1VfTzshHsHoIPkD0+Zh9BQsMDA==","signatures":[{"sig":"MEYCIQCag6K4TDeB1R/DZi20DwVzqw0snD+U4JEwQAqZZ0+8HAIhAIIhCBhYawuLwnE8IZYEioAj7xCcQuRUH2VVMgSL6c/u","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25454271},"engines":{"node":">=18.x"},"gitHead":"efc15ce111a51463146dfe7dcfc21d344e96243e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-b80793f-202501161013.0","@node-saml/passport-saml":"^4.0.4","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-efc15ce-202501171523.0_1737127492201_0.3716182354972044","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-b85e9fd-202501201155.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-b85e9fd-202501201155.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-b85e9fd-202501201155.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6a8519cfe6cc20fb2aeee3ce2a9164a94edff393","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-b85e9fd-202501201155.0.tgz","fileCount":388,"integrity":"sha512-ZcgousAHLLF/FxiTcnCews4Xc/OFd2WS+IRXgbL3d1icnK6akaUTjAttPv0g0BQIdhBPaMzmOju+TcCz2hcGHg==","signatures":[{"sig":"MEUCIGnnCPIrHOh/4cOTK981faLsUnSjBZZgTTwOOc22F85/AiEA0pH6Zhnu4gXhiVQ+GppKAVAE5iCQ8CsBDW3PX/4/Mo8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25454399},"engines":{"node":">=18.x"},"gitHead":"b85e9fdfe7d465d1b509661398442eb9975615aa","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-b80793f-202501161013.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-b85e9fd-202501201155.0_1737374195109_0.13266709352009332","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-136de9a-202501221324.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-136de9a-202501221324.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-136de9a-202501221324.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"997128a33e0ea86e0e2e58cc73573aa7743fe821","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-136de9a-202501221324.0.tgz","fileCount":388,"integrity":"sha512-5knJ2Uz+1HE0SR0D+9eiyT3AB+ZiU1ATLKSXcwtyx0gTewfUHPcK+MoW+E16wEW0ow07sfZ0QEt5wrkpej4DPg==","signatures":[{"sig":"MEUCIBLJJPqzMNXTQEC8yJRmWzYaGSkNbgfvLE2Rm92BIKUEAiEA2Ujwlq9ZXKN8EmlmR1j/d5AVfFolL4L7qqJqtn7V1q0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25456516},"engines":{"node":">=18.x"},"gitHead":"136de9a3980fc6c93a9dd075ea0aaf73f6118de5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-b80793f-202501161013.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-136de9a-202501221324.0_1737552356423_0.23748427145192763","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-06bf604-202501221346.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-06bf604-202501221346.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-06bf604-202501221346.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7ce36952972b9f5455100ef020a6a9891ed9484e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-06bf604-202501221346.0.tgz","fileCount":388,"integrity":"sha512-Ytyt+dRbmER++OFjgLCCzh/rzXxie6WGaGMf1/ZxnDFmbSuDX1v3xpUpwQsNkKX9sWy3Qy+U/5iCUXKr/opDRQ==","signatures":[{"sig":"MEUCIQCo5BAEQ3TS2W6XKHKHPu1M0XYfoqzPpy/CBQEpRjWG7AIgSG6nY8LNgV45WlNd0vxEIWF4zzGw4drUCkiIW3yaLhc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25457271},"engines":{"node":">=18.x"},"gitHead":"06bf604dfbf9935b5eaee6783f5b4fa8e185dfb9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-b80793f-202501161013.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-06bf604-202501221346.0_1737553644441_0.5978044835980159","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-ac7ce53-202501221539.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-ac7ce53-202501221539.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-ac7ce53-202501221539.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"864e5484f04e8f5947b58c00e521540184be0768","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-ac7ce53-202501221539.0.tgz","fileCount":388,"integrity":"sha512-bxQTxtQfGFFckF3M5L6ot7MLuwbRYJiHDo7Ieie4CFHiDgLB2cgt8tl+PocjZJmEo398EoJXPgWK26KD+83Vmw==","signatures":[{"sig":"MEYCIQDA/Qp44W0+D1GedunIM92bTsu8hPJlW5iFSy2an7dAqQIhALhKw2FUXLhmxrokXK2ZVmE/R+GE8D+Xwnn/9pRN0YFn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25475139},"engines":{"node":">=18.x"},"gitHead":"ac7ce5332a9e722cd2a648b45a3f98ce9afb30bd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-b80793f-202501161013.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-ac7ce53-202501221539.0_1737560440149_0.8042720854798779","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-4c47024-202501241350.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-4c47024-202501241350.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-4c47024-202501241350.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"061407f57bd8f5c55dfc52b57da34cce4eb8e114","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-4c47024-202501241350.0.tgz","fileCount":388,"integrity":"sha512-7cQEDzDOkEs4039UmgXoBZGzkxqMFJOyAxqmDA6CBSEQrQs4Cd/Z5WIRanD5nAR37lOKqjRlarDOo5qFQ2teLw==","signatures":[{"sig":"MEUCIFvpIHv89WzrdpO9AeFknd4wn5cU0/3SRf0T8tPnpLijAiEAtGetNDUrcmHtTG4zH4FMmP1KbPwKxNsymlFleqal2nM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25475139},"engines":{"node":">=18.x"},"gitHead":"4c470242039752fcea25e5e6954872823b38e1ff","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-b80793f-202501161013.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-4c47024-202501241350.0_1737726685049_0.17818250920195822","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-4528ec2-202501301136.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-4528ec2-202501301136.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-4528ec2-202501301136.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"da878f3ccdcf78f89452510e15c194fad1d83c45","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-4528ec2-202501301136.0.tgz","fileCount":388,"integrity":"sha512-4TmnUmVbj6ACdLvVmggNWrNTCYczraIDEUDaDfS6FxOInnVPEn1cZjbWL9vGpm50Mm7WaF6QwI5rEQHSFOEvmQ==","signatures":[{"sig":"MEUCIC9mhSRZeyN2BY6cmiLgP9hZl8k2u7mpHaBoLq+dEkCRAiEAqVwMotC2DW6H89dhWezgR4UevcTQg6gBfUnhKMISdc4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25475683},"engines":{"node":">=18.x"},"gitHead":"4528ec23ae68d86adbe384ab2b06d3e92d853617","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-b80793f-202501161013.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-4528ec2-202501301136.0_1738237096798_0.8004627964219013","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-1065b5d-202501311821.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-1065b5d-202501311821.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-1065b5d-202501311821.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f82e8373d27987f5e994f3e13f82f48f418e43b6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-1065b5d-202501311821.0.tgz","fileCount":388,"integrity":"sha512-6w1bf0Eq2YdlQiu+NiSGiLt+/eogSEA3KkYrY12yM5YXjYsLTJA0deIbjCyXDSb4PQD4CpYQszZcUWIlNZKleA==","signatures":[{"sig":"MEUCIDCBPYE4hGxcDGRkUkFqeeyw/kAFVLlYcswrRrtbGkF/AiEA9lrBWreBrSFx5zCnPuWVV+ueKw2tpQ9JkMFURAP5RFk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25506544},"engines":{"node":">=18.x"},"gitHead":"1065b5d59d8b8e20da0df5cb0a7917d954317b36","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-b80793f-202501161013.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-1065b5d-202501311821.0_1738347739617_0.23372492103415476","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-faa4e0b-202502041314.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-faa4e0b-202502041314.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-faa4e0b-202502041314.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1593908d04e2bc2d6cadb6822b336151cac751e8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-faa4e0b-202502041314.0.tgz","fileCount":388,"integrity":"sha512-KNedS3PcALvNY83JE9p/5/Ibh4VfsfcXavw+rPfb+YQ8bKNSEiJWYX5LUl5p2Kq7T4wSbn43V3ja5AkPU8j6bw==","signatures":[{"sig":"MEQCIEIBNuATZPlNF38EXNe1rtYKmdkCHxttiIy7OZGDuEoXAiAExkXrLcgpk28Njeu4aRdHUhhaoC8IahIIf7DX3+fmig==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25527967},"engines":{"node":">=18.x"},"gitHead":"faa4e0ba0c5c772dee2306e1ccf1ac330e88ae0c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-b80793f-202501161013.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-faa4e0b-202502041314.0_1738674939708_0.9616991037444023","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-f39d095-202502050939.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-f39d095-202502050939.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-f39d095-202502050939.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"79819e655204e6e3de8f52df6a99dc62c717c248","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-f39d095-202502050939.0.tgz","fileCount":388,"integrity":"sha512-oU45OLAF1SgUZ1QwvUquJBfj0uhl+bQUfm51NS9aE5jShen1Qm8aQa0NaPOAFDqeTce0ryr+M6NnWtG3x75/gA==","signatures":[{"sig":"MEQCIELhcecK+Rm38wg+WwoEnY90WE+3lFp6bWZoklRqwlOmAiAI3KqQuAlOp6HZNESmooj4TsWr328DbuOOJeL5N1ItJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25527967},"engines":{"node":">=18.x"},"gitHead":"f39d095c68eaf0d4154727e861c380401281ef15","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-b80793f-202501161013.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-f39d095-202502050939.0_1738748468535_0.48443300862800465","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-f39d095-202502071052.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-f39d095-202502071052.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-f39d095-202502071052.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4efb476c3821986edee55577a423a05e3b8eb9ab","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-f39d095-202502071052.0.tgz","fileCount":388,"integrity":"sha512-+f3gF9Y7oUumJMy5lw6eHMS5tE0ZLyb4USCCxBD0Z2U7NXtvCWCzy0aZ9zVvlYRlT0aG0yfbepd8x0WHFbTPEA==","signatures":[{"sig":"MEUCIQD7Jh2aM0dRYuLI2xCzomhVM7hIeySRTI/UP+U/q6jJJAIgX8JvX0+R7RqDhUsj/75PXIHjBzEqPKq1Z17bRAqD3n4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25534885},"engines":{"node":">=18.x"},"gitHead":"f39d095c68eaf0d4154727e861c380401281ef15","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-e5a2971-202502071052.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-f39d095-202502071052.0_1738925659897_0.1414655886831735","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-f39d095-202502071436.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-f39d095-202502071436.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-f39d095-202502071436.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"268f4ee9b071bb62f432463795335c972c295c9f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-f39d095-202502071436.0.tgz","fileCount":388,"integrity":"sha512-vQsZjnhfelAVIj6S9df5crO64Bw1wJwMjA0AzSYB6LZFxpIiVNbg414fNLDIe5EDFrCU/tSPXiozWdjagBYHDQ==","signatures":[{"sig":"MEUCIHabex41Jdxa0gDHReEZwKf8nSX/VCef8eohP4AxIjqtAiEAmky13NcOf/O3W3K5PnQXCxpIxqNJXHbwDGk6/ier7No=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25534885},"engines":{"node":">=18.x"},"gitHead":"f39d095c68eaf0d4154727e861c380401281ef15","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-c21617b-202502071435.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-f39d095-202502071436.0_1738939045195_0.6292987459317048","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-5776a61-202502071552.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-5776a61-202502071552.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-5776a61-202502071552.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ca3e21821ba2f8183f113a1fdafee01e5321d4df","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-5776a61-202502071552.0.tgz","fileCount":388,"integrity":"sha512-LBJrH8s/PIgeVcVWlN5Ar6omNA3kdAOyLTl6FY0FdU3z1SPtz1ifGP/tkGXf0xlK3giVoVgefquRSPv4Fs2ofA==","signatures":[{"sig":"MEUCIF66vtstUzCpsdm2c3gwqYDcmw+wc9k8XP29XY4fIOFFAiEAwfHwIDKagIgTXCkjwMR8hRS4ELiqPJtortnBhrCk9vc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25535031},"engines":{"node":">=18.x"},"gitHead":"5776a61903871fbdab88ef12721a94008c8a6d30","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-c21617b-202502071435.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-5776a61-202502071552.0_1738943623044_0.9154245057168162","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-66f12f7-202502111555.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-66f12f7-202502111555.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-66f12f7-202502111555.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"440a68ea83de7ad3e2187558b07ecc865b0f0f45","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-66f12f7-202502111555.0.tgz","fileCount":390,"integrity":"sha512-SB0Zj8WSCReEtie68aBQQc0/dXrAD4zc+fCKuWjGJofXHudCh/yrsRwpdwOVgf/Agdu+imUsEQmm/qey1fEtlg==","signatures":[{"sig":"MEUCIQC0cepQx5UVN7UdgZFXRowatKx4zODp6SQgGuysZuqaHgIgIRoK3l/KcK69kGpwJPFFS+fM3kdC5VZmnD7AVVzl1d8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25541414},"engines":{"node":">=18.x"},"gitHead":"66f12f7a1e21b9c1d6991e7bbadaf018f13f3997","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-c21617b-202502071435.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-66f12f7-202502111555.0_1739289422303_0.3233186860559636","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-a9815a6-202502121033.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-a9815a6-202502121033.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-a9815a6-202502121033.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"391c69b1be7a2edd3fb57cc78025619700f2ccf5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-a9815a6-202502121033.0.tgz","fileCount":398,"integrity":"sha512-bzucXBSb49T1UUIwhy5fe/iMDx/uH5iJ+jadH79Oehw9U+3GXvr+QkOQ92UJbmfPvHsD/G0K+HrO8ItuJhj2Uw==","signatures":[{"sig":"MEUCIQDizzruP7X8XSFjeLC7gxV+GjNws20jKbuwifUqp/8gSwIgSPrs6wB2CY0qvRVqAbsAypxBDNUfiY4tZzyVTLSTjEs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":25928055},"engines":{"node":">=18.x"},"gitHead":"a9815a6c9ba83dd0339192d24703948ed8da8998","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-c21617b-202502071435.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.2.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-a9815a6-202502121033.0_1739356493384_0.7979095388980875","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-49de417-202502121105.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-49de417-202502121105.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-49de417-202502121105.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0d3e192fae7d6e2bd4b7155507f2bb57236d7dec","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-49de417-202502121105.0.tgz","fileCount":398,"integrity":"sha512-bZGG/GfLUE8Af86bfGK+rk+f5LvNCs8HXKzVSCnvRxnuhzWF0DtQOLh/u7KKLkOEgfi7tfgf366Y2/muhYz8Xg==","signatures":[{"sig":"MEYCIQCueF041Ap7QfHNJmS18Fb73yrb97iH2GW5p/JtRKf4LAIhAJAb9qBioCqFSbI5zYiwiHQsQSNGLHPOJ1AKDo2rn3K1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26043854},"engines":{"node":">=18.x"},"gitHead":"49de417a06a9e2136feec47391cf3b0bb04e259b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-c21617b-202502071435.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-49de417-202502121105.0_1739358401467_0.37139149294623874","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-49de417-202502121120.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-49de417-202502121120.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-49de417-202502121120.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d62050092f1cef749543ea528a477f31e985f000","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-49de417-202502121120.0.tgz","fileCount":398,"integrity":"sha512-py53hxUwr9mRL5jLm12sDTqGVtCvEX8czyT4hqQqOz2q+lfYtU7iGuntjqSFYX3MfgffdAkchQGTvlJfkyUxBw==","signatures":[{"sig":"MEUCIDmZhgh3KEL3zJV5QzTqWgYGuWgmJ5ncHuieKmFl2+GoAiEA1RovUIg6yWCBW4ZEy437DPKGOD6nILe9pGAHWJ2BJrk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26043854},"engines":{"node":">=18.x"},"gitHead":"49de417a06a9e2136feec47391cf3b0bb04e259b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-c21617b-202502071435.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-49de417-202502121120.0_1739359342582_0.2675790650844876","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-49de417-202502121131.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-49de417-202502121131.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-49de417-202502121131.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c16d47b7ef6920f748c8d4a1e34e719ba8df341e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-49de417-202502121131.0.tgz","fileCount":398,"integrity":"sha512-Wfoh3qdhvNXzeRDwYoNU9zb4J3huBOZGy0jQCF0KhN8SpuspHLyjnSC54r2RyCrDuxH0DEBIU+AitmMBoYIOCg==","signatures":[{"sig":"MEUCIQDD0ix5JzKwrxrrNeTbn/wOTo9cjWCnx8oolWKAAlMR1AIgMzoAGHwZcaz3B9/0EvJrJBCqieGnrRS7ywSf23hI5Cc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26043854},"engines":{"node":">=18.x"},"gitHead":"49de417a06a9e2136feec47391cf3b0bb04e259b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-a1aec51-202502121130.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-49de417-202502121131.0_1739359949757_0.6684361233959322","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-d648d03-202502121145.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-d648d03-202502121145.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-d648d03-202502121145.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c129e2d673192e0491c03cb7974565bcb8723a73","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-d648d03-202502121145.0.tgz","fileCount":398,"integrity":"sha512-4gTEiyrzSyebrPABPAHCbEzM4TSg0adSbyziDPH2V9c2F2naA2tpK/1Dqf3mtfOa8hhECuUpu9li91vvrXZF2A==","signatures":[{"sig":"MEUCIGfhHXxlDosvQhDdkTnD5ffcEZ6aLMJ7OtQQCukFY0gMAiEAstNtD+rFFBLH40UayBPFys0f9Hk/Mh88hHcJFAqyiC4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26044305},"engines":{"node":">=18.x"},"gitHead":"d648d03ec3c56e330c778fc9569c797ace3c6eb1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-a1aec51-202502121130.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-d648d03-202502121145.0_1739360802423_0.9590154860766247","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-d648d03-202502121159.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-d648d03-202502121159.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-d648d03-202502121159.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"77e974971284833881e02c83cd8cfb014147ab39","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-d648d03-202502121159.0.tgz","fileCount":398,"integrity":"sha512-9mO9sf7FVfzy88f4n5lyI3OqXJpqWKk4AGkocbgvAg6aQzPXuncUC1B/zsyes5vbesoL1awPyIyZ+M7z0siV+g==","signatures":[{"sig":"MEYCIQDxw8XiDB3iN0k1PjgYcmYmDhWLq6ShLmfttmnroJJK1QIhAPMt7l7XUHXdu4R4bxTPv+N03R1qbbSq7gjqEXVy78QL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26044305},"engines":{"node":">=18.x"},"gitHead":"d648d03ec3c56e330c778fc9569c797ace3c6eb1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-a1aec51-202502121130.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-d648d03-202502121159.0_1739361672636_0.015556582323225543","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-d648d03-202502121212.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-d648d03-202502121212.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-d648d03-202502121212.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1a8b8c33e8a3a87cff22074e7194b7a613ef3466","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-d648d03-202502121212.0.tgz","fileCount":398,"integrity":"sha512-s1Gx4/m1HMEjTIjjaZwGMQ42P21tvs70lJgSI+piV8zM++cxm7y8ZrBWyO54/RFdVgKTj2kPMNr+ObVdMmBZcQ==","signatures":[{"sig":"MEUCICGrzx0tLz5DwDKbykrfZ73nUqV35lzqb6ySYtHby+RiAiEA9xrokLhOII34qo0uF2YavV1jIgcwzM8Dv2QJirHf7+0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26044305},"engines":{"node":">=18.x"},"gitHead":"d648d03ec3c56e330c778fc9569c797ace3c6eb1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-a1aec51-202502121130.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-d648d03-202502121212.0_1739362449683_0.6255884886218459","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-c9264cf-202502121628.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-c9264cf-202502121628.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-c9264cf-202502121628.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"00f4987aec919f6d41e60671b91ce57255d99d06","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-c9264cf-202502121628.0.tgz","fileCount":398,"integrity":"sha512-zYyX0nxZ0s5nFyzVDW8noBpPJydiu5Zd8Bt9DoM+A/CbhWqbnFdS6vk8GJlzafZgSkX3k8ipZs8/aCTNS7QCQA==","signatures":[{"sig":"MEQCIAb/4YJNeNe+h5a3qiDX+JDnzECtwRLQ/NhtweQbBHN3AiA/My7cahZxfdDDqjNIS2JgVNtkqEF9DNB7DX9r3691dQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26075811},"engines":{"node":">=18.x"},"gitHead":"c9264cfe865a1aab3172ab302015924cdaa0268d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-a1aec51-202502121130.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-c9264cf-202502121628.0_1739377786340_0.4196279499701214","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-c9264cf-202502121640.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-c9264cf-202502121640.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-c9264cf-202502121640.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6d63f0b60062d3070f74c4f64ded880cbaef46bc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-c9264cf-202502121640.0.tgz","fileCount":398,"integrity":"sha512-IeQDk2jzraIsq+ho5wJR1uxb+motnliBLmo/83E/4yqJXX4EJwAcHh09SA5Q4guUtDLLfU0C/fdLPBCMlJ59qw==","signatures":[{"sig":"MEUCIQD6t9RuFiJ+xF/Ds/5LTgFHUbfxFdCR3iaDxbjTWeE1BQIgVICKaIOiru/rG3jSvKCYFjT6OgBCjcDXBM75fTE/qts=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26075811},"engines":{"node":">=18.x"},"gitHead":"c9264cfe865a1aab3172ab302015924cdaa0268d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-a1aec51-202502121640.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-c9264cf-202502121640.0_1739378529074_0.884529522084109","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-40231ab-202502121712.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-40231ab-202502121712.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-40231ab-202502121712.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"87deccc5029ff13a90e4d3d684862cbc8e253344","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-40231ab-202502121712.0.tgz","fileCount":398,"integrity":"sha512-B5FT2u9rsVYItkLswHnOoRU9uebF6+D+2I+5SsVepcqwT4BKimmEJSfOWRKxylWcxvavRLJpJFE2vxi1Ei1oMA==","signatures":[{"sig":"MEYCIQCKnH864s08tTi8M7bgWeBMwXrUfpCcEOzARJ5757H3bgIhAO7fcqeMJo0ah+4WCBQ33PNMqfwPSHcyx8fRLp3bOII/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26157852},"engines":{"node":">=18.x"},"gitHead":"40231ab283f2993d47b3dfcca44b384ec44c8b0f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-a1aec51-202502121640.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-40231ab-202502121712.0_1739380415082_0.34352357480051343","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-dcad2fb-202502131013.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-dcad2fb-202502131013.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-dcad2fb-202502131013.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ded42adbdff70931c1b2829a08efda40d4f769ff","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-dcad2fb-202502131013.0.tgz","fileCount":398,"integrity":"sha512-3jJkvSBoQOrcgI4Tjri4XM1VwLOceF7XOLrdv9KXT1APQ1EusbDu+f8aCLeJa13ZbRs8TNgkACJM3F8Tp5Hm4g==","signatures":[{"sig":"MEUCICbbotIV344BMrNMAvXhJJANQ5nD3iFn+jW0aLjb6YtLAiEA5ZkaSFp81A5d2cFf7P6S4/4XXqQcgzz7xOCB1/MW+Lk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26176283},"engines":{"node":">=18.x"},"gitHead":"dcad2fbf6da9e6202335e9d73bd7680b6bf93e77","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-a1aec51-202502121640.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-dcad2fb-202502131013.0_1739441716246_0.9950896706744528","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-dcad2fb-202502131020.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-dcad2fb-202502131020.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-dcad2fb-202502131020.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"256096f097b28872d2b7c518d20ca7a670873129","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-dcad2fb-202502131020.0.tgz","fileCount":398,"integrity":"sha512-kM7fbebrrDRCladFEt2ymeFF0m6uHh2AEomYrBP53mVpLmKbLNyUURBEMwIOqQHEcTNe4JFRFTZjGWrl1MTg/A==","signatures":[{"sig":"MEQCIDmOfgzU0uQWbK/7hf0XwBT7Ldoz2Zh+9H54qv4MVuUEAiBuSb4sdOf+ywYtijZcj0N+Ncn16cTVcegebMbKcOlqPw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26176283},"engines":{"node":">=18.x"},"gitHead":"dcad2fbf6da9e6202335e9d73bd7680b6bf93e77","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.13.1-a1aec51-202502131019.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-dcad2fb-202502131020.0_1739442078680_0.4615950802484585","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-dcad2fb-202502131024.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-dcad2fb-202502131024.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-dcad2fb-202502131024.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c63a10e185e73aab42151c8cf1f751198488dbdc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-dcad2fb-202502131024.0.tgz","fileCount":398,"integrity":"sha512-dPpOB+A9Bi1APpqlHVjpaxpwxSojhBfrqqXwhF6BYr6eDybHwUhlv8GBTv8EN2Py8cgvCHqFoT1zCcaXo7RnVg==","signatures":[{"sig":"MEYCIQCRR62oa00pS7dBktvPNqfAVM77wSxbleo8r8UVc0KQ+AIhAMPv69hspgZaqdnLmtr0RUymGmfZ98zqddgyEMnI7BHn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26176283},"engines":{"node":">=18.x"},"gitHead":"dcad2fbf6da9e6202335e9d73bd7680b6bf93e77","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.1-f3c83e6-202502131024.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-dcad2fb-202502131024.0_1739442361177_0.5851055170419486","host":"s3://npm-registry-packages-npm-production"}},"2.13.2-dcad2fb-202502131028.0":{"name":"@flowfuse/flowfuse","version":"2.13.2-dcad2fb-202502131028.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.13.2-dcad2fb-202502131028.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a33098197360a74dc02d37b315d0ee284c6e2d9d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.13.2-dcad2fb-202502131028.0.tgz","fileCount":398,"integrity":"sha512-VVr/MW3TlS5rdpByf0PcaIzQoPig0kjMA3KFrLahOpgoyeSal9EaEOini8YWOSU2SD5XJbADE3SrpRUIDWqNoA==","signatures":[{"sig":"MEUCIBj0oyTT9AeW0/1yxJ179ZowZbtIFqdXH8hEX+b6eHiSAiEA+hgk2CD9FjUu5u4/qzB1722Vk7nSG5EfJj1cn3K1864=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26176283},"engines":{"node":">=18.x"},"gitHead":"dcad2fbf6da9e6202335e9d73bd7680b6bf93e77","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.1-f3c83e6-202502131024.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.13.2-dcad2fb-202502131028.0_1739442574020_0.7850656079396017","host":"s3://npm-registry-packages-npm-production"}},"2.14.0":{"name":"@flowfuse/flowfuse","version":"2.14.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bdff9a931d0501de13055be8fcc79bea00dc6bcc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.0.tgz","fileCount":398,"integrity":"sha512-b5e356w2TBVJe/kjhTRNvYjCuqHoMSpaIY5obwjp4k0JK7c+bLf2uysyI2pCPCc0XStrTewolIId0LkFxDOBTQ==","signatures":[{"sig":"MEUCIQD1pniUauKBqJGkCfIDmYjgzHYYocaiuUz4CwvY5GErmQIgMpyEqRIOXod4QCsdRexZ4pD8QYzG1EWeaRXf6PYNP5w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26175426},"engines":{"node":">=18.x"},"gitHead":"8f572971bdbf917a626df392da879a9aa77b11aa","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.14.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.0_1739442645075_0.8125965146978413","host":"s3://npm-registry-packages-npm-production"}},"2.14.1-8f57297-202502131043.0":{"name":"@flowfuse/flowfuse","version":"2.14.1-8f57297-202502131043.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.1-8f57297-202502131043.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"afd2cad9196b9fea528163dbdf3316594ce14cd6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.1-8f57297-202502131043.0.tgz","fileCount":398,"integrity":"sha512-98Txn4Juqm3JajPUQu9JQfNsgCd4NeggvkF+9C/qcig5Us1t82tPGB+Lhv3/H4eJ5ENHR3aDmLqH5w1yU0h+dw==","signatures":[{"sig":"MEUCIBxFrv/d+XyLwWHZsPWEJPrvzzc1HRSC+08igXcUmEFAAiEAonyQ4VE1wJ1usoodOsTk3VV5+hIu1wC6LR6Oq6H99bE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26178095},"engines":{"node":">=18.x"},"gitHead":"8f572971bdbf917a626df392da879a9aa77b11aa","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.1-f3c83e6-202502131024.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.1-8f57297-202502131043.0_1739443502912_0.533157391942114","host":"s3://npm-registry-packages-npm-production"}},"2.14.1-71b2bab-202502131844.0":{"name":"@flowfuse/flowfuse","version":"2.14.1-71b2bab-202502131844.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.1-71b2bab-202502131844.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8f928a94e83dd0a4a4a252f3cb3b29c49c3f5ced","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.1-71b2bab-202502131844.0.tgz","fileCount":398,"integrity":"sha512-t7RCiKICEdee+K1/AVewR1VgmMKXzhM9JGXhVJMppyAJdGVu2zLxOdv+OI6sLnHMnAGz/Mdsb55Etpeqyu4qOA==","signatures":[{"sig":"MEQCIAPpuKVhioD+xZsPEE6gcHw4PVRVisAt4N+CJ3gwi/rcAiAW0OqUoA2Plz8J+uyqc1hddvdkajYI3oG/wUwHcBDkfA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26178233},"engines":{"node":">=18.x"},"gitHead":"71b2babfaebf3af3c4541180bddad50ac001635e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.1-f3c83e6-202502131024.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.1-71b2bab-202502131844.0_1739472367956_0.8428001678896588","host":"s3://npm-registry-packages-npm-production"}},"2.14.1-71b2bab-202502140942.0":{"name":"@flowfuse/flowfuse","version":"2.14.1-71b2bab-202502140942.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.1-71b2bab-202502140942.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0c65057b5dbc8fa6996e098509974e11e1fc00f2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.1-71b2bab-202502140942.0.tgz","fileCount":398,"integrity":"sha512-1f3ZX/ZcCBbM+glUwrfQsikZgRdAv8px4mlWrMebumr6V/lcZycbrcom1BxQMxmA1yLV55x9g9xZKzfuAGkkIA==","signatures":[{"sig":"MEUCIQCcjDzBGLSF64zehuUSwjfkgQz+FIk+ZL3Xv6R5ul6FSgIgN701SGP4oBq4aUQWEiFqOKMgmhEhutkG2AKLM/aoW3I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26178233},"engines":{"node":">=18.x"},"gitHead":"71b2babfaebf3af3c4541180bddad50ac001635e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.1-f3c83e6-202502140942.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.1-71b2bab-202502140942.0_1739526257917_0.7914580783057554","host":"s3://npm-registry-packages-npm-production"}},"2.14.1-38f4315-202502141016.0":{"name":"@flowfuse/flowfuse","version":"2.14.1-38f4315-202502141016.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.1-38f4315-202502141016.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2e8a4a335739c82cbdc362106ef256866f7cfd65","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.1-38f4315-202502141016.0.tgz","fileCount":398,"integrity":"sha512-InCQSujaRPmn5sJXElrp1RsKmVL7Kuwh9m1PKwFcWcM7dBqdxpJcU48dqjCI9Jb27Mfrsr4pdeFQKgE7r5bIsQ==","signatures":[{"sig":"MEUCIQD0Ed1ANcaO74ELdH+Sz6OVEn3D34hyIQqEarsnM82jcgIgJaEAeysnUtHmlODoPA8pJOYdETOprG+6DP00oKdaYSY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26178233},"engines":{"node":">=18.x"},"gitHead":"38f4315d99d7fd8a159d4ea2a52a90bfee03b5ed","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.1-f3c83e6-202502140942.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.1-38f4315-202502141016.0_1739528265885_0.2543808986880911","host":"s3://npm-registry-packages-npm-production"}},"2.14.1-7af1913-202502141052.0":{"name":"@flowfuse/flowfuse","version":"2.14.1-7af1913-202502141052.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.1-7af1913-202502141052.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"097bf18f2f0261da9493f2e6ed10bc7c017230e7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.1-7af1913-202502141052.0.tgz","fileCount":398,"integrity":"sha512-egX4yiN0fEcSkA8xeDcsH1eYkxzBC2VlP03k1SFcgtpaVOyVt7BAcQghNw1j40HU3ai4gSd7FQmV5D/zOYMCNg==","signatures":[{"sig":"MEUCIQDBUTjUxU3bCuH7pl7pfvA7/i7v34RpS310ATUq7Kn36gIgUFRAGgBjlUIpvxYHcR5wKbJq4FgLQAQef8K/JLnkG6Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26178233},"engines":{"node":">=18.x"},"gitHead":"7af191361794c80550d50f342f693ada82dfab80","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.1-f3c83e6-202502140942.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.1-7af1913-202502141052.0_1739530434356_0.26654888762861484","host":"s3://npm-registry-packages-npm-production"}},"2.14.1-aa681c6-202502141407.0":{"name":"@flowfuse/flowfuse","version":"2.14.1-aa681c6-202502141407.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.1-aa681c6-202502141407.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"43ebaa9f9e6bc86a42812014edd55b2fcb11af7e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.1-aa681c6-202502141407.0.tgz","fileCount":398,"integrity":"sha512-0WThw9VfC7bcE3lAh4ZtCPKKdNV4UfxSaF+1NmNPoQs6ndsmK7Ns9gAJblJDGO7IFXns/GFxmu3rlJSgu2T1rA==","signatures":[{"sig":"MEYCIQCjDxlp+91lkLwyJxw6smO6thnyelg3ZHfIh/tkBw1vfQIhALTWQ0h/QFENf0GWWChwig1mtywXGa3QcNtnsuRj1HX4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26185345},"engines":{"node":">=18.x"},"gitHead":"aa681c67e4a859e3a864b0032c2a0d5d6fc4e556","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.1-f3c83e6-202502140942.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.1-aa681c6-202502141407.0_1739542111086_0.27137267985839153","host":"s3://npm-registry-packages-npm-production"}},"2.14.1-1d4d8d0-202502141435.0":{"name":"@flowfuse/flowfuse","version":"2.14.1-1d4d8d0-202502141435.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.1-1d4d8d0-202502141435.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e3354962dcfc0e7f0774f82bf1d93468b9f6c217","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.1-1d4d8d0-202502141435.0.tgz","fileCount":398,"integrity":"sha512-ipvDrcXu514aVsC5PNAoy75Ry3NGTDI1NjQh0BvwtUMqIhwMdCYI4cDLlOhMI+qL2TwFVIZyblQUjoCQgSuidQ==","signatures":[{"sig":"MEUCIG6PUnLl5i0SZwhQOlX2bJvhJ7tlljMfbMt32FGm5XAyAiEAw4jTk2qzUwy2X8TIjDEdPMaDvFOD5vKU2a9Cp8enuSY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26185535},"engines":{"node":">=18.x"},"gitHead":"1d4d8d027eb6404bccc2c21e3db9a14091d2f957","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.1-f3c83e6-202502140942.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.1-1d4d8d0-202502141435.0_1739543786603_0.6514567777571212","host":"s3://npm-registry-packages-npm-production"}},"2.14.1-0ad08ba-202502141512.0":{"name":"@flowfuse/flowfuse","version":"2.14.1-0ad08ba-202502141512.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.1-0ad08ba-202502141512.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9b48d6f6bdd4157a6d049a7e6a5904426b57d9de","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.1-0ad08ba-202502141512.0.tgz","fileCount":398,"integrity":"sha512-CGRVTLswvQp0Gdus9ovaGUsLO7N7OP8kO05K2bpj8FxUQZ/CrjpI2v7gJfSGf2SBjuxxi+YO+4EnjqMIDWSLog==","signatures":[{"sig":"MEYCIQDvQ0u3Q51tqa5u3snSdKaczOuu3lkdpU/CS+QRU2sNmQIhAKrmppmH+cO41DgVasj28kOYo0rnXtnXXlRjPifoMDGq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26183982},"engines":{"node":">=18.x"},"gitHead":"0ad08ba163f6f75370eb7d36bfe0bf473da7aa7c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.1-f3c83e6-202502140942.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.1-0ad08ba-202502141512.0_1739546047142_0.6976716953036215","host":"s3://npm-registry-packages-npm-production"}},"2.14.1-9b74872-202502141520.0":{"name":"@flowfuse/flowfuse","version":"2.14.1-9b74872-202502141520.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.1-9b74872-202502141520.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cfe8ccc8b208941e614e4668672f94a4d1b28da4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.1-9b74872-202502141520.0.tgz","fileCount":398,"integrity":"sha512-lWfta6720tEdQILcfRjO7pRryV1rGpZmNPZJCmBEaRPwh9CEORH0IznFY4i3/LV0ipngmZ7GGKU4Q0q/g+wkwA==","signatures":[{"sig":"MEUCIQDLS3FvKDT0DcmJjEPUUw8g3rnsXHSsIXv8Bz6M0Dfe0QIgVntdINwOaMV3De9eE/9p2m0qgYpiQaiBlKhLDUTYDBk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26183921},"engines":{"node":">=18.x"},"gitHead":"9b74872b9e8c5fd7b728ba9c6378778a74c79d14","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.1-f3c83e6-202502140942.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.1-9b74872-202502141520.0_1739546507213_0.4374867328056331","host":"s3://npm-registry-packages-npm-production"}},"2.14.1-9b74872-202502141534.0":{"name":"@flowfuse/flowfuse","version":"2.14.1-9b74872-202502141534.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.1-9b74872-202502141534.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c54603c09e63532682ba85ae42a3d71fd7620d2a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.1-9b74872-202502141534.0.tgz","fileCount":398,"integrity":"sha512-nh4Ee31mXVMcLVKJlTZWN7jfDBmTglMVugtJg2ENXDIY5TnRrofjW+4VzYpvexDK/mO19UHOoKdtICG3u09uDg==","signatures":[{"sig":"MEQCIC4ZEh5bfOMOXLRoTSFZeV5XoQlHUMklTR3qZLZMNpivAiAHG5/j6CnW05XjagpCdkgsW8dCWlqtWb0wsAifnOaaxg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26183921},"engines":{"node":">=18.x"},"gitHead":"9b74872b9e8c5fd7b728ba9c6378778a74c79d14","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.1-f3c83e6-202502140942.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.1-9b74872-202502141534.0_1739547350844_0.9681658644506392","host":"s3://npm-registry-packages-npm-production"}},"2.14.1-9b74872-202502141633.0":{"name":"@flowfuse/flowfuse","version":"2.14.1-9b74872-202502141633.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.1-9b74872-202502141633.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b20749dcfbb872d0376356b9c9acf5f4bea77ac5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.1-9b74872-202502141633.0.tgz","fileCount":398,"integrity":"sha512-4XDZFB2iZAML5QsTu1PUUX+9MPw5EkQNsq/PGaAAx8ojtMMRxD/W5WoHvJG89yMgyUCkS+4ydwbQUPDS917YiA==","signatures":[{"sig":"MEYCIQC7Xs10MVzurP/V5DaobJLOhH3z/949K3l1I7r4YKWVxwIhANHRUsipxuCx3mZ8pu9yMoE2UZ09Tr78v7nZ4kC99CZR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26183921},"engines":{"node":">=18.x"},"gitHead":"9b74872b9e8c5fd7b728ba9c6378778a74c79d14","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.1-f3c83e6-202502141632.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.1-9b74872-202502141633.0_1739550875927_0.353592848415768","host":"s3://npm-registry-packages-npm-production"}},"2.14.1-a417129-202502141707.0":{"name":"@flowfuse/flowfuse","version":"2.14.1-a417129-202502141707.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.1-a417129-202502141707.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4737ab0df5b94e6af908e4e42125918ddb8b0342","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.1-a417129-202502141707.0.tgz","fileCount":398,"integrity":"sha512-8274tgsVY1KtR57Lps2tJ+dDi7aym8Wv1SB8DHe+fKBdAQW5GOHnS1dWH9jErwjY4L93z8qgLVkC0bfgX2Ubuw==","signatures":[{"sig":"MEUCIHhNRvO3Bk+XYjMahgiScxEBX9IZTpwYtm1cmFUWtiC+AiEAvR4bMYAzF3psWgSMFepbi8pwUkrVISbMJlgcdpZQbFs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26184525},"engines":{"node":">=18.x"},"gitHead":"a4171299def3cfb9e74e2a48a605f78be9e7aa63","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.1-f3c83e6-202502141632.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.1-a417129-202502141707.0_1739552927259_0.5318373763910964","host":"s3://npm-registry-packages-npm-production"}},"2.14.1-a417129-202502170956.0":{"name":"@flowfuse/flowfuse","version":"2.14.1-a417129-202502170956.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.1-a417129-202502170956.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f3be601328a17d4b9a337031cf1295ad4303d962","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.1-a417129-202502170956.0.tgz","fileCount":398,"integrity":"sha512-cxmq5oouiQhrbK+8UOGBEXbLTac7W2HBooYmU7ji50wh0Zo9mopQF5uNZVu+1QwfbX04adC+Rpft6TP9Fi8/bw==","signatures":[{"sig":"MEUCIQDsR2sK8jZF2qhwdhBcq2Y2Hs2WR99x0yxWMjWi1B/7aAIgVYErxAwrnbFffDIDfHBFk+bIfP09lgB3AU0ukn75nAk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26184525},"engines":{"node":">=18.x"},"gitHead":"a4171299def3cfb9e74e2a48a605f78be9e7aa63","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.1-f3c83e6-202502170955.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.1-a417129-202502170956.0_1739786261155_0.2590441837563826","host":"s3://npm-registry-packages-npm-production"}},"2.14.1":{"name":"@flowfuse/flowfuse","version":"2.14.1","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.1","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"38c273464c7c8f413f52b08eee9606af2d8feda0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.1.tgz","fileCount":398,"integrity":"sha512-nvGwyY8luq2vS4CKeZYaQ7aIkBB2y0H9sw4vCrKM2jC+7E+CoYaqc99kNBlvAoQz08GeI070QTa4Qpd3BeRzvA==","signatures":[{"sig":"MEUCIQD2PAIfs4hM7s1kZ7z3EjCs8KaB9bfsiNTAdBYBGRCSmAIgLS9UluM9V0uUvzM6wn7UXbGyezWRpmQPfBa+GoXWOtc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26182522},"engines":{"node":">=18.x"},"gitHead":"7aedd4038e4aaac0f342ebbe7c6a37cd8a3b9d52","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.14.1","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.1_1739786848793_0.026590237306578723","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-7aedd40-202502171019.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-7aedd40-202502171019.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-7aedd40-202502171019.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5928d73cd4d5c48f2de3412b936cefc39e4a6675","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-7aedd40-202502171019.0.tgz","fileCount":398,"integrity":"sha512-lQWyIUathjPmFGsGIVasZb8JY1nIww7UHIbBZhZToSTgLi85DpNIzXWUohaqqrXH+LBH8R1IzCNdGqmrlJoLDw==","signatures":[{"sig":"MEUCIERgl3Qd36Oj6Wjpg8oaU+2vZxnXvYn4jYiOODi7pREeAiEAh2CkL2l8vHUbUuT4wFNDpv7gVlYuCEm3I05l4+1m8q8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26185191},"engines":{"node":">=18.x"},"gitHead":"7aedd4038e4aaac0f342ebbe7c6a37cd8a3b9d52","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.1-f3c83e6-202502170955.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-7aedd40-202502171019.0_1739787655241_0.20616760253668476","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-56d3c52-202502181029.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-56d3c52-202502181029.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-56d3c52-202502181029.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"98d015185363c0ab181849f26e01a42a8dbeb814","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-56d3c52-202502181029.0.tgz","fileCount":398,"integrity":"sha512-3dwjXXAVCrS3LjO1rt/IynWJz9dXyw6KpAINzupqkAkJF5KODlNL6hI6QTgP/PtD3x6qaKWzSW/vDX6OhCaB/w==","signatures":[{"sig":"MEUCIQCSvTunzVWKJQjf+BI+nm8cgLt0kTD4oxITVALk1YpAUgIgWgkj9VZmVQk2lpOUqFFn9o/7VfycftT0CoipEpZcg8M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26194387},"engines":{"node":">=18.x"},"gitHead":"56d3c529a949f680fd214b27c05910b2124ef30f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.1-f3c83e6-202502170955.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-56d3c52-202502181029.0_1739874648221_0.8022766053523924","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-dae75c2-202502181049.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-dae75c2-202502181049.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-dae75c2-202502181049.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b6748fb19637a8f6403e4ad4f7a77eb670fee91d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-dae75c2-202502181049.0.tgz","fileCount":398,"integrity":"sha512-K8P2hqUstaWC1i0A37Q0J6inxEzKR7coicsK/kZPaT1sTt3jt1bgqTDtzvEf6z9uswtoWB25p1WLVWvEJtP2Yw==","signatures":[{"sig":"MEYCIQDCVQvyU8Dn6+bkSvEXD4rehQTskNfqUr/mK3mSqul2JAIhANbmrrNWuEfZVdcFRxqj24EyQIVB5jLojACeKWtCdJyQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26198025},"engines":{"node":">=18.x"},"gitHead":"dae75c237c70924e6932ebafa03ebe3ba7b7659a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.1-f3c83e6-202502170955.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-dae75c2-202502181049.0_1739875832152_0.7487643784815363","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-19e79b2-202502181407.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-19e79b2-202502181407.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-19e79b2-202502181407.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c0d2a89bdb5749c994e68bcd3a3b71d3e8f93aa1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-19e79b2-202502181407.0.tgz","fileCount":398,"integrity":"sha512-8d/7iA3I4BDyo4ObtXhYFw8b72KSK6mFx4hHqBgHvKNveuJI6BCyI/aPDLNywc7V3R7iG+UCFxAA/tTmCVVqrQ==","signatures":[{"sig":"MEYCIQC4BGgx34SLVnuq0GAClz++Rv+i9cUZqc2lVT2TtxTHJAIhAIuBhPP7l8V4QXWFPTEiZfowMkcol14DaarYMkDRcNH8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26201520},"engines":{"node":">=18.x"},"gitHead":"19e79b29eafafbff360c58d3065498633efa8770","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.1-f3c83e6-202502170955.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-19e79b2-202502181407.0_1739887713502_0.45590299473222173","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-91aeafb-202502181416.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-91aeafb-202502181416.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-91aeafb-202502181416.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"96de1ce83689deb777b20181b1799e8b121a2dcf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-91aeafb-202502181416.0.tgz","fileCount":398,"integrity":"sha512-RMJAc9u6Fc5bdm2ucto3MbFFs53y/DY2oRBoOw1GUNPIlvXiGg5cYw5cT+0qhXhgK6oCsPo7XTiuviNzC+GK3A==","signatures":[{"sig":"MEUCIQDRYkxIpjbe+7jarykyiFlBDwpDv41uExvDZl1lPsSflAIgEdNGUma/YUKYzWIazHnZrx7iOWEXnVIxHCzBlGr9A88=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26206137},"engines":{"node":">=18.x"},"gitHead":"91aeafbf42d6f13f48e34c30c5f239c9b1359319","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.1-f3c83e6-202502170955.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-91aeafb-202502181416.0_1739888250817_0.7605868902022177","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-91aeafb-202502181430.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-91aeafb-202502181430.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-91aeafb-202502181430.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"321f2feba265720a07a7f43c096aaf977ccb7d37","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-91aeafb-202502181430.0.tgz","fileCount":398,"integrity":"sha512-3vRDX/TW4UtXnRFVFinxgJ/ldHzhfKkDLpqc0+euSKnuJdH0LmWlnBP2PmoLP0Fbb22XGFMa21zC+7Y90FxESA==","signatures":[{"sig":"MEQCICsLHYQvZLzyF/k+GKSF3XfCfSMqzjxgQ1sWwBA2WXFqAiAK3RTK63Exqz13kb+5YkMOOAyvBkfeqWxPHlQkwuu/2w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26206137},"engines":{"node":">=18.x"},"gitHead":"91aeafbf42d6f13f48e34c30c5f239c9b1359319","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.1-f3c83e6-202502170955.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-91aeafb-202502181430.0_1739889110791_0.16129588375418358","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-ebe91bb-202502181448.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-ebe91bb-202502181448.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-ebe91bb-202502181448.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"08ea1cc963fed2d960f86d9a769409d22235112e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-ebe91bb-202502181448.0.tgz","fileCount":398,"integrity":"sha512-eI/33vxpHvGSdVyQVy0S2SWdaFgaNLIJ6pfwoDUVa8r50q7xnkb+2okGBU/8qBSt3TO25IhVwZkRHMec9awpvQ==","signatures":[{"sig":"MEUCIEqPxl1UdSy4FxsNC7PZTjYzydfEJirYLH5jMgsI1WBeAiEA/etx6hxDCPkdxAmjfzfnInlErvEx3Y3PVbWkQQ6zbyc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26211152},"engines":{"node":">=18.x"},"gitHead":"ebe91bb5acd96c036e45d01537b1f2bcdf51ce41","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.1-f3c83e6-202502170955.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-ebe91bb-202502181448.0_1739890205680_0.8752441365112442","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-ebe91bb-202502181641.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-ebe91bb-202502181641.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-ebe91bb-202502181641.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a6da011bae09c86ce286bebd4658769476a3f349","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-ebe91bb-202502181641.0.tgz","fileCount":398,"integrity":"sha512-LpdKl9+UNQqk3krZ3cFKCDKWighAWr1cp7smxmt53Km5B1OT5uvPO6MmVi9r9MFkyfj9Nn3oQkRe4b2Sua/ypA==","signatures":[{"sig":"MEUCIQClMp9Aoza1zU+XnARw2EeYwAVcMgcDtZev2lkkqsxiCAIgNTZP8oQJ/A75bR7qN9PeIifbXSYhUYMEFwaTpQvTyc4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26211152},"engines":{"node":">=18.x"},"gitHead":"ebe91bb5acd96c036e45d01537b1f2bcdf51ce41","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502181640.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-ebe91bb-202502181641.0_1739896948578_0.44580474379927626","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-ebe91bb-202502200859.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-ebe91bb-202502200859.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-ebe91bb-202502200859.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2854faa75ada46bc1674a306962ddf9ed84f40d6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-ebe91bb-202502200859.0.tgz","fileCount":398,"integrity":"sha512-fJAFfE1zOnGfhydIGwkSoZwXg/NH9On7e55Q4u/xPdTzgRc2UDMkNy9p5K+10hC9CSR8mHUuQ80Dd84TjWJV2w==","signatures":[{"sig":"MEUCIDWBEK2v2Vhzhsjyf6bwXptQvjlalxGZEti/VRjaPhR1AiEAsvhvFMvnYlG9aaEbP5UeuEmqzQGpdKJ8oy/gY2iBTcc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26211152},"engines":{"node":">=18.x"},"gitHead":"ebe91bb5acd96c036e45d01537b1f2bcdf51ce41","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-ebe91bb-202502200859.0_1740042069407_0.920665597594694","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-71709cf-202502201617.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-71709cf-202502201617.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-71709cf-202502201617.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a7ce064346632715b85b88080e92d781345a298e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-71709cf-202502201617.0.tgz","fileCount":398,"integrity":"sha512-qYPiRjRcrVTdQdD7J4x443jAE7GbuxjKtYjisTb6MlU196etJhyGKYqWBaIaUmxTt3qYPW0czos9b6B3luHMQA==","signatures":[{"sig":"MEYCIQDyUhzD4q5+dwm1m5s5ksiVKuV99dXx7aDO5sfEbx7CgQIhAPP+f/S9epmNm4zDT//5hRysabivhAPDt1rMBSxB9r2U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26223030},"engines":{"node":">=18.x"},"gitHead":"71709cf2fea300aeed7c2934cce581acac09fb52","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-71709cf-202502201617.0_1740068308951_0.3421512449263562","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-57340d9-202502201759.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-57340d9-202502201759.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-57340d9-202502201759.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"59fa561456513ad720998e9ea9dba37a3f9c41a4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-57340d9-202502201759.0.tgz","fileCount":398,"integrity":"sha512-4lC2Lxj4W+aID2Ox3B6bdt71YUDlwCHljNvtj1xyI/YFnsEmIWnmfscl+alMeT1FtEcCmtaVwZC9aji6YE25Nw==","signatures":[{"sig":"MEYCIQDWSBPmYqD+OyfgkY+5B91g665rO2VFDLx8xFahsp2xnAIhAK32BGb3HAyFNy1fcxcXvckBb2lqc6QIMNAocCfus8ds","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26223286},"engines":{"node":">=18.x"},"gitHead":"57340d93be8d4ab054aeb25ce1fde5f55b6e7459","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-57340d9-202502201759.0_1740074437595_0.8266363866537316","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-a576f48-202502211117.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-a576f48-202502211117.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-a576f48-202502211117.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8b1f5296731f84b51bd4ac16f20e271a169d63bb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-a576f48-202502211117.0.tgz","fileCount":398,"integrity":"sha512-B+/lNJTT5zmWKYMpQ6C6H1+FijnXd6iFuMrNHIPY/p2fFQPYw+qJ412P0VioMOaIw9EPI/lSDI3hlP7elWlaqA==","signatures":[{"sig":"MEQCIBpCGpDXpW8d5J1aXdZiHO4hei4Ud2e2ESvUMCpAjqHsAiAudwXjrlvF2qH9OzoAbxi0bFYu1keyS4vh/HjNcIba/w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26225888},"engines":{"node":">=18.x"},"gitHead":"a576f48c036e2080eaa344fb10d3cf5d7a6b9b65","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-a576f48-202502211117.0_1740136711233_0.6094864122839669","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-d4a29de-202502211439.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-d4a29de-202502211439.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-d4a29de-202502211439.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"42a553d5611ebae0818f93453cb5b98629381a56","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-d4a29de-202502211439.0.tgz","fileCount":398,"integrity":"sha512-KB6LkN8baKcqDLWCLsS++HQs2h6dyRgtN0wKHKokVT8mSIReV+xeKcMVWATAsjoGIjiV2L3RZfT4VybZuKKEcQ==","signatures":[{"sig":"MEYCIQC55r7Z8FBLeZKS1/px4YB4Qx1ht1l2wo0DHQ/S/89UnAIhANiOdcry7bNlEB1IieiKzwXGWHb3hW4CSxEG4VPI03FP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26226528},"engines":{"node":">=18.x"},"gitHead":"d4a29dec6437f8b897f2fbc4b1e042aec6ee80cb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-d4a29de-202502211439.0_1740148822742_0.5268689464535239","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-decd2d5-202502241205.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-decd2d5-202502241205.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-decd2d5-202502241205.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"07a8ea9165665a30b8497b1dd1b96b7da4f43e4c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-decd2d5-202502241205.0.tgz","fileCount":398,"integrity":"sha512-UKAXai3giiJoZf1T7qylWQqQODYWxyThyIu0wAGyIkjr4AsEG0GlAp+hjXrktgZ90c5Jm1ATd58nBSVuUVSmuQ==","signatures":[{"sig":"MEYCIQC6VgeBNM6CVdKa9qqqWpR3eA2lwU/B5tMNp+nlMOFdJQIhAKqSyF+vg6PxvMftiFTbbyDzT91JyRrgOR4HRALBe2oH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26226874},"engines":{"node":">=18.x"},"gitHead":"decd2d54461af3f10959f1442211c471f1bcca25","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-decd2d5-202502241205.0_1740398789792_0.650943009217227","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-594d8e8-202502251534.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-594d8e8-202502251534.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-594d8e8-202502251534.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1cf9eff89f66dc47d8aa93a35c9b5f0cef3234ba","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-594d8e8-202502251534.0.tgz","fileCount":398,"integrity":"sha512-Z6hxhHiSLDWTViGSJ3MrNV8s5JQBJ2uuTFs2oCCuYQyHVk9nZTgwQW2VqLL2D4aJtz6LI2PZmCKzOlNJ1tKwxw==","signatures":[{"sig":"MEYCIQCmmmEVsxrHqjGu1ev8+C9GwhmOpVaqTiJy6i4masErvAIhAMGIY72wAOzwJloqLmvaZ/+DwZDdDwOU9DIKSXMpUwyG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26226878},"engines":{"node":">=18.x"},"gitHead":"594d8e8bb2e41b2d1d896a8eb6a58d7dc7dde2f3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-594d8e8-202502251534.0_1740497728130_0.7426682220236838","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-1f6cc95-202502261446.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-1f6cc95-202502261446.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-1f6cc95-202502261446.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bc0f30d18db7d98aaeda85ab978bde748e8629de","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-1f6cc95-202502261446.0.tgz","fileCount":398,"integrity":"sha512-Sim2TJI284nH3elmZcrOt905d9JcGPfx24x19d6saJowmpt1xNMHcPf0WZD7rSuyqx4MYlrMflWzNnE6XBL3NA==","signatures":[{"sig":"MEUCIQDcyqY+MQAIeHO1yXhso3AKNVlIuWbYf8fKOx0X36C9IAIgKDTTEAy16LSxNh5IUnen4b1buU05e8v0Srbx8K+kkzE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26227452},"engines":{"node":">=18.x"},"gitHead":"1f6cc9545a703f5fc11e3c1714419748593758ef","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-1f6cc95-202502261446.0_1740581256247_0.8310034295680835","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-64a383b-202502261529.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-64a383b-202502261529.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-64a383b-202502261529.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"60e5680371260775df5754024ac36983d63bcb46","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-64a383b-202502261529.0.tgz","fileCount":398,"integrity":"sha512-5atBlYVrzNP6mmLtjWaxwOm64Nho7jr50i9oMUU4MYOAC7NYXP35ZofqFgLhEC/GCFPNH/SUVUp+qprG4tIiTw==","signatures":[{"sig":"MEQCICeXOGeATqPB2wf69tC8rawxHuhlcR3JTTe4wXbbRE4RAiBxgaKeL0X2FsiFla4k7y4i4ttbrka51IoUemgmeBTU/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26227443},"engines":{"node":">=18.x"},"gitHead":"64a383ba5ef5da0cbc0c2ad7e149fcb2d05258e0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-64a383b-202502261529.0_1740583850093_0.0035396172245207858","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-b313006-202502261736.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-b313006-202502261736.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-b313006-202502261736.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0af3ac1dce9b94d3c84860e2c0c262efd683d427","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-b313006-202502261736.0.tgz","fileCount":398,"integrity":"sha512-eP7AotUEMcSimMMVlrBibmJjNSVHXRTZUybVJ9Xz9lnFK/EkhLLZJ22LdhS8bSHzfNg6DbBhexQFGm5aNrQH2g==","signatures":[{"sig":"MEUCIBcGx0AFfvJ5TX5ThaDRc+xdz5xbwv1JxDBNz0P1rmM9AiEA1wk73pWDFopdXLcEFGKDztalI3IMiTBJLnVX7s6bffM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26310946},"engines":{"node":">=18.x"},"gitHead":"b3130066e0277108101d4e63402fddfbd36b45da","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-b313006-202502261736.0_1740591445432_0.030430274520693912","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-b313006-202502261751.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-b313006-202502261751.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-b313006-202502261751.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c10229fb0d1777db8c55c17e3a6ac9f31123b690","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-b313006-202502261751.0.tgz","fileCount":398,"integrity":"sha512-yvmK8CZUNgWbepwqOiJfI07tNsnlyouZCXwFZhMgoNE0CiMrZCWnScK2ZcddT2y4wsfCuxC2LYXRby95W2+B6A==","signatures":[{"sig":"MEQCIE5RGs/ywzCtxj4Xq7HWKIOWijcirzZi3yOAJXLsbG/PAiBgm1n+mn95K1z+Zt6uWnBxsVLGwFDF2PolPbvk/d2iyQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26310946},"engines":{"node":">=18.x"},"gitHead":"b3130066e0277108101d4e63402fddfbd36b45da","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-b313006-202502261751.0_1740592361657_0.7096884204173501","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-e56d874-202502271024.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-e56d874-202502271024.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-e56d874-202502271024.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0ebd43b8384bba0f2c58f2f9f9293c17e61f2183","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-e56d874-202502271024.0.tgz","fileCount":398,"integrity":"sha512-7KBk5U82D5/p7RPGfthFvC15AS2PzhSCclikJ2EhS/5w8w8gcVwL5MobcpyIxLql2KDzlajDyl3HNTj963+8sg==","signatures":[{"sig":"MEUCIEfloZ0413gQ8NymZUSY2ZBBoAi3GXS42Fl1KI4qH95ZAiEAmE8Mla69vq0WiF0pRvAdAErh4U3IZ5XoLX1nFZGdw7A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26311509},"engines":{"node":">=18.x"},"gitHead":"e56d874380661e7f8374c891587f8e77116e47b2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-e56d874-202502271024.0_1740651949207_0.20779159830915295","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-10bd1de-202502271419.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-10bd1de-202502271419.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-10bd1de-202502271419.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ea471ed676b498f1a13760ae8e170494a0819b8e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-10bd1de-202502271419.0.tgz","fileCount":398,"integrity":"sha512-OOVLqAureDU/SVH5Q2054vw6c7ljQ80/1Sqorpmc/nwWc0FKCblTCNPfx0a/jzd4+hxkFk1zYG9NHPX2nGocnw==","signatures":[{"sig":"MEUCIQDjcIdVKmsBXuNYqqOv8zbXziWrxB06qnjRyiAC/jwvowIgbK9C7b4sou1UdFMxwJkWd652mBG7aHNw7PVezS454QU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26311510},"engines":{"node":">=18.x"},"gitHead":"10bd1decd00e04e3893a08688a7a38fc45cd92be","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-10bd1de-202502271419.0_1740666062610_0.5251314836161747","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-be856da-202502271800.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-be856da-202502271800.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-be856da-202502271800.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2413c050e687dc95c7687af798781ac2bdd551f8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-be856da-202502271800.0.tgz","fileCount":398,"integrity":"sha512-rtGi5HVcUbZydJspPEqn7wY4F8bSFlhpO8P0VdNQpWrwjEkSXmOMWpRt/Cac5M6HxRPBRTbUmkrIAWDlMmF6sw==","signatures":[{"sig":"MEYCIQDrvUUpN6vX0l0+vyRw0VhkJy4cbjkOH6W7pwi4ywcYXAIhAP71PRfFaM+AE1mERdaw2UnjXzkU1gsV+LqLcwCjxPYC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26315176},"engines":{"node":">=18.x"},"gitHead":"be856da0591a3888e51773f3e602d902eea44050","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-be856da-202502271800.0_1740679316091_0.15925970296805847","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-9cd0d77-202502280959.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-9cd0d77-202502280959.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-9cd0d77-202502280959.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f584fc4f82aad7d24de82d5b4cd3bb54f9f4843d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-9cd0d77-202502280959.0.tgz","fileCount":398,"integrity":"sha512-x9keuvqdNSQdHEB3rLXR0RPx3nNRU8ZA+n0n3tLA+nMC/IYF3GaJ4OhkWHlO2Hni8TY9osOTVxhUxUQwpO9WaA==","signatures":[{"sig":"MEUCIQCnhnme03DH8omHS/2BP3Z9Hhd0Vn9NhF4TU+iu2C/ukQIgKpkptmTqP28Rnple8q9UpJ0C9x5T3doIhxe8V+M6KrA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26315176},"engines":{"node":">=18.x"},"gitHead":"9cd0d77bce8ccb788b3552bf7bf310e58e5d523f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-9cd0d77-202502280959.0_1740736856613_0.35348228408550164","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-5c68830-202502281342.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-5c68830-202502281342.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-5c68830-202502281342.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1ffa287b14fd501876c95d32ac1601ecba35b06e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-5c68830-202502281342.0.tgz","fileCount":398,"integrity":"sha512-jTyMc+ih4TaGUUh6ejnH4Ye5ncsLFu7pJN/Ji5bWcOkmqXiz9P9AXtsmgi7ylcWP1pgaTejVdeGjIjIlKYNO4g==","signatures":[{"sig":"MEQCIEHs/kPu6LPYIBOIWbPF8waU+CIfqCGRp1yToZmzc7OcAiAFkw4DrYaS5oUyGJDnr3DeHTOtxn7LzL5NpDlLUza3aA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26315768},"engines":{"node":">=18.x"},"gitHead":"5c68830ab6a92d3d122ba0d09e580a59cfa7802a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-5c68830-202502281342.0_1740750224503_0.831322654725668","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-cb52a6f-202502281448.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-cb52a6f-202502281448.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-cb52a6f-202502281448.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4f895c271bf6f6cc1085aad6a9b385e57c5e613b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-cb52a6f-202502281448.0.tgz","fileCount":398,"integrity":"sha512-BQH3LA+iwpaF2/UOe6yMx9rSkOqpF+qci7iXU7WmfVl9xkJn085SCiDUJ9QxOxrgDuyv0BCOl9bk2thKVdwOSw==","signatures":[{"sig":"MEQCICMUnTNW+4niuXH9uiqiViZtzzV0C3pZtJR4OQLFGqewAiBCpfEEH0O86ydKFPuSqhxKBKyaREwtxfjpJwDBrsqGDw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26327873},"engines":{"node":">=18.x"},"gitHead":"cb52a6ff0f24388fc3656a03980429aa1b674f6a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-cb52a6f-202502281448.0_1740754199991_0.08615848854534391","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-cb52a6f-202502281502.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-cb52a6f-202502281502.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-cb52a6f-202502281502.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c0918f8592f7c0653a375e86d5ecec1829a4ab7a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-cb52a6f-202502281502.0.tgz","fileCount":398,"integrity":"sha512-SYmTiZrqUzDkegT0Uh03HYwnGGNACnmmy3EijXNgNhAhIa61Dxlct/FL/sjgr6imIOCV8nc0OaSG7Hv2nuFc7A==","signatures":[{"sig":"MEUCIHruDp0UoJHv3WjEoWNlmmj3ZLtLsygsgQMMhhUngZ5YAiEA5CChWZNmWMxRn5uFAvNaF/K8jT6EYakW4FWVE7aGOdE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26327873},"engines":{"node":">=18.x"},"gitHead":"cb52a6ff0f24388fc3656a03980429aa1b674f6a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-cb52a6f-202502281502.0_1740755042439_0.1710494661243236","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-bc74615-202502281635.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-bc74615-202502281635.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-bc74615-202502281635.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8da34860168350aad08c6c5bb8501e12b938fe81","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-bc74615-202502281635.0.tgz","fileCount":398,"integrity":"sha512-QkQ9G92+L+6PneQgauDmQSjDDJ87oBFUFYWi8Rz1G0xiPC3a+ALKh67cuCE7rArL2nwrxE2+ThsEJvFh8fVGxw==","signatures":[{"sig":"MEUCIQDNg4VtfFo2JTE8EVyFBgRlfSBOoHntb2LPQVathk/NfgIgd2Pi3VYEQU3V1xgsef7YEeFwTlT9Jib7+kDYs/hP8cw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26342620},"engines":{"node":">=18.x"},"gitHead":"bc74615a0a067661d030ae533c031c5d7c6e3192","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-bc74615-202502281635.0_1740760602851_0.6338552872258678","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-5bc5c7d-202503030954.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-5bc5c7d-202503030954.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-5bc5c7d-202503030954.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"87263d9d688439ac1965da0adfd4e4f5d16bfced","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-5bc5c7d-202503030954.0.tgz","fileCount":398,"integrity":"sha512-iTF5OXCiB0FbOmLQuFrZtFNFx3hHxXnCuZoXjHWJsZ5W6YoQKEdukm1EcAI8QTEwCjDredmMyhMyhc+Z6S0mng==","signatures":[{"sig":"MEQCID2VaqxWbRyI8BLz4oyfa09W+uigEDWMWlSrw092FmSMAiBCOCB6kW3vRZTrMS0C05lp3nzxpgIq22p2Vzs0cpyC1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26379840},"engines":{"node":">=18.x"},"gitHead":"5bc5c7d2dbe545cb6998ee74ae8e433fa263e84f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-5bc5c7d-202503030954.0_1740995748417_0.7709243476756995","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-5bc5c7d-202503031008.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-5bc5c7d-202503031008.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-5bc5c7d-202503031008.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"230b7244845f6cc85a9a0249a67d8f920b0632c1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-5bc5c7d-202503031008.0.tgz","fileCount":398,"integrity":"sha512-PGwMxvdDt/JpQnt15Lk7hS4L73rLpeI8XQ+z12jyZMp/Ga3p9QA+flxRllfCLLnOj150ohI4HakDKkY53LKM4Q==","signatures":[{"sig":"MEYCIQDh8dBXa8mGoHtxVElTICgKpD/2BrhiJzCXRxGCNIrthwIhALoLsG0HD9eC5zQtrjQuISuUdeo/oQgCgh/3tYE+i5Mn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26379840},"engines":{"node":">=18.x"},"gitHead":"5bc5c7d2dbe545cb6998ee74ae8e433fa263e84f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-5bc5c7d-202503031008.0_1740996613765_0.7089386529142587","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-1f17823-202503031130.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-1f17823-202503031130.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-1f17823-202503031130.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6b73648783a700b6903ef6fb472285380a5e4253","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-1f17823-202503031130.0.tgz","fileCount":398,"integrity":"sha512-8XCmAgldYvgqFKEY+YjFBYdkVRSi3MV1/20ALAKHFcf+5YabyrOVQ5hR4iVdPK8eNwg/I7gwzApfmF80O+f6VA==","signatures":[{"sig":"MEQCIBn6wNm8nPOLi33v8paPtfb4Tur+5qmJeGq2AW3vlKRTAiBzmU50iYZ9nbI2c0VmFe1emW2bBD8GNwD2WemBhv7WqQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26386105},"engines":{"node":">=18.x"},"gitHead":"1f17823699392e88ffeb2d87a21312c109260e3b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-1f17823-202503031130.0_1741001525032_0.765468984786069","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-9b9c37a-202503031403.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-9b9c37a-202503031403.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-9b9c37a-202503031403.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c60239835d7b2cba7ab385792c84de8f0a5ac4a7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-9b9c37a-202503031403.0.tgz","fileCount":398,"integrity":"sha512-8cKzR94yqDZR/jbDEipDXs3Zr2t58fYHiomSlqeJFHdd1jo0yVUQpKHlnSjZ1TBhGcenXvareBGFcXxbbbiXeA==","signatures":[{"sig":"MEUCIAn79bAz4rDu5iuie13LewcuHcL5/14E5l52STMm+xFhAiEAxU3ZrC2so7fbLWZ+H3F83gef5uhQUHGBGo9Z8FrgTP8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26398193},"engines":{"node":">=18.x"},"gitHead":"9b9c37a8641b1f1bb34d76bccd667af50e56111c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-9b9c37a-202503031403.0_1741010694151_0.4326550659074597","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-e54e01d-202503031514.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-e54e01d-202503031514.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-e54e01d-202503031514.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0b09d55c2074c429f0d5e3db699930fb024824cb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-e54e01d-202503031514.0.tgz","fileCount":398,"integrity":"sha512-ieehVQ6WAMCIgmycIyMiS4DrGI9EDRwfmFagfojVi0qWSissjYFyU9NY1iYF3gFME/GBQ0bYY253JO/UmlPvvw==","signatures":[{"sig":"MEUCIQCEZy3iTS9yW3m39TbsZoLfmFhIBoEDrXoc08gg01uyXQIgS3ILxwrS89ceGoRFtvmFy5iAoPuc9YaN+0nkBa72lYM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26403363},"engines":{"node":">=18.x"},"gitHead":"e54e01de0f1ab994d8682bb90e121243a76cf9b8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-e54e01d-202503031514.0_1741014974131_0.1378005584983908","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-0acaa77-202503031608.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-0acaa77-202503031608.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-0acaa77-202503031608.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8bc743c9b1230b4afb45535a1ff8625bb2bae581","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-0acaa77-202503031608.0.tgz","fileCount":398,"integrity":"sha512-lY3vDMbUD6jvfuUJaI3X98BFD1gpMuOkPwHI4rFWC8G2bGPbjw4C1vyxJk3wC0xxRSI/XPcTR+LEPYqTYDmegQ==","signatures":[{"sig":"MEYCIQDnlxvsixoQ4HXxJ0shXyR0zTlEAw8Q/hbnsKi+AP2nrwIhAPic7htMKZV0Q32YFSOJvkELYrdJtNWvcQFK4wNMZc2E","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26403005},"engines":{"node":">=18.x"},"gitHead":"0acaa770dc456526f06a5f80f1782fe26098159a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-0acaa77-202503031608.0_1741018213747_0.6836521207727015","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-e30700a-202503031630.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-e30700a-202503031630.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-e30700a-202503031630.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a787ba9cc418ccab241944fddb5aed8dee35fd38","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-e30700a-202503031630.0.tgz","fileCount":398,"integrity":"sha512-nmwJr/vK9Io2XNtBJkxO5GwRsAQJXN/r/np4DxxVNrkc1EfcClxo9bok5CAPWXG4HrESqzL4l8K9KyvoM+DMZQ==","signatures":[{"sig":"MEUCIAKRph46wpFWIYTZBY9kk/tWuc+qFmbYB62ZF3Nk+GRvAiEA+Xhh21Q5kjG/QvRDFtFt7/pZg15yScSU9jJ6CCYvdVc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26455542},"engines":{"node":">=18.x"},"gitHead":"e30700a0c762fccda8dac6b7b26a28febdd87d01","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-e30700a-202503031630.0_1741019542580_0.28840345466826456","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-d84f9ad-202503031742.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-d84f9ad-202503031742.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-d84f9ad-202503031742.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1ef63f34aac84a0f66acc71dd62e85c8689e91a1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-d84f9ad-202503031742.0.tgz","fileCount":399,"integrity":"sha512-Wd3MJdSTgFMO+ZwwH1EV+g/G+LYmrjwbFdT9WcL84VkJQ5gXcsp4lSnAaVsN1+ynTPEKlQ/P6OSdnL4z5q5rHQ==","signatures":[{"sig":"MEUCIGtxl3xwt9yAuD7xoc6QPHSxetVZiFtC+eVjEKhLocttAiEArNlrhGaa7eavWdO51jKuaZxqPwB+aTuE2p/FfzYDMYQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26465105},"engines":{"node":">=18.x"},"gitHead":"d84f9ad833a5b6b8620dc6bc612de589d5ee8d26","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-d84f9ad-202503031742.0_1741023814444_0.01701863435472717","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-d84f9ad-202503031756.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-d84f9ad-202503031756.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-d84f9ad-202503031756.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3a705bb482a7e9d5fae52642e2358174f821d048","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-d84f9ad-202503031756.0.tgz","fileCount":399,"integrity":"sha512-0ku+hnr1iObBbUnLcHbFOZBCxvZO6RZRg9ryMmFpFz/iP6AH7H2jiYFV9CV3BA3G3skn6gOLHrJ4HElzITKBEg==","signatures":[{"sig":"MEQCIGfDsrbZ0LGe0S5tq32b/pEatLdveVWT7uSK77PUzX1vAiBWl24bR/rdQsx4VSXZgiiTd4izTKW+E5yynRF9hw2ghw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26465105},"engines":{"node":">=18.x"},"gitHead":"d84f9ad833a5b6b8620dc6bc612de589d5ee8d26","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-d84f9ad-202503031756.0_1741024660630_0.3506317890899491","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-a1c270a-202503041025.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-a1c270a-202503041025.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-a1c270a-202503041025.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d760ca6a7d5b5cbf3ce008ffa947a8fb47c6e3e8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-a1c270a-202503041025.0.tgz","fileCount":399,"integrity":"sha512-EkL3kIuEsZ23ouc0JOEKw67++m3oZvdz7VOMZy1vemNqYJFjOufYERlbY6ghjdzgpNSvkrPrOKKKupfd+BSx/A==","signatures":[{"sig":"MEYCIQD87+HjEUa0XpJrvG9l0quxe3CrZt5FclySxUCTqz8STAIhANmukTDZbb3Mp+Le5qpWFkn5d00SmTIz+CKahr9ztP+V","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26466215},"engines":{"node":">=18.x"},"gitHead":"a1c270a09e041bcc456ccafa8444f57a50170c37","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-a1c270a-202503041025.0_1741084033571_0.37781173699330517","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-a1c270a-202503041040.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-a1c270a-202503041040.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-a1c270a-202503041040.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"55623df9968bb62cae1121974b0e012051be5e3a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-a1c270a-202503041040.0.tgz","fileCount":399,"integrity":"sha512-Lo/N7jKc6cqBGiZSLeNPQwL0eC0nVWYW/xupi0IHVZ+c1EWwHxP5Eud2ckvrU4Zs8tEalL9UEMxHHbNu+2dp7w==","signatures":[{"sig":"MEUCIAFcEAOptnV5YfKoxhglJCnW5oMJedDkGpugWZf/wXm6AiEAsd79x258que72DUacgt8WVuW9O5wZj+twXOxBjI7NMU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26466215},"engines":{"node":">=18.x"},"gitHead":"a1c270a09e041bcc456ccafa8444f57a50170c37","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-a1c270a-202503041040.0_1741084880694_0.39980518939464105","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-f416cd7-202503041330.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-f416cd7-202503041330.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-f416cd7-202503041330.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5bbcdb53cd84a2b388fc30aa72f0ec0fc582ccba","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-f416cd7-202503041330.0.tgz","fileCount":399,"integrity":"sha512-Df63ZuJ4CQ+NUjg++Pa6KOb8MBhRQF0rq2JkSxLpJE8svzaTWQi0PyvTixgDVPryFt5d93xOZNDyfx1gBSbVQA==","signatures":[{"sig":"MEQCIE0p+G+oL5kJ9TwVB5329k1EC3Tjl/mrAkSWWv08PRpOAiAlOXPgjDlhdqcUoPy/3WWCmX6m92JOOz8+lznVaVDW7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26466891},"engines":{"node":">=18.x"},"gitHead":"f416cd7e06356249f9ea709962793879e3198e74","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-f416cd7-202503041330.0_1741095125945_0.9235954571177543","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-50079c3-202503041438.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-50079c3-202503041438.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-50079c3-202503041438.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"22bac5b89c62caf822351f9f6671948821651a00","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-50079c3-202503041438.0.tgz","fileCount":399,"integrity":"sha512-Hfdg5Pzo8qyGnoya3ZPMfb5CMyeEy+z7/JGkJFOUi4p/6hvrrOz/qLtYZGsZ0+1djGe2ds7skCcLCy6wfSucBA==","signatures":[{"sig":"MEUCIEXVFs0xizrUkdRAggohpitGiNI5eb+xGi85HvQItAfKAiEArrGcy3TQ/+CPoZb4GCtXU1m9eZT7DU0Sm232TxqTRsU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26467189},"engines":{"node":">=18.x"},"gitHead":"50079c3b1c44b67b12b4e19c46804049de443896","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-50079c3-202503041438.0_1741099205267_0.9241388932540238","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-44ed805-202503041504.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-44ed805-202503041504.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-44ed805-202503041504.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8de4f9341503d04764936b1e1f0ef2898117f354","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-44ed805-202503041504.0.tgz","fileCount":399,"integrity":"sha512-baSF3Mx0Rd8K0SW108Tce/UXhAif1Y8uC8UfOXV64nNfs/0NdWiKIeM4kux7rDidpBU4BWYcoNwsCBu8oVmmcw==","signatures":[{"sig":"MEYCIQD9EP8FZ/vUl0Y9XoAO+d2Hg0AO4rd1VEclOkFbhzuaYgIhANfLXEd2WJu8dGSyZe7Yz/qUA7179fRnBTk4EpgSJUNa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26466568},"engines":{"node":">=18.x"},"gitHead":"44ed8055af9a1d327605f32325f2a17f92a04995","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-44ed805-202503041504.0_1741100738066_0.8591610396888361","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-a3544f3-202503041622.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-a3544f3-202503041622.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-a3544f3-202503041622.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"43833148ba9e584308fb3b3e7e48d75acdd3f62a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-a3544f3-202503041622.0.tgz","fileCount":399,"integrity":"sha512-QtM2/Brww0GzOfbcYW3HXHZVNpYqKHTMbjrLYABoXbYxeLAOrAf2w+RB/mhtgBks+qte9ReEgXFshIKxck8aSA==","signatures":[{"sig":"MEUCIQDmbTFZWJchCbVUlbL6hPNrShAn8h+djatqww3JehuyXQIgCYeA8qJUD2ovU4Gi0a5OudC0VskalBa+xrKLB+uXq/c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26472496},"engines":{"node":">=18.x"},"gitHead":"a3544f38776d96004ca29ad81f3346035f10e5d2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-a3544f3-202503041622.0_1741105467928_0.26217799256425844","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-d3e6532-202503050936.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-d3e6532-202503050936.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-d3e6532-202503050936.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8671e81a0dbb0336c712bb0a6763b8d1db817052","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-d3e6532-202503050936.0.tgz","fileCount":400,"integrity":"sha512-e3hRUy/PqCn/fezYnpnYVw66v3ahe1i/WA7iBxrOWGDfPlfL/mCh0+ECFuUg+luM1OHKLNbxANdnX4aHTZloGg==","signatures":[{"sig":"MEUCIQDFnVOaymIcMw5U68PA+l0NVES+gMT+4MuLRm05u9L1/QIgcj6Di8M4QvjcjVAFwzpuiKPI7YP+B8DEjTdlKDB5gOk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26472226},"engines":{"node":">=18.x"},"gitHead":"d3e653247308105edcc2d29c7ef041c4d1d4d6df","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-d3e6532-202503050936.0_1741167488353_0.1466985730910335","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-d3e6532-202503050950.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-d3e6532-202503050950.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-d3e6532-202503050950.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0abeb0b0316dfbba6373dc8132701e0f3d1fb6a6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-d3e6532-202503050950.0.tgz","fileCount":400,"integrity":"sha512-YJ6N6TXZsKnBPayZhpjqhGoz/pFGEMSB4VWm5FnHjAWIZRhUtT4IFLTfkR7mpQ4nDSf5Jt/l7MxE8iRDP25gGg==","signatures":[{"sig":"MEQCIA783t1GzmfzFd9TwGcVp7Oy0xWPpor1c0tUOBSkrMpoAiBUAYfNbLbja+l9RQinJf51g2ANjP55w+v9vB6c8pGaUg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26472226},"engines":{"node":">=18.x"},"gitHead":"d3e653247308105edcc2d29c7ef041c4d1d4d6df","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-d3e6532-202503050950.0_1741168315139_0.8317666319668824","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-08d10c3-202503051220.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-08d10c3-202503051220.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-08d10c3-202503051220.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"67242fdbb12d947a2e2ef6a90435a3bc64014b33","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-08d10c3-202503051220.0.tgz","fileCount":400,"integrity":"sha512-UehYB/OEw53KsE2owLKJpjUrn06q75W2qFDGu36nUed31BM8ArgmLgV8czT+j6YbZ+2OfuI188BPE1C8Wp/8ZA==","signatures":[{"sig":"MEQCIA2OVCOa9DdzUzPHMQx5EaiTpZNx5V+c6yiIemKzCXMbAiBU+B5pk9VDL2bQOLAC71ruaGemnkoScLcKUyfh/NLi8Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26478431},"engines":{"node":">=18.x"},"gitHead":"08d10c36b7e9a5013bfb9605949025a8d4181f4f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-08d10c3-202503051220.0_1741177334178_0.6097365585571779","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-113d52a-202503051418.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-113d52a-202503051418.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-113d52a-202503051418.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"76e748cde95a7ec5004c6f314f809c34188d9fbf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-113d52a-202503051418.0.tgz","fileCount":402,"integrity":"sha512-W7N4NhBxEjb9t524q6c9S3tR9jA/xmYNA0L2IOlftpLdCp/F6zL5MiZ1C/SrLhzJCQ+yYaBuJYSIljt78JbnOQ==","signatures":[{"sig":"MEYCIQCkzPIYYfiSMZTnGv9p3vT/NLmCEQ8F7gyNZIztYmEn7gIhAOu50Jld7kkASnby5GJtdLboyqv3il0Vn0J3+rAjLvuQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26518736},"engines":{"node":">=18.x"},"gitHead":"113d52a5dbfd76f808e4add9651cf30582f4d3fd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-113d52a-202503051418.0_1741184383576_0.09477463215990634","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-67e910c-202503051550.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-67e910c-202503051550.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-67e910c-202503051550.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"55adec75ee0ac7175a6b943e52dc1ed9e2517f8a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-67e910c-202503051550.0.tgz","fileCount":402,"integrity":"sha512-8MrCx0rA7QSmjWxSh1X+uR5YGmtebN8SSmIXqauQoZo6P73GdyDLzQynULtBgvOMBAPdF/+dg3zNr4CWIoXJoA==","signatures":[{"sig":"MEUCIEp1S57V/w51QPV9yXlULSF3QA+Y0b5E/eVAVfrMKGf5AiEAmnLYbexFH9M1IhGigJnmbmwWf+oCbNnqO2kWDX+JLDU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26518768},"engines":{"node":">=18.x"},"gitHead":"67e910c94a1ea9d1100b74fcc83220426a477933","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202502200859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-67e910c-202503051550.0_1741189913261_0.9010994660426659","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-67e910c-202503051814.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-67e910c-202503051814.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-67e910c-202503051814.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"68398695ed30f103cb4a5e07d3a397c774c5af17","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-67e910c-202503051814.0.tgz","fileCount":402,"integrity":"sha512-k2HKZ3j2RBCnNyUxN5FEVv8JYaLfYmb+Y4TauhiX0kQl2KiH4aK6wEfPDtde4HGkyFTMnvqlRytH6Pf/z34X/w==","signatures":[{"sig":"MEUCIDT7JycfI/2mvRK6ZknIcNyCw1paxMEB+3M6hkBW7SXxAiEAsCLlGF98C5cOB0T80MgHS+8z41OgZQgMVvDVywEgq5o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26518768},"engines":{"node":">=18.x"},"gitHead":"67e910c94a1ea9d1100b74fcc83220426a477933","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202503051814.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-67e910c-202503051814.0_1741198574489_0.8293008985078671","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-baf636f-202503061110.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-baf636f-202503061110.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-baf636f-202503061110.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bc2c57d4fdf4677657a65d50b9fd1701b8ab259c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-baf636f-202503061110.0.tgz","fileCount":402,"integrity":"sha512-1Gn9PzJLr9Ql8H+fVY/+GAjjVn9c7/LaY9FT0hUI716njMllcW1ave1tDUnLIzi/+G+4lvKlkeNxnDaifjDnng==","signatures":[{"sig":"MEYCIQCzmD09k3MYjDcTPMAoZGKIOaiC97NrhdPw9roHM15hGgIhAIY2Bzw4TNhgH2Gv+c/B+IRKsdEfknGJVblg5xkbAXT/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26518617},"engines":{"node":">=18.x"},"gitHead":"baf636f0ccf8be3d529de5ec90fc732feb830203","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202503051814.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-baf636f-202503061110.0_1741259504430_0.9534942934421795","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-b82c745-202503061302.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-b82c745-202503061302.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-b82c745-202503061302.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"16c8c71cf61502ee27c53a8f247241971bd3098f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-b82c745-202503061302.0.tgz","fileCount":402,"integrity":"sha512-XoAOb2j9wKDb7Y7qI/YzuQUxtCfB3TnkQ9Ifv/yDzjcreO3lykILIHDbZYYkl3qZldHJqs5WlNFFKLc0PmXCQQ==","signatures":[{"sig":"MEUCIQDSkrkaEp0K6/72UFG1HnhVOVD0cO1Bq+JTtSbukUdungIgHkVJOQEGPk1RglYGGno2xHey9z6wdrf6Hws3vo08iGY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26530262},"engines":{"node":">=18.x"},"gitHead":"b82c745c78618d514473ea3e37d9323d24f943a3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202503051814.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-b82c745-202503061302.0_1741266210088_0.9680850259526881","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-c627c91-202503061540.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-c627c91-202503061540.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-c627c91-202503061540.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b7e872d2dd7a3809bb7f3eb8d7af7b00e55ad9c2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-c627c91-202503061540.0.tgz","fileCount":402,"integrity":"sha512-8EBQJ87x+t7XyL0eNm3JWRO9MQ5IglnmqzgTLlpzcj1YAxjlK0E3mJe/AOA89TD8Woos7fhk9VyPTKPWU3/aTA==","signatures":[{"sig":"MEQCIFsLboyvsRrnwykRWbUPm99szWcbL8V1YDxu2bMfiWSNAiBkaj21CuzSQ/5oSA1SGVADA2otKyHTNlzaf9uIysdSlQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26530655},"engines":{"node":">=18.x"},"gitHead":"c627c91012e90e192063616f4504d56b65ddb7c9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202503051814.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-c627c91-202503061540.0_1741275703959_0.5989548690187594","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-e142fd8-202503101102.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-e142fd8-202503101102.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-e142fd8-202503101102.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d372896a9b3fd2bf33dc70959869f093a006c241","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-e142fd8-202503101102.0.tgz","fileCount":402,"integrity":"sha512-h4pcaGB71KClmL75PMDve2CFe4NiTthNtzkUl5xPonfhhh3qjDBmCuT0EFYCMRgrK4Fuig8ae0R59pozuLY9JA==","signatures":[{"sig":"MEUCIQDHcz9mfn4HIu3qibeM5LG02sj+cm5PKCQ0l77RpzxHhwIgWTQsYUQgOJ/ynJSpEFLIvqEEMdxs7pzSmv6x35HYXy0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26551649},"engines":{"node":">=18.x"},"gitHead":"e142fd85ed661fb3e3a5779ddbbfd65c0a18abbd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202503051814.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-e142fd8-202503101102.0_1741604621456_0.48679421220385644","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-e142fd8-202503101117.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-e142fd8-202503101117.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-e142fd8-202503101117.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f3a7ecd98b70f08cb414253b72677d4c7182f4cd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-e142fd8-202503101117.0.tgz","fileCount":402,"integrity":"sha512-hlWdLUBCjmfvCTdXHXzFBUGqKPMWz2TyB1UmBIQyVrmpcRtbjLQWYRoQzJHA1XTqARctoVDaqEYGlDo/k4vErA==","signatures":[{"sig":"MEUCIQDWpvydiCZlPJtlkjUoPezvt5yKMs3JRuOzXscN2p4HsgIgDlBsuXfupwgD2J7ZHfF3rf/70iCMRF/y0jctH6oc9UM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26551649},"engines":{"node":">=18.x"},"gitHead":"e142fd85ed661fb3e3a5779ddbbfd65c0a18abbd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202503051814.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-e142fd8-202503101117.0_1741605504355_0.5625716568162562","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-c8d6486-202503101840.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-c8d6486-202503101840.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-c8d6486-202503101840.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0232781c0b7be5a824b597e58cf8ec9ec64c374e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-c8d6486-202503101840.0.tgz","fileCount":402,"integrity":"sha512-B1WI76MLPRq3sbckeBzbUGrx+UnSEIixx75P4g5bcTB5awUmYC71+IXwwqQ/FO5g9IHqe08KHQyMv3JelnfBKQ==","signatures":[{"sig":"MEQCIH/Hv75iRejOvygsMYw9N2nBiwczhFJrTrVXO0GWdVQdAiABSa70HmCB9KsI0dJWqMHzvmpQbVukbuPc2QwMuf5byA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26551676},"engines":{"node":">=18.x"},"gitHead":"c8d6486dd6a611b84f294902171d1df346e3cd98","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202503051814.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-c8d6486-202503101840.0_1741632116741_0.17473349724835674","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-36ac327-202503111435.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-36ac327-202503111435.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-36ac327-202503111435.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7537e0e365125d77710a47a7dd351ec7aa9c0df5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-36ac327-202503111435.0.tgz","fileCount":402,"integrity":"sha512-c9cIa/44PAF9miH1a/UcqMt6KfWk+XLTmVNgJ1JpYE9UY35za88pYOZnpELexOejix3EGGZIUbFlrwDC7pZewA==","signatures":[{"sig":"MEYCIQDqJSCDVcUWI9ip5AvoAgQqiRUzLcxObSoA3i5P7M7u3gIhAPmsvjpSTfCEEJ1J7U9xCxPDL8LYLp2R+QOZ9VPGH7a8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26683279},"engines":{"node":">=18.x"},"gitHead":"36ac32720f56719a4ef9734eee46ad85417d3348","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202503051814.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-36ac327-202503111435.0_1741703837838_0.9240174195746178","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-7ad0389-202503111634.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-7ad0389-202503111634.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-7ad0389-202503111634.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2585d668289857eb8bb61ac6a5375ae6942c7c29","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-7ad0389-202503111634.0.tgz","fileCount":402,"integrity":"sha512-3gtDzoA9/aE3Q9kL0rlVrQ/fjCwaFWl+wXtxyM0FJ+1v1+ta4gOsPdTc63OdLCIVISVWgVyMT9Tih5CC7JcanA==","signatures":[{"sig":"MEUCIQDRITNr28/opj+rHw4SnPXgXoi/pH5KzrlASw155iw6xwIgSS9U1w/yCMegBI/k0/cXi+GOIpYJjnC2SLCvDCXbz9Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26683758},"engines":{"node":">=18.x"},"gitHead":"7ad0389754e062a2984f9b225c69c4e278274abe","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202503051814.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-7ad0389-202503111634.0_1741710949888_0.6566896094475065","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-7465ef4-202503111735.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-7465ef4-202503111735.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-7465ef4-202503111735.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1d2641881e2a55b74c8b9f83f0a0b9f44eec5056","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-7465ef4-202503111735.0.tgz","fileCount":402,"integrity":"sha512-iiafRc4E26s219Nro5GFX8e6VPL5z4IghJD5gN/z3Ng7j5YAR+rLpqW2mM8JIm9Qx4rl3ap48PIbgJpnBZtuBA==","signatures":[{"sig":"MEUCIDvtWeGtdqeW2euYf12+iybTbZtTbuClan8/8586Cg+VAiEA7dggzjiHy+O9vipbqeJ7VzaRVNKOxSu3GGaIDQ9jIn8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26725660},"engines":{"node":">=18.x"},"gitHead":"7465ef4a7ce63685087d0d953b75a90b642788cd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202503051814.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-7465ef4-202503111735.0_1741714587703_0.12142316565990852","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-898bc5f-202503121603.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-898bc5f-202503121603.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-898bc5f-202503121603.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e59308f2f58a65e30fd11d7328ad1636ceeb36d6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-898bc5f-202503121603.0.tgz","fileCount":402,"integrity":"sha512-mGpH+SMOAET+CiI4L96nxXD7Jhj5jhJOfNd6tkCfkRS7arzo3PKi6iRqlWJMfSuJH6WW4sB2yQUMrNEfvgGFcA==","signatures":[{"sig":"MEUCIQCRTCTmZqYgV3E0OOUA4nQvD0hcwiJbP0iJCg05bB7GPgIgWXZZmJm3BkzYWxNSb4HdGxQX1Hner5BBkKu3Tbiq8lc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26725676},"engines":{"node":">=18.x"},"gitHead":"898bc5f3ada28118a9ae583f24caa4a4812bcb3d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202503051814.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-898bc5f-202503121603.0_1741795502040_0.07914183015480103","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-c77aa0e-202503121644.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-c77aa0e-202503121644.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-c77aa0e-202503121644.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"aa61159260f34270b41f951df72f87ba9ddea044","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-c77aa0e-202503121644.0.tgz","fileCount":402,"integrity":"sha512-/oGryP1+Ul8uVNrb5Ij6c42jdV92laFi5iU36djh5DvlfikhgiJGZVz5SV6YpcZ1YJHqi9jwrthNoD8rezfObw==","signatures":[{"sig":"MEUCIQCP+ZxVHv1eQF7L2fvzrD+J4nOnW4qzz5CutUae7kwG4QIgMhMHecEIEuFbAF2YWDGoO4CkX33ppWnoTHkKAuAcu28=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26725782},"engines":{"node":">=18.x"},"gitHead":"c77aa0efd0a42f94a7722a1277e3804b9c62687d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202503051814.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-c77aa0e-202503121644.0_1741797973209_0.005393106861963259","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-1b4e347-202503121718.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-1b4e347-202503121718.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-1b4e347-202503121718.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9760a3b195cf387b0832f2bba479a372846b63ab","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-1b4e347-202503121718.0.tgz","fileCount":402,"integrity":"sha512-EBpstyABJKVvOi6Af2cNfupJl6Ei1XXT/0x5KfQCFEZI+eayJe2dHbdggEdkWRcmJzs794OaYL40VThLHFL3zQ==","signatures":[{"sig":"MEYCIQCxNlnq5BNbhRU2ZYdg8lFwKERAglOT4FOsbBYgQ6RmZAIhAJAJLPlGXV3lvgTAbAd4jQYB04Bfqe72r76x2tvmpgNv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26735824},"engines":{"node":">=18.x"},"gitHead":"1b4e347a532acb5065cff239aad2f4d2a448470a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202503051814.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-1b4e347-202503121718.0_1741799987082_0.1903968186397047","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-321cdbc-202503131000.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-321cdbc-202503131000.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-321cdbc-202503131000.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f8a15a373b6235a9bc3f697645ce629f3fc451b6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-321cdbc-202503131000.0.tgz","fileCount":402,"integrity":"sha512-b0BWTJyNyAvYOwcIXTO2yVanl69U716bYFjwQOTdnpXc6PdANeDG68T6sck3EK05MIH3fNvf7Oye/Gm4qq2YBw==","signatures":[{"sig":"MEQCIGmhLEcQPGq9iRilLK/rvYNv429yGzfQ3eJhWB+bl6SLAiBrGU9DVFuN6VNZr3aneI0D4SXsbVU4FA8rlGfr6wnOQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26737676},"engines":{"node":">=18.x"},"gitHead":"321cdbc7536c4100033e30f3b5f2a70f70e7b174","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202503051814.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-321cdbc-202503131000.0_1741860089005_0.9310085062842242","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-321cdbc-202503131015.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-321cdbc-202503131015.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-321cdbc-202503131015.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cdc76f4d7c37148d831196e0fb0d9a9b9b4da2f5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-321cdbc-202503131015.0.tgz","fileCount":402,"integrity":"sha512-zs6eZe/+fn9BkMBty8x0OjGNyHw7h8inMePdeW0ZFtyu+uE6JTUs+QdOCPDRcFA7OS/D8Ek2b9wsH2jdr9NJ+w==","signatures":[{"sig":"MEYCIQDUlhvTpaoe0eyxcJh2GeNctfrou+IXPdyjKXsFIw16+QIhAKwWYA96prYGeldkE9L4YGd3YdsekFO3r/onBf9o0vpx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26737676},"engines":{"node":">=18.x"},"gitHead":"321cdbc7536c4100033e30f3b5f2a70f70e7b174","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202503051814.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-321cdbc-202503131015.0_1741861015787_0.24151192573075764","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-321cdbc-202503131047.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-321cdbc-202503131047.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-321cdbc-202503131047.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7570704f45dba197b105556ea0740c444340ad88","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-321cdbc-202503131047.0.tgz","fileCount":402,"integrity":"sha512-eydO5QDizn4AVwzUA4GKhD7tcxpKzgddq4eGipGdw83d8SzyzmQiuWuwaqkYJCIKuy9UC8UeKcYlojsNREfulA==","signatures":[{"sig":"MEQCIEZSVfJBb5MyGg+nofW6K0UDVxhcFj/Ri+SAkJVrRkrQAiAV//iQpjk34gkcWYvO6YT0zn2vL1kgX0vlInY6Qp4TxQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26737676},"engines":{"node":">=18.x"},"gitHead":"321cdbc7536c4100033e30f3b5f2a70f70e7b174","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.14.2-880824e-202503131046.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-321cdbc-202503131047.0_1741862934255_0.03330193244569801","host":"s3://npm-registry-packages-npm-production"}},"2.14.2-321cdbc-202503131049.0":{"name":"@flowfuse/flowfuse","version":"2.14.2-321cdbc-202503131049.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.14.2-321cdbc-202503131049.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"df8fcec840f93521d455a7f5ea88d8b2e705f4c2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.14.2-321cdbc-202503131049.0.tgz","fileCount":402,"integrity":"sha512-sCxIi5pWtYZBYOteQEAVxVjND/6XQTfETSQh+Run39ORXEHHLivQT3kPBeg7gSEBtv8QWo+DDpK4XhSRuo/fSg==","signatures":[{"sig":"MEYCIQCJBi3kGOdlt/ZqcOkIUQ2IOa1IosZVle7bpy+FNbJb5AIhANXdDAERQX9W9sNTfuuPtR+w4XG+dwTDnPEe0J4/cF/w","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26737676},"engines":{"node":">=18.x"},"gitHead":"321cdbc7536c4100033e30f3b5f2a70f70e7b174","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-ac76f40-202503131048.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.14.2-321cdbc-202503131049.0_1741863042449_0.2116067438022069","host":"s3://npm-registry-packages-npm-production"}},"2.15.0":{"name":"@flowfuse/flowfuse","version":"2.15.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d9fb02ba6a31b95be242a158c18bc0d990b0a961","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.0.tgz","fileCount":402,"integrity":"sha512-HR/oucTcLA2dWb2R02grtdwj/XXgz3p8QKxKgEmtPQUvQocibfTpzrk4AUY/D80iVbYiAvWGkaY8g/o8a3QMaw==","signatures":[{"sig":"MEUCIQCGpbX1xslyJQgtFKTu3CYt3DbsFsh7rVrvvZ9URnNPkAIgOPBmnlaH5rAnP5Sj8Xv+YAxp96DFjp21BR5euMsXoD0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26739241},"engines":{"node":">=18.x"},"gitHead":"8a896c4c020536d3fb2e3b38bf793540f3d7586a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.15.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.0_1741863593949_0.5208768738515359","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-8a896c4-202503131111.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-8a896c4-202503131111.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-8a896c4-202503131111.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"da2f08fecc3493d7455f7375afa25049f45cbe92","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-8a896c4-202503131111.0.tgz","fileCount":402,"integrity":"sha512-8fQgcbM6lM4oo342NerS7Rcrl1MsFmyWVp6w5yxSHyzUkGk+79QnUZ0QkQA37vGxUMjQuhCMIGsQn2ehzxsxHg==","signatures":[{"sig":"MEYCIQDCgY1TcsrdaUncHZkh7HA+GjOGmwFrEA55HQXyTyNXfwIhALqJxOTn+A9+nPboOfBSfGxEio2+ZvX1SAowCEWsmkcx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26742422},"engines":{"node":">=18.x"},"gitHead":"8a896c4c020536d3fb2e3b38bf793540f3d7586a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-ac76f40-202503131048.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-8a896c4-202503131111.0_1741864381590_0.9874210871116076","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-1614c07-202503140956.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-1614c07-202503140956.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-1614c07-202503140956.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c088c55bd14dd0a0e4f2058794db8bf772462947","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-1614c07-202503140956.0.tgz","fileCount":402,"integrity":"sha512-XTfzZ4OPv9sMNy/QlsS6DBUzNyzFOHmgdoe1RtHnmUMMAbHVS6nPISp20QQ4U9vgMPCHIMYWkQQgbQeUv8rweg==","signatures":[{"sig":"MEUCIQDbzwzjylXP6dPdhHsO7X78U3xqXqBQCJvESTATjy9wtwIgXkgP6qkOCnwSbc8T6nvo3E/JKGqXZvNoN6mpbWSjoOw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26742477},"engines":{"node":">=18.x"},"gitHead":"1614c070ac81d9b253e2a5d28c02cf19206f4951","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^12.0.0","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-ac76f40-202503131048.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-1614c07-202503140956.0_1741946241696_0.11792137087992738","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-b058eed-202503141636.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-b058eed-202503141636.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-b058eed-202503141636.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fc725044c3c9da937efd069dec41f059e72d4148","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-b058eed-202503141636.0.tgz","fileCount":402,"integrity":"sha512-xDcvGGtxieuzUEqdaQe/BSFr2b786G4obmkZDqTj1ELRlrNSA4nveGFf4baplb+akzs7Af6WvCyr3t+SpCCOwA==","signatures":[{"sig":"MEUCIG3lc6o3oLebazfpbQJFId18d/m3e6d9Gk9nr5jKM9LJAiEAgyot4yEKaHSsCNey+V08wjbDf6bne+cFvU5EvD1jfqU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26772159},"engines":{"node":">=18.x"},"gitHead":"b058eed960e03d6ff608ea66c6d270938cfbf92d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-ac76f40-202503131048.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-b058eed-202503141636.0_1741970290688_0.17333159062082681","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-85445ed-202503141639.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-85445ed-202503141639.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-85445ed-202503141639.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d087b0a1d1574b0ad4792b36257c42aee9317ed9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-85445ed-202503141639.0.tgz","fileCount":402,"integrity":"sha512-ToFJuR0JMZbZSMRySMsFKQYn4zqmA+tGZoFSwwHc0zDQbP3Tk27tJpgETm4Xw6pWt9CzmP7Yix1Y6tdQfxh62Q==","signatures":[{"sig":"MEUCIQDxnNcgwJnlRViGwm1Yldy8VGl1mQya8dkfVj7bV/jKEQIgQe8CKWyRy2++KobLBNYwSPOVfPAILnoBhQN7JyokhXg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26779731},"engines":{"node":">=18.x"},"gitHead":"85445ed3d3f2d3643f5c9f6e507ee3b0689f9c4b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-ac76f40-202503131048.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-85445ed-202503141639.0_1741970421122_0.36845021688929935","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-c28515d-202503141640.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-c28515d-202503141640.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-c28515d-202503141640.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"249d3bf0fcfed89eb1854546fa86c10407a75db9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-c28515d-202503141640.0.tgz","fileCount":402,"integrity":"sha512-qVXm/y7oe0/LZKecJ3YhQc/9yqVQbv2BSjoY2A35nR6hQRp6kYgz++E2Wg027cT0hW4IEE8onbAaQvVhzGAvew==","signatures":[{"sig":"MEUCIQDgtOrOEf8P7EF3rP/BeYdcDtq9p1MjyZMtbgdAfzuPUwIgKVEARymFW0fnWs7/wQ4TTNH/1Ap6NnAaZtK7yx5acJk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26779731},"engines":{"node":">=18.x"},"gitHead":"c28515da49c42359f6165eeeff599cf03c74ba18","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-ac76f40-202503131048.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-c28515d-202503141640.0_1741970524726_0.19825062512630498","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-c28515d-202503141655.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-c28515d-202503141655.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-c28515d-202503141655.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dfc62cd73969116b41403968ced214f087e19933","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-c28515d-202503141655.0.tgz","fileCount":402,"integrity":"sha512-uXXGDpwoJt8Vz7tBRSL0v8zP/vmyXMny/kcoB8VMYtOTBfPDc9VqC9+UD1lSoE0YJU4Hb/zCwWxovXngyGzrzw==","signatures":[{"sig":"MEUCIDPSCOYHMJvHFlvXEs1LuzXMgUUJMQ2+jgL0pRtQqlFMAiEA1PgDwrx8Ko7DjB9C8I2gXZYlIwMvN+R56Rt6cfUsfv4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26779731},"engines":{"node":">=18.x"},"gitHead":"c28515da49c42359f6165eeeff599cf03c74ba18","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-ac76f40-202503131048.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-c28515d-202503141655.0_1741971395910_0.1964491240480013","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-d4eba00-202503141744.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-d4eba00-202503141744.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-d4eba00-202503141744.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2f05cd3232b360cc7e135f5b5432d4b16823cc48","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-d4eba00-202503141744.0.tgz","fileCount":402,"integrity":"sha512-f+rk7LBN9Yy/3agPlxz0zANIH0NIPHsgErp5T/dsgNEkYhDK0g0JttxdB+lP8wqrYnNnfO/ai80YO933rddWLQ==","signatures":[{"sig":"MEUCIGeQ5WhhVxbQWBhgzqF3SfrqyK99/4X3TUFqp9LmbbF8AiEA1qlSXlZ2zW7xf4Pkqfsjt6G3B7/3XrLILZjyiF/2j58=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26779731},"engines":{"node":">=18.x"},"gitHead":"d4eba0027986c5709de4f1244bd0ca767f99bbe1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"knolleary","email":"nick.oleary@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-ac76f40-202503131048.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-d4eba00-202503141744.0_1741974366602_0.23817479194120295","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-4fb0353-202503171027.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-4fb0353-202503171027.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-4fb0353-202503171027.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f91f774127f2bf921aee8abbe2955c129e505f88","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-4fb0353-202503171027.0.tgz","fileCount":402,"integrity":"sha512-WNKoNpT7pNXJgP8nIm2IGHAExoNgRPSoh04LpoQ39kbGC6zAQnrS6spk5w/cWCPDy7ncpn+7abY+zFAtVf9Zew==","signatures":[{"sig":"MEUCIQDcCvJjWjFJsrVxCsZBtIUmZ/3fXNs2SPat1rVBceOxLgIgIa25tA/G6SW3YlCbkEi+5avp0C5xmKyJ/WNm/QXyxRE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26790259},"engines":{"node":">=18.x"},"gitHead":"4fb0353bccab1e2c6e62bdaf80183b3f3ef5aa91","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-ac76f40-202503131048.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-4fb0353-202503171027.0_1742207348937_0.4563027338169299","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-dccf68a-202503171240.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-dccf68a-202503171240.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-dccf68a-202503171240.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"84b9f657a94f5d1d1ed2050e57bb1cc09365526f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-dccf68a-202503171240.0.tgz","fileCount":402,"integrity":"sha512-LFge7LuxrncVjQIwCCdgvOhd4GRkkg0WCkreCgkfofNhXbonvcj7uDMLf1z2FuNNy42IhXAWIxJgKoI0c6zlEw==","signatures":[{"sig":"MEYCIQD2JXEAtsatNw7NlT0L4jaZhRL1HUA5x/VXnOOZ0KrPRAIhAIMAGHuxGCyKADJSzy99mi16pIxZnwKiKsEYDW4tt0KN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26798748},"engines":{"node":">=18.x"},"gitHead":"dccf68a3acf801453620a79d379cf699a3a04602","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-ac76f40-202503131048.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-dccf68a-202503171240.0_1742215321810_0.7277108436388708","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-3943d0d-202503181115.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-3943d0d-202503181115.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-3943d0d-202503181115.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b490b0641db5b2f9edcaaee15fedbf0e2e48c6a4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-3943d0d-202503181115.0.tgz","fileCount":402,"integrity":"sha512-z1tGT2ZIEfIwF+yGMHvQVtxTZk1c2ukREThAQhEWs4N4r29q6IkhMWHwO7OEHVkY7waIa5xxcXcafJ56yKOTdQ==","signatures":[{"sig":"MEUCIDaRJQ9MvUo7JwXKsEwdk9uw2SVoxctVoirTFjfcmMisAiEA93lgkiArjMnLcXEU5Fqh04ufVJmLRL+cYHsDSCYgWa8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26799018},"engines":{"node":">=18.x"},"gitHead":"3943d0d45ebb7c91cc374e96e4a72c8b61837a3a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-ac76f40-202503131048.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-3943d0d-202503181115.0_1742296632984_0.9658469280700723","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-d1aa795-202503190922.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-d1aa795-202503190922.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-d1aa795-202503190922.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4b40bd180c640bc1427bec093cfbba75e7070952","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-d1aa795-202503190922.0.tgz","fileCount":402,"integrity":"sha512-/RwNw+WLuXISjaTfwe7/px8fo3qFahzI8lw9V/wUdehzwkTMigX9GayaMteFYY1lgbzMYDPZ+mkiIhi2ZHX61Q==","signatures":[{"sig":"MEQCIHl+sA/yoO7Rk052uxPhyKhKVmP04xot6BWTGWEeW0smAiBVdIwNT0l6BEasMOFQx7f7D03uRgTLUdQ4x0xB+6i9hw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26799086},"engines":{"node":">=18.x"},"gitHead":"d1aa795ee4ae3ccb35ade7efa9236919633ac48f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-ac76f40-202503131048.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-d1aa795-202503190922.0_1742376209934_0.49699316192853593","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-e8cea56-202503241447.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-e8cea56-202503241447.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-e8cea56-202503241447.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c166efcbd4e08f250be41c1ca9de3a1929d71d14","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-e8cea56-202503241447.0.tgz","fileCount":402,"integrity":"sha512-nI3Fq7X/1pcCWarZNys5eauypimKrKcoqOC8ha3aG9VGuSUjLBXsqMomLA+e9fSMuYtUdilYEL4FGzDKCEyrag==","signatures":[{"sig":"MEUCIFZdbZuGzoJzXU3mekIbpxFg48wtPTBp8X81/+F6Vt7HAiEAw4l9uwzGxkZwMcGt5GExNfR9sHsVTu/4PH1uVj5HIxc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26799086},"engines":{"node":">=18.x"},"gitHead":"e8cea56f8cf443b64acfc22ad9a22809f1eac2d3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-ac76f40-202503131048.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-e8cea56-202503241447.0_1742827709244_0.03101174521315575","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-d6a4062-202503250937.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-d6a4062-202503250937.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-d6a4062-202503250937.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e849ea547d2aa00ebd8bd3ddfaa25f7b76324347","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-d6a4062-202503250937.0.tgz","fileCount":402,"integrity":"sha512-gFWHNvGDP7txLjQGcWHwmJGqeWfieX9niJNSkuM86t5DeVmqMm8Am2tg4deNJ0AXWjwHWoQ8Tw8/o0LL042iew==","signatures":[{"sig":"MEQCIFw9tOqeWp5CzlL/FkwFDA8I+fT67IS7GNzYWipztWyTAiBqIYAmkdUJayJ8hvJi9uJftf9XzoOZLA4cMRYXaNvezg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26799181},"engines":{"node":">=18.x"},"gitHead":"d6a4062ddb241b7410a00f00816cb41ebbbd148d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-ac76f40-202503131048.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-d6a4062-202503250937.0_1742895507629_0.12218856439267411","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-d6a4062-202503250947.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-d6a4062-202503250947.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-d6a4062-202503250947.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7ff02603a93aec599414bf2f22bf4ef58d215286","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-d6a4062-202503250947.0.tgz","fileCount":402,"integrity":"sha512-oYWXG5gJ4adoPVnCJtxxHLJGp9ByaIoRIpIQs9Pe22Sjq64MwKQaXif4H4e7Um4uRSdAR+4+68SAFYg3Tm4r+Q==","signatures":[{"sig":"MEUCIBa+vEChr2FhanuNCcbH8U5HIsGsQXYV+trVnvjvbJNmAiEAzUcrM2YoYkg2B2J15oz+ZO3M4PS5NWyXo4HamDz9PHw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26799181},"engines":{"node":">=18.x"},"gitHead":"d6a4062ddb241b7410a00f00816cb41ebbbd148d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-ac76f40-202503250946.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-d6a4062-202503250947.0_1742896107817_0.062491900033911696","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-d6a4062-202503251002.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-d6a4062-202503251002.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-d6a4062-202503251002.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0685180c849fda410f4609e441868a58f1edacad","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-d6a4062-202503251002.0.tgz","fileCount":402,"integrity":"sha512-kJvB1qxY01f0LEiWQoTcbzKHKQYJdYRainFer8aRE4mri2CarPH/7owXojgytTz3iIieYHelDAdjyHw9Svi8sQ==","signatures":[{"sig":"MEUCIHTCOHhvxjzt2vpt0xH6f6SIpo3mvACaujxvYJaMcHjRAiEA1Bb0OKi82fH2crrzfG0rfjmY8tn6WL+oabeZwCR0sTc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26799181},"engines":{"node":">=18.x"},"gitHead":"d6a4062ddb241b7410a00f00816cb41ebbbd148d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-ac76f40-202503251002.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-d6a4062-202503251002.0_1742897056407_0.6977865972658182","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-d6a4062-202503251011.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-d6a4062-202503251011.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-d6a4062-202503251011.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ba6fa344e5d01c883d9d4b4870bfe19728195e4b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-d6a4062-202503251011.0.tgz","fileCount":402,"integrity":"sha512-q3vjuVsos3rEeM4QDY5PTAkhPZP/3qGHI7FnIR5fBfPJY8qR+J5hh2bRz8Z2d7ljoWrkggZmvrIkSQ+oFF+tWw==","signatures":[{"sig":"MEUCIQCwEcfPfYfS9sLP6A3L966YOfyB5Sir9P42GrLmvI0i0gIgOMN1+ixNX1P2Xq4LmLrxMOgnaymBfjVsU4GpMSo9LL0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26799181},"engines":{"node":">=18.x"},"gitHead":"d6a4062ddb241b7410a00f00816cb41ebbbd148d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-aae3928-202503251010.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-d6a4062-202503251011.0_1742897568005_0.13538417043558115","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-e238560-202503251044.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-e238560-202503251044.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-e238560-202503251044.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"adb6efbe7f9fcea195674066f37417c665f91690","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-e238560-202503251044.0.tgz","fileCount":402,"integrity":"sha512-3NZIz3XgCD59oCFPvVdHALAW9Sd04q3kODs8SjqSFd5A5Jyy9WOAxF6kxbq+c+m0tB0VQ183B6TSb42GjnV4FQ==","signatures":[{"sig":"MEQCIHGkS2iHafWSGSm1SOa8/GwteOC09spZLK4O0D4KDT95AiAo1rUZrdvYLi255PsLMWrpcyPXS3q76/fw3mFwNCgDCQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26807658},"engines":{"node":">=18.x"},"gitHead":"e238560c792b92ede76da85e87e11bdd2d021d38","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-aae3928-202503251010.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-e238560-202503251044.0_1742899569794_0.3504117076622357","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-2bbc3af-202503251137.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-2bbc3af-202503251137.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-2bbc3af-202503251137.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1499ef2b8de1de05c8e9ce78157c260e8a8ccb6e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-2bbc3af-202503251137.0.tgz","fileCount":402,"integrity":"sha512-DlqSqLB9zZd1epRTRfS4FGqq2jP6Kl0UvOwTXy2PxXgvFA/2T+ZlBNpIzAwZKiufpAUT4T4zgSol68X2sEiC2Q==","signatures":[{"sig":"MEYCIQCXulz0MICX9QhTuSfhZ9UicodjWTHUfjJbd356n2MIhQIhAObEbRCLYV3mGNeuL8xZ2BfNEXVVrTRLaXjf1fZRl9/C","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27102878},"engines":{"node":">=18.x"},"gitHead":"2bbc3afa0ad1ff56fd48d7c3c33e493ebb5163a5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-aae3928-202503251010.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-2bbc3af-202503251137.0_1742902726622_0.3866338881138627","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-96b20c5-202503251243.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-96b20c5-202503251243.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-96b20c5-202503251243.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"862cae429762c61be54bb0f6b0e3772625a8d704","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-96b20c5-202503251243.0.tgz","fileCount":404,"integrity":"sha512-JRBDcJNTtEJHz2ox4GLl9L+UKG9rfafmA7W4nYnT9m475MBkUFUtfdMa6bWkjwaX6MlyXFCAnGwOTwhYG/qwFA==","signatures":[{"sig":"MEUCICutWtwjidJMxbZdy/jyoOq47l52jDujRRVkWevig6YxAiEA6z1kPI/1Nm264I/YVbJEK7SG9mGr8sKfrGPYliZl9sg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27153572},"engines":{"node":">=18.x"},"gitHead":"96b20c524ff2c2fb19cd13f3ee02b8255f7a654b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-aae3928-202503251010.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-96b20c5-202503251243.0_1742906667701_0.43804642434743335","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-96b20c5-202503251257.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-96b20c5-202503251257.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-96b20c5-202503251257.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"abcab7d444274ed2b3fe8c3efa6394e0517ba5b5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-96b20c5-202503251257.0.tgz","fileCount":404,"integrity":"sha512-QYre+k6esFfG5kcazm91eD3ma0bx98dEnAUeEWPmaokbc9sEa4STCPkmdCq0kC6ecWFYVO2O6YghiOLAzcG0OQ==","signatures":[{"sig":"MEYCIQDuKYb7xjSBFMCoQ/QDyHKACYF0w4ocfQEcrdXJTz8YkwIhAL+oay7CUvNfkJWzVFZ4hmnTxLS/DAxAbg2oSqbg1bcX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27153572},"engines":{"node":">=18.x"},"gitHead":"96b20c524ff2c2fb19cd13f3ee02b8255f7a654b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-aae3928-202503251010.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-96b20c5-202503251257.0_1742907523872_0.662396311782643","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-96b20c5-202503251615.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-96b20c5-202503251615.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-96b20c5-202503251615.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c0dca9d8503fc454cb63eaa61df773f3e4ff2d0b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-96b20c5-202503251615.0.tgz","fileCount":404,"integrity":"sha512-EqocMNSDSlQJkaNj8peNXnk3D+xB2OKzFpAOO9DU0PFdFPFsMgK04HmLD/Eq3YhCaHip4+wv6U8Vtaw+ZHdqzQ==","signatures":[{"sig":"MEYCIQCbMthfxjWsMi9y1Chyq4jGChUtW65GDlXg7F5ujQphnQIhALSfe/37PXWDTt1vT6FoapnxJU7x4Cg6g2lyQSgR9IJn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27153572},"engines":{"node":">=18.x"},"gitHead":"96b20c524ff2c2fb19cd13f3ee02b8255f7a654b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-aae3928-202503251615.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-96b20c5-202503251615.0_1742919440445_0.41444937160501993","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-614128b-202503251735.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-614128b-202503251735.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-614128b-202503251735.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"57c22998655f9512341c953ea72e210f2e7fc502","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-614128b-202503251735.0.tgz","fileCount":404,"integrity":"sha512-6sCzXo8KK3sV5U2L0ipzkdHMaEX4byvXUUr0SkbaxtqUpsxut+hwVUPfZ/ww7ViKmXraaPKgoqKMR/6c+SBFeQ==","signatures":[{"sig":"MEYCIQD5YK5js+qNXLI657pgU4Jc+OiJhixSFwQn2Jp+rWIO9wIhAI403TXVUxap2W9WpIUcxpzXknYYtiPdzS6n2QzaoAWY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27153617},"engines":{"node":">=18.x"},"gitHead":"614128b13bfcea1efe48969313ab5f645820dfa8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-aae3928-202503251615.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-614128b-202503251735.0_1742924203973_0.7678943289646629","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-05b06a3-202503281434.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-05b06a3-202503281434.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-05b06a3-202503281434.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e3e461e20ef73fd939b53ae52bd2d60d2a4b3863","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-05b06a3-202503281434.0.tgz","fileCount":404,"integrity":"sha512-9hS52NBN0oMKOxwPC8kLW9oD33whwiASGa9kWfqWLkhXoppjO9tgwWCaTQtDwWeA9/SCnjDzTZtb9gJBQv18fQ==","signatures":[{"sig":"MEQCIHazjemSqvgDYA2qJus8+IGWEKq1/K1YvVWUAsbYdDLuAiBs/kwXaGdKwfOCoHq6E4V7SHQfxe8mNWzyyCq5wOhUXw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27190680},"engines":{"node":">=18.x"},"gitHead":"05b06a365c1d501bad6943816709a76621d0429a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-aae3928-202503251615.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-05b06a3-202503281434.0_1743172564328_0.15630472085223857","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-05b06a3-202503281451.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-05b06a3-202503281451.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-05b06a3-202503281451.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"642fe0e8935dae5c151315ed0dfae62d850bcb69","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-05b06a3-202503281451.0.tgz","fileCount":404,"integrity":"sha512-bVxIYKMvKNDMC98sEAmPE8l99vgmJcjOEzdL3C52CV0Bxbl/ramN5/wu+mZOPLp31ZMz2JHCG7enSd7e2U3+AA==","signatures":[{"sig":"MEUCIB67AOT0dEbOX4HirEZvB/eyBAQi03EselXmj1bRjbnLAiEA4VGtHNy5BXUU8CpOIE+LJIeVO2UXlWP6QRqikhSpoGs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27190680},"engines":{"node":">=18.x"},"gitHead":"05b06a365c1d501bad6943816709a76621d0429a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-aae3928-202503251615.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-05b06a3-202503281451.0_1743173604356_0.05196646877659217","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-c1b0f74-202503310858.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-c1b0f74-202503310858.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-c1b0f74-202503310858.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e982f4d48abd2fa37e12b83e1341f5834514cd17","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-c1b0f74-202503310858.0.tgz","fileCount":404,"integrity":"sha512-CEvekV/+PgAfCZJrhs8BroGyQP7ebiw28fhogLsalQTQVkLcORomL1QXUpT5xNZYOjtkzNw8/gWpQMaw3+hIWQ==","signatures":[{"sig":"MEYCIQCgEcVL85P7Xz3WKPFUx0gERRE13fHixDT2z4TXu/1XGAIhAMFg5+AebSKq1s5EAwdfSH/q2ZAO6mBAwouRvWRYUzE4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27190680},"engines":{"node":">=18.x"},"gitHead":"c1b0f74d9f35efff0f568c157d56c68f49ca6bff","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-aae3928-202503251615.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-c1b0f74-202503310858.0_1743411627923_0.4428975482770545","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-199c824-202504021154.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-199c824-202504021154.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-199c824-202504021154.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a893dc16625a75ed58d4047549fd1d4e4ca1f45c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-199c824-202504021154.0.tgz","fileCount":405,"integrity":"sha512-ltSFK89HYb6pXlwL3YOd38QT1Kfi0UUh0+DoIXEt3wXMTj0lLh2aw5VkD40fmN1qGNV52FbulGDY/vxj5oa5lA==","signatures":[{"sig":"MEQCIGQ5xiqIuTTsGtJbPkIC+q8DiXZlCSNNLEYM014YVv62AiBevVnFv3WllHP6q2xkJaoFUdGxWsaN2A6tivpL0MQpFQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27196127},"engines":{"node":">=18.x"},"gitHead":"199c82492f06960c96bea44bbff1a6d016df9142","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-aae3928-202503251615.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-199c824-202504021154.0_1743594951761_0.3244981446715933","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-a5aa9be-202504021211.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-a5aa9be-202504021211.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-a5aa9be-202504021211.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f9366d1887af2c8c68d012c3102af3e0a30d1b8a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-a5aa9be-202504021211.0.tgz","fileCount":405,"integrity":"sha512-LxGxV1j+ulciYNcZpGJ7Fcjn5OqSoKaCggTms68tjHJvUzi4S5dLLRE1z168UM2YtRBd8MMFvZSBh17TLbi5hQ==","signatures":[{"sig":"MEYCIQDmLDW9VqeuDwdkgXtNuQhhNuvGKo4gBPAsLwy6RrCYjgIhAItGXa0agSYqVAf2pjviub/XZzmlMe04i18CGvGYlh+o","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27209692},"engines":{"node":">=18.x"},"gitHead":"a5aa9be5d4b76037e367f32a3508b2fdd86d8d40","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-aae3928-202503251615.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-a5aa9be-202504021211.0_1743595973382_0.6540302577704467","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-a5aa9be-202504021228.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-a5aa9be-202504021228.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-a5aa9be-202504021228.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7b9098e86e6aa27dbc7e08ed7bc877fb3229ff48","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-a5aa9be-202504021228.0.tgz","fileCount":405,"integrity":"sha512-DFvYevd6RsemQKXSdEVa+3w5qOTg0pwceIbTS9IL4DMtSffRnh0gvjvF/0yA+30hCk1vyOe8h+7gOb+TkRA2Iw==","signatures":[{"sig":"MEUCIBZD98ojHLBMYFLDfFa17AjzgawnwZH9embSkxmm7nGtAiEAs+ussZea5XmUqs4S3kqhPGHFDMpOxnfrl1KY4NSVCno=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27209692},"engines":{"node":">=18.x"},"gitHead":"a5aa9be5d4b76037e367f32a3508b2fdd86d8d40","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-aae3928-202503251615.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-a5aa9be-202504021228.0_1743596970606_0.038715026507776695","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-a5aa9be-202504021311.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-a5aa9be-202504021311.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-a5aa9be-202504021311.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a753403dc15946375d614e6a3b8a68a769175db9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-a5aa9be-202504021311.0.tgz","fileCount":405,"integrity":"sha512-JWao+lMoqk7WrKTqbIBrs08+bOh0biv9BiSS68q4Q6SNxt8SU0Ba9f5C2uWADXKKlS1sEMl0HVtei6vCbL/KrA==","signatures":[{"sig":"MEYCIQDRwxOdNN1LhEfM5oK5TXTXoL3wv1mPznVcjfZK/MJk6gIhAN0WlnBX1EaA2WQhect1aDpuVmKKoXxyULnLOaxmXJ9s","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27209692},"engines":{"node":">=18.x"},"gitHead":"a5aa9be5d4b76037e367f32a3508b2fdd86d8d40","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-aae3928-202504021311.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-a5aa9be-202504021311.0_1743599599968_0.8206018709112215","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-a5aa9be-202504021315.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-a5aa9be-202504021315.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-a5aa9be-202504021315.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cc4e04fdbc029f782ee6c8f09d2826131c8537d9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-a5aa9be-202504021315.0.tgz","fileCount":405,"integrity":"sha512-L2kAF7NAN7PI0rX+BADWtW87b73TeXp7uLT5WdpShGfAnV+AxDHQ91HTIAP2NNpq71IHlB2HuqAtXyczV5N/1A==","signatures":[{"sig":"MEUCIDhReEJxtIUO4RTZO0gBQxEKf3ivB1oPHPuSb53L5LauAiEAjJX7NPsdDUKOv63RtVc6rmGghROB/O/iz1KayX5JhQY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27209692},"engines":{"node":">=18.x"},"gitHead":"a5aa9be5d4b76037e367f32a3508b2fdd86d8d40","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-519e42e-202504021314.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-a5aa9be-202504021315.0_1743599783815_0.42199182057267604","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-00dcc74-202504021400.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-00dcc74-202504021400.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-00dcc74-202504021400.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"80821ec5c4c1d32dc51cf235322095c8123a3a35","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-00dcc74-202504021400.0.tgz","fileCount":405,"integrity":"sha512-m/huILzvu3VVRF0M19Ro91y+FLpv2tihNf3pSGTdNLraY+dfZnPowRhyY5d/0wGS1vwEAi++jaZk1mDrM3STcw==","signatures":[{"sig":"MEUCICtM9MOEdrIVo+/k+Jt9d8FfWnvMs4gxCFzqxf5IjxbqAiEAsbhsKgWpWSub3avSq2OJ2u26gCxqbrngc1nAWRDrw3M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27292351},"engines":{"node":">=18.x"},"gitHead":"00dcc74ccc63a737902632326d29a0a945c430b6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-519e42e-202504021314.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-00dcc74-202504021400.0_1743602508786_0.12140874442892025","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-0b3e912-202504021408.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-0b3e912-202504021408.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-0b3e912-202504021408.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7961fb75e871ef060f6591df753a6c08cf3f3c88","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-0b3e912-202504021408.0.tgz","fileCount":405,"integrity":"sha512-LdfotCP9o/SxvCQe4gb7evivPKrBtGg8BKpDbs36KGT8WenyVRbFhch9G3V9L6/99YZci4yvAwzZvb8pqw//RA==","signatures":[{"sig":"MEQCIB64DbkyZ1LHYvsByKXdaCvZ+iejxwmKbnIxc3Z+vbQyAiBstbdE0kgs1iF9SHXpo5d41h7NKlCKYv5o1o2HkP8KZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27292351},"engines":{"node":">=18.x"},"gitHead":"0b3e912ff5d647b3ac6c2af4c5de5851d7bd85bc","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-519e42e-202504021314.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-0b3e912-202504021408.0_1743603006518_0.4406399123287039","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-0b3e912-202504021423.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-0b3e912-202504021423.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-0b3e912-202504021423.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8146de76044962e6764fcefd99e5b297560c24b2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-0b3e912-202504021423.0.tgz","fileCount":405,"integrity":"sha512-QfwZKVgT3Wuu3THdqPWLw6tySYd4MwdUG+q8b92SJ2E5LVi05Q2Ok0nHHYgekpoZDmLSLF703sO7+At3ZWczBQ==","signatures":[{"sig":"MEQCICMOXpkvjyuer+Mb2DjDVM7YxVLhDTtLnUzfzRzKT/olAiB1XGvB2Vw79UbnSWAD8XBmmPhlVn6hKVW4k365uS5rDQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27292351},"engines":{"node":">=18.x"},"gitHead":"0b3e912ff5d647b3ac6c2af4c5de5851d7bd85bc","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-519e42e-202504021314.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-0b3e912-202504021423.0_1743603916193_0.37568360395543077","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-fdb3151-202504021603.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-fdb3151-202504021603.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-fdb3151-202504021603.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e0c800512b9400603762741dd40f5753608b0fb8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-fdb3151-202504021603.0.tgz","fileCount":405,"integrity":"sha512-6b1H8xXnMKtch1KEhsX7nIWmpGYwecZyAYhLj6I5ZLYvFfynb/6RF5do03ZLLKwR6Ns+iXjQ+MR/wTiHV9T/Uw==","signatures":[{"sig":"MEUCIBI+Dg2cHrmWld/+UkbZp6ThCTkGt12yCVRprwIWuIBsAiEAlfcTOuATSfo+c8IFfbQsXXmKDgSwj70wN1iwaFAY6q4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27292528},"engines":{"node":">=18.x"},"gitHead":"fdb3151e8d357419113fd582985c3fbe61a24681","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-519e42e-202504021314.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-fdb3151-202504021603.0_1743609911188_0.2761683866830029","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-ffe93f1-202504021621.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-ffe93f1-202504021621.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-ffe93f1-202504021621.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8dc6c0b5083fd0fbe12ffa8b9560d270617dfeff","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-ffe93f1-202504021621.0.tgz","fileCount":405,"integrity":"sha512-NY/TMM6arZUVU53/i9xXXCwkwa6cKDnSHRdfKzYusk91dqH7OTOEngTPPKxafbpavFg9VHEp7y4ixP8WeVXjRA==","signatures":[{"sig":"MEUCIQCxQhJTc9x4A1ltD3rZNebTs+RrRPQVnDRx//0GPWhx2gIgaXNLdVGpaziNda+tNbH8+MRfJxALZrKWSXYojfeGPcw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27295701},"engines":{"node":">=18.x"},"gitHead":"ffe93f1caa725bc9c4137a3826ffa23f38675a0d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-519e42e-202504021314.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-ffe93f1-202504021621.0_1743610957323_0.9303835143536865","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-bd18f4d-202504031046.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-bd18f4d-202504031046.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-bd18f4d-202504031046.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a7018ef0eda4b8648842ed24f997ba6819e0a2bd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-bd18f4d-202504031046.0.tgz","fileCount":405,"integrity":"sha512-tUE3bDXkBJtmH84vaRQ6Yvh+E5y5FYKD1wuwE9vkXyr9mI5arU2Sqf9hDd9nuZxyIsNI8FG4sFylczLTc1rHgQ==","signatures":[{"sig":"MEUCIQDFXeU+vhzwLvv3tmzqwcpcq3p/vfmf0pz0Q87FJ5VrMAIgF5KbB7TomNVzVkSWRsumIYulstFGexPde6Q0seIIK5E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27299203},"engines":{"node":">=18.x"},"gitHead":"bd18f4dcffb2593607013fd42d1d07a41038c486","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-519e42e-202504021314.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-bd18f4d-202504031046.0_1743677281725_0.12099210450668751","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-3883ff2-202504031344.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-3883ff2-202504031344.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-3883ff2-202504031344.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8ba3dad1960a5f6cf3670bc26fc8c248b3a434f9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-3883ff2-202504031344.0.tgz","fileCount":405,"integrity":"sha512-ge8Es/2SAXvpb5e3EqGZfDAXfXQPkCPJoU9j1LruY6ayGY+kl3BopmTqPzF8Y7jbXlzT7qg87clx8kJpCtQe2A==","signatures":[{"sig":"MEUCIHugMDmbSJ9JdBG92+jXfLepnba5qMdaMKezVZJvSczjAiEArWtasOCk8HrouytlMyBnEziBnnKkjtTu1BTf8VF+mk0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27300532},"engines":{"node":">=18.x"},"gitHead":"3883ff2f41d168924e8ed658638e21657a8e18aa","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-519e42e-202504021314.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-3883ff2-202504031344.0_1743687943118_0.15829460645044846","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-125bdac-202504031412.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-125bdac-202504031412.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-125bdac-202504031412.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c7f37f8e1a0057d1105af93575cacd26550c2b0a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-125bdac-202504031412.0.tgz","fileCount":405,"integrity":"sha512-0IZo73Z0fJ/sS0+Twy/8nyg78MxfpUoWha0NQic+t7v1cJXebsJIjUkWSbgfb+vGNAySlZR4uvUy9AhYwovBqw==","signatures":[{"sig":"MEUCIQDAJnjmE/smfDWI/wnSRfD5AnNIi6FiHUF0bthyQEwwzwIgYd2kGpPtf0ZyVUwBbfqFe/iCkBjBy7iPqblNLmpvHIg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27300928},"engines":{"node":">=18.x"},"gitHead":"125bdac9a8a690c6e43c5355bb0ed9292a51b772","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-519e42e-202504021314.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-125bdac-202504031412.0_1743689624887_0.707230995603898","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-ac61ac2-202504031440.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-ac61ac2-202504031440.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-ac61ac2-202504031440.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"24cfd437d11e3f4a148a8f4af8f1e6716b899187","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-ac61ac2-202504031440.0.tgz","fileCount":405,"integrity":"sha512-ArTUkc6e0x6AlTee4Aph0ff3hKknnpY6Zj3cd+lBCv0RdGc2N5NOm6JlFFWd6pxItYVw44V9cFl8v+PnRZ57HQ==","signatures":[{"sig":"MEUCICnQajuoi3KV7lzhKVfEzWKU07cfB12ATMoJyGPgysbYAiEA/dqNwnruFZvbBYqwxPJnWQrPuCI31Vrsc7tMIt3MvoU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27302057},"engines":{"node":">=18.x"},"gitHead":"ac61ac2e6db4ab88df7bf344a19f131c688ed806","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-519e42e-202504021314.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-ac61ac2-202504031440.0_1743691328137_0.7003180717205284","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-ac61ac2-202504040811.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-ac61ac2-202504040811.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-ac61ac2-202504040811.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1dc6c2388306960c4073001be0d25d278264a5a8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-ac61ac2-202504040811.0.tgz","fileCount":405,"integrity":"sha512-i75O7eiLxjsRzX2U0eOqAv6+urwlcZnfHOkbnmoyna2NFWS97NSzyyaj73d4KIkbRQDyMNM1GkJ7Zj7RaGeJGw==","signatures":[{"sig":"MEUCIQDs+ZyF14WRyMs3K6w3x47vYjlNj0ETzx3NX5RGLyMgvQIgWqG+K3OH91mCwYCn9VYr4Nmc+1mjMiXDebgCPfzBXK4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27302057},"engines":{"node":">=18.x"},"gitHead":"ac61ac2e6db4ab88df7bf344a19f131c688ed806","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-519e42e-202504040810.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-ac61ac2-202504040811.0_1743754378053_0.4160961378803143","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-5202224-202504040837.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-5202224-202504040837.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-5202224-202504040837.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"42c0b82b9692b0dd8cec6337122a95b654650664","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-5202224-202504040837.0.tgz","fileCount":405,"integrity":"sha512-+yzg0pDwy0nhepz8vThuJwpJH6Orfu4L5gd/rpiNIeoRzxXCOC+A+9JW8ETLG1ICVBbCXCfd1dWGgYsMl+u7OA==","signatures":[{"sig":"MEQCIGFYtsNOrlkbdYIHhYvM8HiV7IUXP9eRetFpkXs3FbdqAiB79w0ZGe/b792knMM1Slqcev3pIme5dZW+Duwg0T3YFQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27302719},"engines":{"node":">=18.x"},"gitHead":"5202224cc02a5a143a85a0b5c89dae3f38986412","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-519e42e-202504040810.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-5202224-202504040837.0_1743755959412_0.31296418392096537","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-5202224-202504040852.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-5202224-202504040852.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-5202224-202504040852.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5ad68a7a0642267b163f1710ad0710374cf395b3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-5202224-202504040852.0.tgz","fileCount":405,"integrity":"sha512-n+JoVvrT9NiBEq3PJaKXsZ1b8lf8gFSgeXBG7dxfwlIo8IfoGZXem6jru495hpgTeroMOsB2Wu/8fBekwuzMSg==","signatures":[{"sig":"MEUCIBWdlwdrWJYbcJJwMj3r17VftxwyPloqIR8gPnswt6aoAiEA28JYH9ilQs/qKTwb8dfzzxk7ALLP38U8+yOAMrblGRQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27302719},"engines":{"node":">=18.x"},"gitHead":"5202224cc02a5a143a85a0b5c89dae3f38986412","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-519e42e-202504040810.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-5202224-202504040852.0_1743756860995_0.8768650877461148","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-5202224-202504040905.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-5202224-202504040905.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-5202224-202504040905.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b85a25549cf253f472dbcddd97b578d2ad5b73ca","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-5202224-202504040905.0.tgz","fileCount":405,"integrity":"sha512-/ilqANf9kfB85Sg2cff3qlp98vF2PS7ZWK32h6AJB0ZNIzTJGLB4gUDTr5WJxS4/Fz6MpeXWrAN1sVulT9JdYw==","signatures":[{"sig":"MEYCIQCYe2tj5ry8ReffLC6hU3nFtMMHSWSqoFMvd/hEiIw1QQIhAJsTXR7hQeM8uw2bv+G91qBRH9FrUNFPTNUmfmDkbcaA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27302719},"engines":{"node":">=18.x"},"gitHead":"5202224cc02a5a143a85a0b5c89dae3f38986412","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-519e42e-202504040810.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-5202224-202504040905.0_1743757606070_0.09458303149819791","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-3d2c388-202504040947.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-3d2c388-202504040947.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-3d2c388-202504040947.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"66e8a6c6ffcf7b1067773bb642e9ffe2ff328c26","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-3d2c388-202504040947.0.tgz","fileCount":405,"integrity":"sha512-+lHa6d/FtFMA0vkRTE6T2KU/PnKZruFdibmkjrPWlegPiWiqqb+HCLR14E49vMrmxkEiJF3O3RFFbecstEBT6w==","signatures":[{"sig":"MEQCIGx7Ft+lKxx2XlI1Ryxmqo3jgV/7PvfefbKL9HrCXlVnAiAUQqcB9LVZUuRB9sEAsnLlktxLcUk1sn8Dk+nA5KWscw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27324131},"engines":{"node":">=18.x"},"gitHead":"3d2c388300e8d1304403efce15786f34ea0ba2dc","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-519e42e-202504040810.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-3d2c388-202504040947.0_1743760118731_0.19136447057220907","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-3d2c388-202504041026.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-3d2c388-202504041026.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-3d2c388-202504041026.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"86e8e2e131f92903cdcc66b32633a3bf1fd50299","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-3d2c388-202504041026.0.tgz","fileCount":405,"integrity":"sha512-tOAt6ncoTSSfvt+d8jj34PjePujJj1zQEYuIMaFQhkRmNWNeqPyQsucgUYULanfKJfY49vMtyQyOFGSqHScZKA==","signatures":[{"sig":"MEYCIQCVpEMUfbWrh+SseFeK9TFhaMGOXjnv7aO/wi/mMkjA8wIhAPdXqdZAYIFJoieFLVSTJEZEIYW+CKLSKr6cc7DBN+u4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27324131},"engines":{"node":">=18.x"},"gitHead":"3d2c388300e8d1304403efce15786f34ea0ba2dc","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-519e42e-202504040810.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-3d2c388-202504041026.0_1743762481674_0.8413195479686231","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-43d694f-202504041321.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-43d694f-202504041321.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-43d694f-202504041321.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a94a5af0cd61b550085c470933dace0a3a468298","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-43d694f-202504041321.0.tgz","fileCount":405,"integrity":"sha512-WTrwjrr7jdHLKR5JIt0eO8kzDPPRZ6GNHAo0u1nCEh/apVaBnroXT4fv08a+h7TSVOnaleTcpc6x1BUwWeN5Rg==","signatures":[{"sig":"MEUCIEFrZQQ+woYfB+kmFW0JIKjvsVVDE889TzBRIItyf9NlAiEAif/qNOoT/u/TPscv96kNnBsIJaBx2eMAhVdo9qg9K4Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27324131},"engines":{"node":">=18.x"},"gitHead":"43d694f35746a9b725133292ccbe4b73ba00df93","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-519e42e-202504040810.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-43d694f-202504041321.0_1743772957959_0.7695424849675587","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-43d694f-202504041533.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-43d694f-202504041533.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-43d694f-202504041533.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1efe5c93829b88ba28a46667b4db656c3f95c9ec","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-43d694f-202504041533.0.tgz","fileCount":405,"integrity":"sha512-3WmeAHPRvP761CSLivn+23cbQFCYepDlxrwFop6OGeFXg2VVNvfcX5uLjdSckrB1gyAy+Is8ekD9sI4kTJ/Xyw==","signatures":[{"sig":"MEYCIQDqMMSEL9h+4+mgqubXKooqLPJzIqSCBnpzNSH2n8YxeAIhAP57BpYhtRtSmxkLVEHZCgBq0MLMqwkkfEbBoT7/Jd5P","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27324131},"engines":{"node":">=18.x"},"gitHead":"43d694f35746a9b725133292ccbe4b73ba00df93","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-519e42e-202504041532.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-43d694f-202504041533.0_1743780898410_0.27125350798155834","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-43d694f-202504041540.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-43d694f-202504041540.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-43d694f-202504041540.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e77faad74d41887c5b39f64c84858afb663c8fc4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-43d694f-202504041540.0.tgz","fileCount":405,"integrity":"sha512-ba+dPj8ERyMVAXBaiinK6h8eWnc+b7YJI/NLI2raJLh/WC12KqiuCbHnQJultzPvhAAXkFax73r/cveyibzd6Q==","signatures":[{"sig":"MEQCIAkj3ngTAN6qWoXISxIb30QrM2t2EQtf7H8WoK8Tg1QlAiBj2JwmLRTq9PqbWOIaqVsBEMOseTlr03zFMRB4C48HBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27324131},"engines":{"node":">=18.x"},"gitHead":"43d694f35746a9b725133292ccbe4b73ba00df93","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-566e8c9-202504041540.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-43d694f-202504041540.0_1743781332403_0.4754020690559517","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-7b4a17b-202504041615.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-7b4a17b-202504041615.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-7b4a17b-202504041615.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9785bb9d89925a56f57f13f9a9be3d5d43be8e64","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-7b4a17b-202504041615.0.tgz","fileCount":405,"integrity":"sha512-uEH6SMIuhorbXXXjknHChQ8ryb914fvvhQK46VL2giRJ3tuiLSD7rRztwpLRqz9NqMWdrir7gjKIQjqGLiMPgg==","signatures":[{"sig":"MEUCIQCbxenhtPUVw/egH27PansK2/SXeR4a8HuySnx9oBGqXAIge0sG+DYbEy9wG1Kq4XMAPhFOTZVuKkY5tiNbig3xAAk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27326435},"engines":{"node":">=18.x"},"gitHead":"7b4a17b08c70bdc3afc1ae866b6be7fe1d896117","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-566e8c9-202504041540.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-7b4a17b-202504041615.0_1743783388711_0.7520694894058051","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-38bd0ee-202504041630.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-38bd0ee-202504041630.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-38bd0ee-202504041630.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6ab610b8056633f0ef691637d5395e4994a86069","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-38bd0ee-202504041630.0.tgz","fileCount":405,"integrity":"sha512-J63fc66BWW6UTCrIEDhksHuHyvm4++3McYZwSFEFLjzNxaWY5uMWvXtMqc5JpC8TktL/ra1aKMr4AsnTJIE8TQ==","signatures":[{"sig":"MEYCIQCzwM63WUazCMRXUjN9QZsbzf1wLBY8IiqHhMXZE7+EsAIhANSYskbXlMx9pJiQ5E+X74x744+ZiyyaBa6QvE0zq2bf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27339878},"engines":{"node":">=18.x"},"gitHead":"38bd0ee64b81abdc6100fd82910f3b95deb1dc13","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-566e8c9-202504041540.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-38bd0ee-202504041630.0_1743784334584_0.1570994355512796","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-aa8462b-202504041653.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-aa8462b-202504041653.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-aa8462b-202504041653.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7f1e0fac7183be2dd07509f7c2c897c9dcdd1b49","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-aa8462b-202504041653.0.tgz","fileCount":405,"integrity":"sha512-IUt6MXavcieQojsv1BuCob9mpoPqhhs04eHLME4Ugrm8gLSzZm2GluM5PPAx1tRB6eQ0D0w/O6HC8EiidwWKyg==","signatures":[{"sig":"MEUCIQDCwIozy3JLF/STlmYb6us4SqgK+yKeDEfKNiw+UYZgKwIgWJhRjtv+pdHb7tTVh/7DX3v7meEYouuG2wzAoEl+Ws8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27364889},"engines":{"node":">=18.x"},"gitHead":"aa8462bbd631ff76f61de22990eace2ee1b53fd2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-566e8c9-202504041540.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-aa8462b-202504041653.0_1743785686186_0.30793983527091906","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-bdca7c7-202504041819.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-bdca7c7-202504041819.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-bdca7c7-202504041819.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"60012e47872bd9f78955c34fb26a1b294250eba0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-bdca7c7-202504041819.0.tgz","fileCount":405,"integrity":"sha512-YKZL2jbl0w3lhZOMzdBXWmdPAiTOVj1WSlbOvpOOF/5+tmGNlsxBU+Eb9/KwUc44xnPJaww5rMunqGvNBrUl9A==","signatures":[{"sig":"MEUCIBqMuBt/ccGyZ4hHP+ks2MCm67immcAVhcoHKw33nlRvAiEAx7OqM8bCId3vp8NeLnN64aDBsbqGQriP/GUlV+c1V04=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27365086},"engines":{"node":">=18.x"},"gitHead":"bdca7c77ba64af05d69120aa21a1b5da24eae533","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-566e8c9-202504041540.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-bdca7c7-202504041819.0_1743790848301_0.41840279475541386","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-00f475f-202504071404.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-00f475f-202504071404.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-00f475f-202504071404.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"45dcd5ab41855b3f088968b22b430d8e90bb00c3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-00f475f-202504071404.0.tgz","fileCount":405,"integrity":"sha512-CaLVCgtNh8knn7bTmTRC6Ay5fc16hPY7k6RWJtMNlOuQ6VOMeaZlaNzvLTNfhyQt49La7qXyQIA6eNkA1pMg7A==","signatures":[{"sig":"MEUCICdsaYtYoKJd5hAdnsEaZ0KtJxshfH6zpwHa3IZUo/JQAiEAyQoDHae0Rgy3W1/4J7ocNcLOLkFNWgckpJjaIL0U2fI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27365884},"engines":{"node":">=18.x"},"gitHead":"00f475fc7a4c744d5862a2084efc23262c221b91","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-566e8c9-202504041540.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-00f475f-202504071404.0_1744034781619_0.7590701952222207","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-1f6b33b-202504081441.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-1f6b33b-202504081441.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-1f6b33b-202504081441.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f8ab15f57ea6dc7115eb8f2efd6daf97ea8c9837","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-1f6b33b-202504081441.0.tgz","fileCount":405,"integrity":"sha512-WqhjeMXbBv4PqDZXPbC8E0/yqi5bWpYZ0LmmmD2lvYwVcGtndUQvSxM+iZv+CKOAz8R6gS46w+oCLkLGhKGqaA==","signatures":[{"sig":"MEUCIQCTbRG3jcGbFL/ojUaZMpfVZhwYh5cc75sjIv7eSJtrUAIgQXaNzOASc9czZxtB8qYCayQLv71VPg5MV/8kgu3OLBA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27365884},"engines":{"node":">=18.x"},"gitHead":"1f6b33b99cbbbafb60551a520b8aebb2173361cf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-566e8c9-202504081440.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-1f6b33b-202504081441.0_1744123381464_0.36321469462770906","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-1607252-202504090858.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-1607252-202504090858.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-1607252-202504090858.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"32ac8ea3338f5e84c5dd136231992abd19f11e29","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-1607252-202504090858.0.tgz","fileCount":405,"integrity":"sha512-Z7gQEJx4Uzk4O5g4ZdW48MsGn9RVopEuP9wauXO2ZBIp6ZnA7psA+GqAc6O1qnbNuAsXrBljaSsaCohqdw16QQ==","signatures":[{"sig":"MEQCID/kqL48WxyCbgPO0Vi/FoPFEqTiN6N4pUj8cGzgoy/hAiA3fyuQTrqnM8lNyDMHp0LgcaMBwzsR7gUbw6G8wPx0Ew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27365890},"engines":{"node":">=18.x"},"gitHead":"1607252b153fc44362c2d87da25f7fb1492c3d13","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-566e8c9-202504081440.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-1607252-202504090858.0_1744189173137_0.9527129430152323","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-cafcc47-202504091045.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-cafcc47-202504091045.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-cafcc47-202504091045.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f62cb7759efaae757371ffb528d35814eea702dc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-cafcc47-202504091045.0.tgz","fileCount":412,"integrity":"sha512-JX0zBGQH1W1GjhiB+3mMm81Ysj4i4PoU8RIhi160IIzzg+hwyxpDyuYKgBmAmGEsWV6PLzi+8TSjfTu4lJn8eQ==","signatures":[{"sig":"MEUCIFreQ0UX+2Drpdo58YKbEKi+GOUD75I/E6p1FPl81X8mAiEAh92xjkXA3P57eLAlqjx7w4rSBfSWnsdkgxklBMWMcGQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27546114},"engines":{"node":">=18.x"},"gitHead":"cafcc47634b46ee5ecd708fa9edac3073ed46a3e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-566e8c9-202504081440.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-cafcc47-202504091045.0_1744195612698_0.9277850139589616","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-61941db-202504091214.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-61941db-202504091214.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-61941db-202504091214.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7990fd9af30ef53b0290fb71de51a798b9c91fa7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-61941db-202504091214.0.tgz","fileCount":412,"integrity":"sha512-kwuy/Zwcpbg9V6YF4jpXg4U8CzcA8FbPT1F59USx9Rb1A5nX9Ea0wtu9S7HVslT8z3hrTfq8vVWsTxZQizqsLQ==","signatures":[{"sig":"MEQCIDMgcbKyk8EL6W9Y08l0cfXaIINXRml7LuOFhCtWwBf6AiBJ+T6mDd/5TxhFYlPe08eqRL0nBwv0MeK34N8TVoesvQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28591282},"engines":{"node":">=18.x"},"gitHead":"61941db929cfd4064af40e0258001799736e5630","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-566e8c9-202504081440.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-61941db-202504091214.0_1744200972413_0.03824303503580495","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-61941db-202504091229.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-61941db-202504091229.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-61941db-202504091229.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2f088c532833ef11c1108d209561d2e8fea7f2a1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-61941db-202504091229.0.tgz","fileCount":412,"integrity":"sha512-yExBxL4I7YvPS+KaON4bpGLuSPCek03JGjA+ptuyZKGlYJz9i8j/rWTvtgRfl8mTZM4eyru3YlDqhbrGm4aEWg==","signatures":[{"sig":"MEYCIQCcGvLrUiUdvM6OYokx2hDl8876Dli0Ps4u3E3J1fL/EwIhAK6o4LE3kDBVXpNUS0Wlu6xCaIMkAWM1rOIcPJ79VEp0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28591282},"engines":{"node":">=18.x"},"gitHead":"61941db929cfd4064af40e0258001799736e5630","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.7","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-566e8c9-202504081440.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-61941db-202504091229.0_1744201884195_0.9456482553901011","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-c18ac15-202504091329.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-c18ac15-202504091329.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-c18ac15-202504091329.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6a3e9ec6f67ba7696d6b30101c2625291e66c73a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-c18ac15-202504091329.0.tgz","fileCount":412,"integrity":"sha512-d1YmC7GT0VOwLQ6NKCffcH2fjBb3lOgI1yQ7Pbb1baSzW1+/gHe5mpkxkQw1L+nu+l/Zk+YB+cxGxd+0Of7OgA==","signatures":[{"sig":"MEYCIQDwIA26qxw0TZ3cf8+Y1Dn5VGzOxoHHlJ1jSHvYJ1BvrQIhAKIndh7W80AT99+K1Jl0cWlCmxL39GJMy2JziPaiN4CI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28591282},"engines":{"node":">=18.x"},"gitHead":"c18ac15c05338ff36b67f8f013dc761aa68137f9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-566e8c9-202504081440.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-c18ac15-202504091329.0_1744205439312_0.07610770834373959","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-e58f361-202504091611.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-e58f361-202504091611.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-e58f361-202504091611.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"125e9b628b8ad283b7d3124f9f1ef054cf435ea5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-e58f361-202504091611.0.tgz","fileCount":412,"integrity":"sha512-hGbB2p7lEolug6u96dlNJvtGMZsatKFjIqAuK9NP+x3/JijE6kinBbhq6WR89mcaJL43ld3MgqJF3kQjcNPiPg==","signatures":[{"sig":"MEUCIF8FNfT5cMKrB+0JpFK6SZ6aZTcUJsbcE6X9aBr/pe5cAiEApPjoJ6QD4P/SDjalHuIyaQyUGpCHb+5XNcBXNWSL88A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28579490},"engines":{"node":">=18.x"},"gitHead":"e58f361acfc4b4ff5c087981e3a82ba3da4b12a8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.15.1-566e8c9-202504081440.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-e58f361-202504091611.0_1744215195011_0.9484004849072138","host":"s3://npm-registry-packages-npm-production"}},"2.15.1-e58f361-202504100916.0":{"name":"@flowfuse/flowfuse","version":"2.15.1-e58f361-202504100916.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.15.1-e58f361-202504100916.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"de3c6c8a4e56f625a77963a5f2a9ef9f94126f5e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.15.1-e58f361-202504100916.0.tgz","fileCount":412,"integrity":"sha512-Fll50D6N53fc54ASNiUD6+ky20DgG6kRVoesFdCHeuf8DdAczDyq6A5luaQDMYQYr0q9vRpEKmg7EDgLAtqG+w==","signatures":[{"sig":"MEYCIQCEyYKBApRXf70K/kE4zKnuOlNeNO3nVwGv9WmM71Ti7AIhAJeSkAx9MJ1hB6XMJ0EXzrXLTJaVC9WyAflN+1uig3eM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28579490},"engines":{"node":">=18.x"},"gitHead":"e58f361acfc4b4ff5c087981e3a82ba3da4b12a8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-93eef4f-202504100916.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.15.1-e58f361-202504100916.0_1744276692987_0.34595537930686726","host":"s3://npm-registry-packages-npm-production"}},"2.16.0":{"name":"@flowfuse/flowfuse","version":"2.16.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0075341e607edad1ad109109839fb1e51646b028","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.0.tgz","fileCount":412,"integrity":"sha512-524BIYUGW5GHgEcNIX+n0MBfG93Tm3zFfLYRJDGP6kw+JCZYy3U/VZqZuonYdLJ/PJxaHYFC/8utTy/gwZqLkg==","signatures":[{"sig":"MEUCIQCGXUN77UuFkyiruprOo5PyMDmdnaBnmZykH9zLuuNRLQIgRqOmCSIlcbofDrSSKBrfSVbDsl7LIT6UW9SToorPt2Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28579990},"engines":{"node":">=18.x"},"gitHead":"e842c4c73e27d370e59437e887fad7d2252cca90","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.16.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.0_1744277047232_0.47094116671402375","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-e842c4c-202504100937.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-e842c4c-202504100937.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-e842c4c-202504100937.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8ca60b47e8f35338a14bbe682265f25868a39afc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-e842c4c-202504100937.0.tgz","fileCount":412,"integrity":"sha512-mUGSxNWWMdGB8I3gG0jmTY7yPvpynzrG4/AJA6nPo9tX7oV8a3sdt2d67FCYD1Xi1yS/npPfdjx+sVfpWnxRrw==","signatures":[{"sig":"MEUCIQD76Kc7XCO5LmjZc4mRj3JSn3GObm1Vd59mywvKsxXv6gIgVjJ7qm0QKIaSCeEuR/o+eelxSoMLZyctvJy5hDeCGoE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28583171},"engines":{"node":">=18.x"},"gitHead":"e842c4c73e27d370e59437e887fad7d2252cca90","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-93eef4f-202504100916.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-e842c4c-202504100937.0_1744277918463_0.25410813669373056","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-63fcdcb-202504101659.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-63fcdcb-202504101659.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-63fcdcb-202504101659.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"45067f5dd2fa3356c892cc0dff92777e68bc4a32","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-63fcdcb-202504101659.0.tgz","fileCount":412,"integrity":"sha512-iyF/Ek/JYDtF7JCoVDo0CFXuguTP2PfIXXB4QFKoSyY/QiQxclu8DCME1yx82057vy/OjAecwaoHGagOtISQaA==","signatures":[{"sig":"MEUCICx/C5TuoeBmFVAi6My4MP6YCc8YuX/gYBGTMZ0EdAy7AiEAo+hJ9tX/O6Bm6RFubrYmaFwc+HSQFy2Tl/F485LkLIA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28583662},"engines":{"node":">=18.x"},"gitHead":"63fcdcbd6012f53883c4df786ddac7d595390349","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-93eef4f-202504100916.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-63fcdcb-202504101659.0_1744304455657_0.3892428705814095","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-63fcdcb-202504140625.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-63fcdcb-202504140625.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-63fcdcb-202504140625.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e46c6e5f64e6885423e798b4c99919082db5ac96","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-63fcdcb-202504140625.0.tgz","fileCount":412,"integrity":"sha512-SFh4Dz6IhcxHQN3LnEu7xQjpcAnOSxTyV8MVmCgAf1o75E/dNXOURPpFTeDhcecQEPmxyUx8Rk+ZhbjSjNUqEw==","signatures":[{"sig":"MEUCIGjgb0e9yJVfEKaIs3K/LDRWSiaZc5Womvlnw5WkiPTKAiEAy/YU+sZSVN9UbThsLVgdaGtTzg7VoJKoalqaQZMekoY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28583662},"engines":{"node":">=18.x"},"gitHead":"63fcdcbd6012f53883c4df786ddac7d595390349","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-93eef4f-202504140625.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^1.1.0","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^1.1.0","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-63fcdcb-202504140625.0_1744612036555_0.13159507879533328","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-f19e905-202504141046.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-f19e905-202504141046.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-f19e905-202504141046.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3175b9deb722e33d00c3117c808030f542e41564","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-f19e905-202504141046.0.tgz","fileCount":412,"integrity":"sha512-DtA9Clhza8BFz3cWt7ourGsuwf4syQyC8SGfZB5HfV3nPHu0nFwEpLYY1ruqgy2wpMZv7G4qwqqKUXi7UYmkMQ==","signatures":[{"sig":"MEQCIANYIvQjoP3rK/FsAIvt0pulQ4D5hyM37Xk7uclFMzj5AiB1LlENfzh2QuCh2KNg6B/4udvLAvQUYLtz5hr2F3zwfg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28583662},"engines":{"node":">=18.x"},"gitHead":"f19e90543dad9852d434a9df6fd2f7eefa9907ce","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-93eef4f-202504140625.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-f19e905-202504141046.0_1744627663785_0.6906614568918943","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-f19e905-202504141229.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-f19e905-202504141229.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-f19e905-202504141229.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ddf581145e2b0f134f23d2608a74815c02ca5d92","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-f19e905-202504141229.0.tgz","fileCount":412,"integrity":"sha512-BAw2Q1fU4MyW6qiNoBjtCiJZ5JGUD6/5f9b0o6l3X6zsUC47F4hOtKmPdKuQAsJya0a3Opf9CJTJXxMhnd2QGg==","signatures":[{"sig":"MEYCIQDhIAa7J80yG5vtm5AaGvlEDqihNUfisKkDrLVAIMgbMQIhAN/4sbgAgm0bvqQZvrgEVLPMrVbhnDCPyw4aesRoBHHH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28583662},"engines":{"node":">=18.x"},"gitHead":"f19e90543dad9852d434a9df6fd2f7eefa9907ce","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-93eef4f-202504141228.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-f19e905-202504141229.0_1744633855466_0.9198474221702939","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-daf1eb4-202504141658.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-daf1eb4-202504141658.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-daf1eb4-202504141658.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"740a768b3dedd740d762115385b0304df17f57e8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-daf1eb4-202504141658.0.tgz","fileCount":412,"integrity":"sha512-ZYPMxAZibpJzIBf4LKrhc3IHPMNdDlpY5Ks8UnJquVbKPQIZuqxYHtf4GMnhgKGzPnXJ+XxBfF9hF8crhQO2EA==","signatures":[{"sig":"MEUCIQDtx2SYPWURAhxGdT7tO+4R4qVz+uc0nDsiBmhX+5cB0gIgXs9klF1CqWSpCoE7cvmP3ZrY/VyclCiJmi1DwsLL4dY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28583662},"engines":{"node":">=18.x"},"gitHead":"daf1eb45f5e8f324fc88b072656ef0509fa0d507","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504141657.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-daf1eb4-202504141658.0_1744650012064_0.9177712931177406","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-daf1eb4-202504150619.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-daf1eb4-202504150619.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-daf1eb4-202504150619.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"50df7f9c4b88286ebaba2a0c35f371deb6c0517d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-daf1eb4-202504150619.0.tgz","fileCount":412,"integrity":"sha512-c9nKMQYOOTg40I58RDMzrmNwVbRt9g28Mkq7lEDFcPbjc1m/bQN/LC1WhQav/RSKRj0S4bo8rwQdtsB5LhNT2w==","signatures":[{"sig":"MEUCIQCIZqsRKhjuKN+F0CO4oBJmAlcUKHV/eDKrmp/F4XCw6QIgIKANXVNQsdwQvHLJb7tKccW7WJtOMkYccFPoioFxGU0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28583662},"engines":{"node":">=18.x"},"gitHead":"daf1eb45f5e8f324fc88b072656ef0509fa0d507","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504150618.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-daf1eb4-202504150619.0_1744698056724_0.24367630182228894","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-e959f76-202504150957.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-e959f76-202504150957.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-e959f76-202504150957.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"999d98cbaf7f99399cef421d4120194d58ac0396","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-e959f76-202504150957.0.tgz","fileCount":412,"integrity":"sha512-0IBlGP+6c7ftQJjnVWNWjfHWQM2f16Jt/p+NBgbImjUf2A4cjXL/zbUTUv1bpfVjz84ueEt/fsT3ccgOinvceg==","signatures":[{"sig":"MEUCIQCe5s5thXCzQTTFBQnlM5hVfCNYshLar3edhlyz38R9RAIgUNb04aAD9giYBEb1ulZYdIEgCHOfh4yxStFcgS627uk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28583576},"engines":{"node":">=18.x"},"gitHead":"e959f76af8d82a273edf409624333f955ad53ad5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504150618.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-e959f76-202504150957.0_1744711124977_0.7266752151511655","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-e959f76-202504151012.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-e959f76-202504151012.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-e959f76-202504151012.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c2e62672908fa98b6ed864f151f07bf6df719c6c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-e959f76-202504151012.0.tgz","fileCount":412,"integrity":"sha512-2f9Qduznii/F2TKzbMO+VQGZp0u9XhmDOTCbghigW/NurKAFe8gARPdARImV1odOL6i0WcApyU6ac1zp84wx4A==","signatures":[{"sig":"MEUCIHcX/EYzZIpnSQ7MsU3t5aVDGy8dPdD1Cr8ULJSaVWJcAiEAseGDVESZ2/kI9IAl7x/J63N7FZh8fEdHr7h71aVLuyo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28583576},"engines":{"node":">=18.x"},"gitHead":"e959f76af8d82a273edf409624333f955ad53ad5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504150618.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-e959f76-202504151012.0_1744712040253_0.87633140163075","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-1141a98-202504161330.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-1141a98-202504161330.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-1141a98-202504161330.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f4927a9ef866b0d01ac71c0c21a82153d8300729","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-1141a98-202504161330.0.tgz","fileCount":412,"integrity":"sha512-lprlay/nbvlunJyUkmD/bP5VycntZqmtYBVs/0jJHxsIGHcy3WILklYYZJftw1lnvOyD3Rnk3RMq2kSlvfmorg==","signatures":[{"sig":"MEUCIQC8sOCrDorLJdLF/rLdcxhFnDsv0RNqpt3EY2BJLpe5YAIgEEkQOJhUkzvFbGFymq0OlL+3M06xd2HuCbAvhJbMRpA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28593237},"engines":{"node":">=18.x"},"gitHead":"1141a98f165834246b4bc0cc2a47327a72b54311","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504150618.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-1141a98-202504161330.0_1744810320577_0.2287534707094454","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-5758b8e-202504170945.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-5758b8e-202504170945.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-5758b8e-202504170945.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5ce1b49cb2ccada4ef5c3be42cd9b644d84814a3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-5758b8e-202504170945.0.tgz","fileCount":412,"integrity":"sha512-cm/Tu97jmK4iRls4Mubpil/kJTmbT8vDVyI/L5jm2QkMfbu6R+JEbW+ylBm3FhPTAjPaYKQgg+Mw+D/Gd263vA==","signatures":[{"sig":"MEUCIAwwZTJ/EpiFS0/Sm8BWlOB4e3z7yehLkUxRwUVgx3P6AiEA8DTvy3EH6CywUXoxdq5gHnk9CMU+F2eMOGcAh8/BYVY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28595200},"engines":{"node":">=18.x"},"gitHead":"5758b8e36bce35c4ea8901407a283ccabee16a61","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504150618.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-5758b8e-202504170945.0_1744883238203_0.012301555493454464","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-3c6cd1d-202504171101.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-3c6cd1d-202504171101.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-3c6cd1d-202504171101.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"505386b88a4669331d6c2118139810015ee30383","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-3c6cd1d-202504171101.0.tgz","fileCount":412,"integrity":"sha512-b6WaTKXYdnJ6wR9ATATiMr8/l64zyy2hlaXduKcAgEA/Z2fszY4w4BB4sEn5731nZtquc21Tgaodwlf2jMRcRw==","signatures":[{"sig":"MEUCIER3xaNwr9SJUH2e2Zblff6IybcwCpbUqAhBYf9qIg9EAiEAkWpY3IgEwTaUz5gP5Flp0CNyrnup9kXKQgmFsr3bX6E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28595200},"engines":{"node":">=18.x"},"gitHead":"3c6cd1d1e20b11e29a63124aee18325a6cbd702c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504150618.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-3c6cd1d-202504171101.0_1744887799762_0.612744504471697","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-6c5d4e8-202504171217.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-6c5d4e8-202504171217.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-6c5d4e8-202504171217.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fa1f2f876de87d80024ffee28e6fcd6792c5080c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-6c5d4e8-202504171217.0.tgz","fileCount":412,"integrity":"sha512-oBl0X7vS0cn7DNkc9vIE3Aj8N9P490ZNV9dkC45SPnv/hleZTfWolhNAVyGDLBj4OD3W3wx5DujqAzUbLYU/Kw==","signatures":[{"sig":"MEUCIHPNcztEuqjUoXsq/WFbEWErZVvgTb9P+3o3sIjDXg/ZAiEA5bD0QSCSTucsGLKyk7oQQQZ8DEGBzxHEAOUZN+Do6aU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28610627},"engines":{"node":">=18.x"},"gitHead":"6c5d4e8c1ef591b4eea1573f73d0daff105acc05","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504150618.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-6c5d4e8-202504171217.0_1744892336379_0.48067367604963174","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-f288fd5-202504171528.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-f288fd5-202504171528.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-f288fd5-202504171528.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"949b6ea2bf5b1bfa68905e089fb4489488ee9f67","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-f288fd5-202504171528.0.tgz","fileCount":412,"integrity":"sha512-s7U/WnTv8Qn0qcgrcNFAIFBlTd9LFtuu0r72+V0wVwKnmblKuCbvv+JTWAIaRsZ8g/VUbHlAManB6fQApiFLDw==","signatures":[{"sig":"MEUCIHbISq9PdBZeQSEFbGvwH64+ghEniBUpyRO76i3oO722AiEAyvuMKYfeTqfP/1i+cWLCvMITqNeO2BKbgOqVpmkCfKg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28612449},"engines":{"node":">=18.x"},"gitHead":"f288fd53aa92810830cf90f247899313203edadf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504150618.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-f288fd5-202504171528.0_1744903780260_0.3077049022653826","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-b3caa00-202504171620.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-b3caa00-202504171620.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-b3caa00-202504171620.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"82c39e53665d13efe97162710f163ddc6dde2074","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-b3caa00-202504171620.0.tgz","fileCount":412,"integrity":"sha512-PybHedW+saUdju2Bj3hMuMFr+bfAN9HesyBy0f080Eg535LRvJfJx/AEy+Zn/iVj2TFcCWpQWI44ZrT8TSdCww==","signatures":[{"sig":"MEUCIQDMQhH8nycz/uzpmDNskdb2X+vXNJH70w/jaZt6ugCiygIgWpHqJOCt7KY8Otmy3ulTBZDqg85TbyVRy8DdjcHtuWg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28611910},"engines":{"node":">=18.x"},"gitHead":"b3caa00c0977b04a0038b352d240bad70a31bc0c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504150618.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-b3caa00-202504171620.0_1744906929639_0.5899909845008282","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-fd4b836-202504171739.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-fd4b836-202504171739.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-fd4b836-202504171739.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"da637985d490ef938ed8d93816d65c3bd71038bc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-fd4b836-202504171739.0.tgz","fileCount":412,"integrity":"sha512-0i3lDl/+NrIE/0Ski3CdpM13Ug5gLoqeFd5fYsBdFl9QdSbsTN57XFitGkvmv5n0D//9Al9/Fb1A8xrXKyTOpg==","signatures":[{"sig":"MEQCIEWLH+/6ZNbrcIigw4KiAv2yZs9sbrY47f89EjFooxR4AiBugRrB1v2xBwgVB3NHaMG0krqj5FR3VgY6ocBVPP920Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28613216},"engines":{"node":">=18.x"},"gitHead":"fd4b836867fa381718468d7e19cb27b705843a64","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504150618.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-fd4b836-202504171739.0_1744911627811_0.7696333056655524","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-55c3b3c-202504250915.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-55c3b3c-202504250915.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-55c3b3c-202504250915.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9a9d634151e3edc6f7cef51ed831757f9e75f84d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-55c3b3c-202504250915.0.tgz","fileCount":412,"integrity":"sha512-cpl75VPXPpGbVAFko301uLQ0lvnShFITjs0yAIwYIMxDh0MzXpVoDjkr4Xsqx5UMUzp5DQvtat1tSI7GSTc8lg==","signatures":[{"sig":"MEYCIQD9ePfwVsrhUv/dF1rUG0rcXzVddgv47dDu68psnq9MEgIhAKEqT0eMrv3E/86BCZ0brjpA67MBglDvqIGEWOGDIZD0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28613416},"engines":{"node":">=18.x"},"gitHead":"55c3b3c5903253d21f66c088e913a7caeebfb8f1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504150618.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-55c3b3c-202504250915.0_1745572615844_0.35642036147777634","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-7320ed4-202504251028.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-7320ed4-202504251028.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-7320ed4-202504251028.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"07bfb66eb5f7a5a89cf852fcd86e2f66135b2924","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-7320ed4-202504251028.0.tgz","fileCount":412,"integrity":"sha512-3dUn3XnY9/fkLJVmj3lsilUPoWo1DnSPKTiKrrmPii2e69IhSIE2XSR0kCBw/2HhJ466qfn+oZV1vVwY4RKpiA==","signatures":[{"sig":"MEYCIQDu2oP/w73tJ1bifAD2mKYY8+31vT0k3VnZ8RbYSKbZ2wIhAPP4BUSq6+fUyfrdJsV0jYsmsntKEdFYWJ4teAC639es","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28613460},"engines":{"node":">=18.x"},"gitHead":"7320ed46d8e650d4ee1fead72a51ec31efa97f1d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504150618.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-7320ed4-202504251028.0_1745576967113_0.04707023109867836","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-3988717-202504251449.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-3988717-202504251449.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-3988717-202504251449.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"87ad9066fe791c185f06b547850226315445d471","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-3988717-202504251449.0.tgz","fileCount":412,"integrity":"sha512-VbsjVPdP614ALZSfaNtO2g9jqU+fm+dwhRv3R0YQSgtLjSl/u/ufPTnoz1iQlu7Eu+SmguLphHw35M6p4vcKbw==","signatures":[{"sig":"MEUCIQC5aYJfwuoWrSQDgOmyWP5sEYllIgKOd7b5tNch+oUb2QIgJNROiKsN2DrM4tqymOloQ5ks92sONVz6UsagrB1fg9Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28625145},"engines":{"node":">=18.x"},"gitHead":"3988717d0f9f320bbec7dd120c84e5a62dc940c3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504150618.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-3988717-202504251449.0_1745592653464_0.9579605225788763","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-3988717-202504251503.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-3988717-202504251503.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-3988717-202504251503.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2814f2df54f7f04bd0790570e9a4117a7589829b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-3988717-202504251503.0.tgz","fileCount":412,"integrity":"sha512-+WB7MHFlKa+JOg411EUatJ4RdMXdBxFUvcuCZ7hlsFarXxdPKezDT4mNdP8cccCytqxjmr85DObAfhWxzQLowA==","signatures":[{"sig":"MEUCIQCZPF1jz93vhFmoUuscPQXp0zON1qAnGyIsLhIAmBjbVQIgQK9iNBEjxHxPd75DDSAsijh5oRIYRvNTdDm54StjNxA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28625145},"engines":{"node":">=18.x"},"gitHead":"3988717d0f9f320bbec7dd120c84e5a62dc940c3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504150618.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-3988717-202504251503.0_1745593506504_0.21410280285039152","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-bcb1c22-202504261014.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-bcb1c22-202504261014.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-bcb1c22-202504261014.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fc890ba4776ebeca79d497996f627a99970d4a4c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-bcb1c22-202504261014.0.tgz","fileCount":412,"integrity":"sha512-VBij5cl4iEdex1QFnOf1spCxRjxDUSy8+Wnc5wKW9LnPaRBu0lPicLe82yqRa/BYCWCUZOx51NcQ/3XkS3eGcA==","signatures":[{"sig":"MEUCIF+q61lzqqVKxqzTVD6AWT8cECoUing599RuGwDonMDBAiEAjEY8P68Z/WqE+QbWKqRlD6RqXVuyom0Bqo8/saX8eQI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28636880},"engines":{"node":">=18.x"},"gitHead":"bcb1c2247ff4be34bf3cf9ebca52e53eed4c756f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504150618.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-bcb1c22-202504261014.0_1745662582392_0.457694575591161","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-cb4d14f-202504281028.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-cb4d14f-202504281028.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-cb4d14f-202504281028.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2c5caeddaff9277f51c9153a6450414acbb0bbcf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-cb4d14f-202504281028.0.tgz","fileCount":412,"integrity":"sha512-qJYS8hcFbvBF0J0YEeJmfB0gUx5gnKF36L+YQXlUBctJLrP6OPEBqLYouE+OCqLoVYWnmnkENBdrJU71hg6TSw==","signatures":[{"sig":"MEYCIQDazYBlBa1jCMplW4Jk3p4C8IuUH9/bnnj1f5d3PViJXQIhAM4lcZMffzqaAHVsgVdeSKis53jjCAdn2HDij6BF+8Hu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28636880},"engines":{"node":">=18.x"},"gitHead":"cb4d14fc986c1cf1b4408d3385ea200d48103cf2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504150618.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-cb4d14f-202504281028.0_1745836214713_0.3124054402230487","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-b37825f-202504291109.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-b37825f-202504291109.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-b37825f-202504291109.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f3dccb54cfcd113441456e31a95dc37a8cad26e6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-b37825f-202504291109.0.tgz","fileCount":412,"integrity":"sha512-AurwaOWMVccogSfuxetRIY9I0IX/z9/0rq9Zbf6KhEDBrLp2u8+FN8NSBUxWVF73Vk6XlgMgsNTijiJlFZvDtw==","signatures":[{"sig":"MEUCIAv98Xa83cG+ZpX1WnatXSHRf+QDeQmlwO9WJ9FdTjCYAiEAsWZIQUlpErLzNC722tRBJdagHLm7eekNZccnXVrhOUU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28636880},"engines":{"node":">=18.x"},"gitHead":"b37825f85412a810106ed3723a2dfbcc5f4cf2e4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504150618.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-b37825f-202504291109.0_1745925043555_0.30786170991487816","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-9487d5a-202504291217.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-9487d5a-202504291217.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-9487d5a-202504291217.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3da1e46a5ccbe646231ba936109d7bd1c5a2c2ff","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-9487d5a-202504291217.0.tgz","fileCount":412,"integrity":"sha512-ThLBFPMSBPaw/hmI/1p8F66+t/V+leLNzB5bSJJ/PZowTXvYLU8JxZaLmW03V3pShEJLmDT0//CbLcn1DowMcw==","signatures":[{"sig":"MEQCICqR35dzVX5JqWl0XfnwHA470oIB9maluS5Hb4FISewsAiBpauaoCbMo+l2VF4dyn6Kv8ZXU3DEcllVtCoV28O6XFw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28638491},"engines":{"node":">=18.x"},"gitHead":"9487d5a34ea532f4ba171ba92989431e65c4060b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504150618.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-9487d5a-202504291217.0_1745929156094_0.9195678362494808","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-dedfb30-202504291259.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-dedfb30-202504291259.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-dedfb30-202504291259.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"562ce512358346249b2173f1092705b95597c13b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-dedfb30-202504291259.0.tgz","fileCount":412,"integrity":"sha512-XOo5scAamXk4KGK9la6upkPWzpPiEGvoW96olaeq1hYJL0MUqa04lECNwvwq3bR0dV5jPLKBNq+w1njc7Abd5g==","signatures":[{"sig":"MEQCIB7y/6AvGTU/DwCEt8yni5asbRSLFCR4KzyV1agzt2peAiBKqh+Cx61ZMoWRjT6941yTVDSHX0uchL/gigS1PMZ1Mg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28639927},"engines":{"node":">=18.x"},"gitHead":"dedfb301e482714f81860a0865850f2187a20610","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504150618.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-dedfb30-202504291259.0_1745931664443_0.9085568885292361","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-8156389-202504291428.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-8156389-202504291428.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-8156389-202504291428.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"64c9911de93640e92e2934a4236be046ead23175","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-8156389-202504291428.0.tgz","fileCount":412,"integrity":"sha512-QJ6OHMjJjGIBNCqfzbQm1aT8dKvd9ZrebRnwqbDPcccoLj7CFIuAseB1N1MRcG9bt9MsOClKj8J/dBTlLNHS0A==","signatures":[{"sig":"MEUCIQCnsG4g8Q7lsGP2TbPQ5xGyH3+W8SPEK3UL2y5y7VzrNAIgDS11k7Y+yrfEUGGDQflomTHnk6Yf+Md+6TWiyuCjlAQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28636117},"engines":{"node":">=18.x"},"gitHead":"8156389b5056743023545180153024c419359d83","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504150618.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-8156389-202504291428.0_1745936987078_0.6719218250067811","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-fabf434-202504291700.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-fabf434-202504291700.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-fabf434-202504291700.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e879eedd9d1d37f44f6f7be2b54cd5770a246b4b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-fabf434-202504291700.0.tgz","fileCount":412,"integrity":"sha512-62AD4Exzfew37L9or+sHj7KWgjzwNRsBJ5M4i3RmacMZv50ZnBiFOFS9P1Yx5J0tOG8J+ZWRMDaJMIfK1CNhcQ==","signatures":[{"sig":"MEUCICYbWgUD1gsjviWR6dTDbvp5Adq26R8TeXo05a/LBHp+AiEAiF8wQTlBpePYii5OaF1/OwdoUfngrPSn4H09+9rdkmQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28651865},"engines":{"node":">=18.x"},"gitHead":"fabf4343ebaf67507f6ba4f351c2f0f82ce8a649","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504150618.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-fabf434-202504291700.0_1745946141431_0.23462181626564993","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-15daebf-202504300954.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-15daebf-202504300954.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-15daebf-202504300954.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"81e19a8855871d2eff990c0159ae9ff8a84296c1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-15daebf-202504300954.0.tgz","fileCount":412,"integrity":"sha512-2e0lCZ+1m/Mm5reOrSnxG9F9fglN5jHIe2Ijef4sI3gDdfL/KZBdp7epJJZtGuN32P+Qvq+hiIAlTgZMFaLIvw==","signatures":[{"sig":"MEUCIQCoJJEvMqIo8oB1SFiOlrXpa0zfS/K0g6SHIgLNaieEUQIgQAIGAYKj7CbPTCy9fmUZT2jymuIA3nB55EQDtL0Y41I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28653197},"engines":{"node":">=18.x"},"gitHead":"15daebf1af6e0a5b4c090cee42477e7c6702b618","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504150618.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-15daebf-202504300954.0_1746006983437_0.6118063901119986","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-0278af5-202504301240.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-0278af5-202504301240.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-0278af5-202504301240.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2ecdb14b65a02f26ed2d976bc7349df8af7cbeba","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-0278af5-202504301240.0.tgz","fileCount":412,"integrity":"sha512-AN9dhz7Z9Kvc/rsZRkb021k3eT5yLfAri8hVqQEdgnYewuGGxqmQvYhcAxyAsf3qrud+kofG/Npx2XiSkOe9Cg==","signatures":[{"sig":"MEYCIQCASBkrpFKMgjEhcTtYd6e6ZhayaEJkbD8XfuwsJDSUvAIhALhDwIoB0CVW6eqEIqclf28/KlzzuGCXsdmeRBbJkhtg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28653112},"engines":{"node":">=18.x"},"gitHead":"0278af5bbff5022022b1f83d39d0a4e0b79233a4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504150618.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-0278af5-202504301240.0_1746016917357_0.7079852556599848","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-e28c657-202504301535.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-e28c657-202504301535.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-e28c657-202504301535.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ab917bd8f04123543737e0720d22f17725b70d59","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-e28c657-202504301535.0.tgz","fileCount":412,"integrity":"sha512-eiyisoqIRNb3Q7jGVtRYHVlxMB+zBe7IQhZYA+RlU2U5Q0xxIH5rxTuw8D8nB91T/sThwXiHqmzfKSacMGKQMw==","signatures":[{"sig":"MEUCIGGFmb2X+i477shEqxXwhRlg4z4ZP1dAPu3h4ywxXMI9AiEAhriNSufqdMSDMD9Nu408ube9wh+K+a2tvutOO+ntaMM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28841716},"engines":{"node":">=18.x"},"gitHead":"e28c6572690d11b21bb70646c47802045089b9b0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504150618.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-e28c657-202504301535.0_1746027405449_0.06738898095651957","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-e28c657-202504301542.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-e28c657-202504301542.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-e28c657-202504301542.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a17dfd9aea2502d0a5f2bcc16bbd199e88dc92c1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-e28c657-202504301542.0.tgz","fileCount":412,"integrity":"sha512-Lf6Fm+QZRaGg2tvA4kUkys8WfxvCB5z1xrk/kOEIjqc4dr7JeXMqQisqPm05cPW2rdr3XW85QL2Fs+ZOV04mpQ==","signatures":[{"sig":"MEUCIQCtpO07ExJQ26eYfVaclywKIK2WrzOZ7VCl5fR99FINdwIgYGL7BpCDWl7xFwMvICrTEK8uvGZyqq0cLXqp32DHQ0g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28841716},"engines":{"node":">=18.x"},"gitHead":"e28c6572690d11b21bb70646c47802045089b9b0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504301541.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-e28c657-202504301542.0_1746027822993_0.7421028970185708","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-e0fb3f0-202505012028.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-e0fb3f0-202505012028.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-e0fb3f0-202505012028.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4823012a74c7260d18c88a78249907c4c5150859","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-e0fb3f0-202505012028.0.tgz","fileCount":412,"integrity":"sha512-V/f7pDmo1NJshcim4rKSsx9uDXf07e5++MsBY6bshtxH7EK/dAOy97cUxcoFWm1LnUCWrKNOGURAp2t2cSSjEQ==","signatures":[{"sig":"MEYCIQCTusU3RpOWDnyp7czJ/LOmqczO/o3OGzP5uQmz9S92SAIhAIdqkGoji4po2yqt1074zZ6hkFZOB/jgNoUe5fzJHwy0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28843911},"engines":{"node":">=18.x"},"gitHead":"e0fb3f0e2f5d4efec05aa15c3257198be99449b0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504301541.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-e0fb3f0-202505012028.0_1746131392224_0.6646196768999741","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-9823482-202505020926.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-9823482-202505020926.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-9823482-202505020926.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c9f9567132e034ac406163481c8804ef4f85140e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-9823482-202505020926.0.tgz","fileCount":412,"integrity":"sha512-rUQDPnmwtCaTcv+XlN7jd3Ek0GZAobbpR7Ud/agkvE/SWwKoTI3PIIMC6FXEYkB4rqozoo8xqTuXTFbL9NO2DQ==","signatures":[{"sig":"MEUCIQD88iJVDNCN1afZbNX4twsTeQV7CJNsiVglg3kAnUf+fwIgKJoq7j3s3ZhXEN8YhGRxNfWB7z7Rcr0UcCKPQiuXqTo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28844322},"engines":{"node":">=18.x"},"gitHead":"9823482f01349e15942146b759078d6a6efd082b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504301541.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-9823482-202505020926.0_1746178084455_0.6685661896243857","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-379c584-202505021027.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-379c584-202505021027.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-379c584-202505021027.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"24b7de77bb7992906763373f644e6c4ef4226840","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-379c584-202505021027.0.tgz","fileCount":412,"integrity":"sha512-wUXddEdtDLLQExo062y3Z2PYIvTpi7X5+vMU3AI2DMzLRbMhW574f/7HTPUMsHg2K1ZPFJzJTkk+AE71yLWv9g==","signatures":[{"sig":"MEUCIFJ7eASzqzoPCG5ukdV1LSfZAyMqMC8fngEfcAIv2ucrAiEAg1pfzP2+6LyH801MFCfAKpmuFmYov6KcoDG492jBh4s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28844338},"engines":{"node":">=18.x"},"gitHead":"379c584ab279b557da2cc516128db667815c9d5a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504301541.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-379c584-202505021027.0_1746181769184_0.26421850660420465","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-1f7b3b9-202505021522.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-1f7b3b9-202505021522.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-1f7b3b9-202505021522.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e79d0627b1b81eebb987c58efcd32d5fc5e0a017","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-1f7b3b9-202505021522.0.tgz","fileCount":412,"integrity":"sha512-16JMqqBkUhdJyvNvtysHWZivsQi7HM2yTOcVreXyJy8EjUti4f1LSr24S/4XBjjDGlVQFAO0WggUIUBbBjxALw==","signatures":[{"sig":"MEUCID70IvRDk3C/48NM4iIbiHTDjsMlPlvKFo6r1y4vt4gqAiEAvCdfsFHMqkDsSxLnw+DI3nokF4h6hkvuYy6DFMcDHxo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28845302},"engines":{"node":">=18.x"},"gitHead":"1f7b3b95b1ebdb310fd0d6cc4878298b4116b28b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504301541.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-1f7b3b9-202505021522.0_1746199436899_0.09777008865708292","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-1f7b3b9-202505021537.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-1f7b3b9-202505021537.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-1f7b3b9-202505021537.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"233c3c3982745a434eeb68b5df42492f7ab098e6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-1f7b3b9-202505021537.0.tgz","fileCount":412,"integrity":"sha512-WfmrBsKmH55cK6pO90LhwEDkhQEcgpSZh0GZy5R35DCR/gEpg7suVlxEPS4jChJXC1HudcUx6mdfFNEjyR0orA==","signatures":[{"sig":"MEQCIHbTiDq+l2N1JkmXjD7ZSQnDh6p7VxiILOK8JrJx7OvuAiBLsfMTX1KsnknEth9z+9MTSdRyxIXJjTY9n5J+0havzQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28845302},"engines":{"node":">=18.x"},"gitHead":"1f7b3b95b1ebdb310fd0d6cc4878298b4116b28b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504301541.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-1f7b3b9-202505021537.0_1746200361737_0.2748483154464558","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-20890e6-202505050909.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-20890e6-202505050909.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-20890e6-202505050909.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1b42b06c8bed5862dda10b38eb8acb57eed0f135","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-20890e6-202505050909.0.tgz","fileCount":412,"integrity":"sha512-L82K2ijS0kVEDXVjHNP/z1oCzM4MXPc+XZuhywOzqazzstywuepb3cyoM4iTD7Wg1NQmSrYbXd1py6r+1zIghg==","signatures":[{"sig":"MEUCIHV0IGLBL4AAMkMAWTlJojq/mixUYfUxYJegKXzWznh5AiEA0H41DWtc2EzWEFUmpo8QU38PCBk5kg42HHQuWycXIAo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28845368},"engines":{"node":">=18.x"},"gitHead":"20890e64137c36d4577c8072137bef535f2ef9c6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202504301541.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-20890e6-202505050909.0_1746436254885_0.032129235270176304","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-20890e6-202505051646.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-20890e6-202505051646.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-20890e6-202505051646.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9da3bf9367a0d8a2d9d69e12e879a3c3035efe97","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-20890e6-202505051646.0.tgz","fileCount":412,"integrity":"sha512-ZpFEALx+yo9vC2LvxCG29AY5r0i6CUz146EOFu6PTlA4g+WcVOaeTNw9RYBuR+5Cw65msuP1v1T5Thi+MJLHOQ==","signatures":[{"sig":"MEUCIHTImJeUSwU8vEpIeUkSqIeqmw0mkdtAf/lQpn/96SfiAiEAtd7crjO9tJxCJmM+QS8MjogsA6BLuMZU0JcoMypbnXI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28845368},"engines":{"node":">=18.x"},"gitHead":"20890e64137c36d4577c8072137bef535f2ef9c6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202505051645.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-20890e6-202505051646.0_1746463669563_0.2723294263261038","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-0fefeff-202505061135.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-0fefeff-202505061135.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-0fefeff-202505061135.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"db5766c017114ea365469de73927a104ef230178","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-0fefeff-202505061135.0.tgz","fileCount":412,"integrity":"sha512-/gND7DFNLaQK7fhl4S616PggHz3usjasoVhH7lzyYQjNnhZXNVACm8BEp1oO5EusCa9kBYnIr9ZX1R7qeptT/Q==","signatures":[{"sig":"MEYCIQC9IEXvVNWjHcoq8BG/C+djQtmuTwQsgdLBLoueSGC7iQIhAMc58OUMY5hw/5FCAq17U5MfBQMbHLU5euGKXz834Cwh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28846797},"engines":{"node":">=18.x"},"gitHead":"0fefeff185c7ba4d37415b69202822bab70318b1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202505051645.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-0fefeff-202505061135.0_1746531408377_0.3912710678741145","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-9613086-202505061318.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-9613086-202505061318.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-9613086-202505061318.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2317ea724defcb1b01652330b34daad53f349541","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-9613086-202505061318.0.tgz","fileCount":412,"integrity":"sha512-d9v27UtDGQgQ6xZDbIQdrp7uGmopJj5pJo3XXeOCIxVnYTnC+6YOwNDoHvaaKsd/Se1mMpjJzLuAfOVF+o8lMQ==","signatures":[{"sig":"MEYCIQDeuur0swXrpPFJAqdNzS+x4Zw8OiSkmpcJ//QI551jlgIhALg+gTH4rZq//47tO0c252+pxiQwmFCnXRijoYXVu9/z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28854837},"engines":{"node":">=18.x"},"gitHead":"9613086b8a09c18e48a0e3784b14c28b625513d9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202505051645.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-9613086-202505061318.0_1746537612146_0.3363790478279427","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-abb6a8e-202505071316.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-abb6a8e-202505071316.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-abb6a8e-202505071316.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"470287dfd7f49648c9a55f7336e9c8e68fbd2cc8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-abb6a8e-202505071316.0.tgz","fileCount":413,"integrity":"sha512-Ew8TUS1CA1aWnBUvPxg6okEdcghB9GlHSn79xiHKGMRfOhf5r/F+xgUL971DVtcRP0yGm7hmq6f79eMllJuZ3w==","signatures":[{"sig":"MEYCIQCmf2u8/yfTquAP0hyJkGpf4pQ0irHlmk8O0e5+OGEq8AIhAN7NYxD6uS+C77EMe4TzrXd8EUAMd0kPwN6/e56o4C91","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28894003},"engines":{"node":">=18.x"},"gitHead":"abb6a8e784690e1c4ddde30fd531fd3e4f0dcf2a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202505051645.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-abb6a8e-202505071316.0_1746623864068_0.05006249644909322","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-96cc5a8-202505071355.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-96cc5a8-202505071355.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-96cc5a8-202505071355.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3c1e0771643abb363c4c357f03fefb3100599328","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-96cc5a8-202505071355.0.tgz","fileCount":413,"integrity":"sha512-moapdOuKG4aqnFHo8eqCN8PZEuEnJZ0EZ5zpMLQ+8K+TyM/HrCmZLiMzIIaiKWOJwhuP15+EAAVUZWOeRJB46g==","signatures":[{"sig":"MEQCIH0QC5tUUimhvXhQy2XUV4M312dDTDRPthbJWk2QsKw4AiAXH1rM2m2YoycjGISnOUM5IgVSFGkddsyVgLqKkovvBg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28898317},"engines":{"node":">=18.x"},"gitHead":"96cc5a876589720a2c0b86b3634aa4dc8e4300d6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202505051645.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-96cc5a8-202505071355.0_1746626249153_0.42302439927979374","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-96cc5a8-202505071411.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-96cc5a8-202505071411.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-96cc5a8-202505071411.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b57218a3c56a525dcf5d3df1b05493382432ec23","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-96cc5a8-202505071411.0.tgz","fileCount":413,"integrity":"sha512-JwrZbwWEl50RCp8w5rfHhpuUHMkVztSLqQRbc/P/e8hTOUjqGY9i/QS6fXfhoPn5+kvLDFkQuKoWjE6xKXmhbw==","signatures":[{"sig":"MEUCIG0A+QBw/1b9yeA4ETL2tWJAA9qW5/eUTgRbHx4UJOGhAiEA03vnDMJ8PLbYqJaCkmN/4939xOcQ+5nE3ikG14UeMvY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28898317},"engines":{"node":">=18.x"},"gitHead":"96cc5a876589720a2c0b86b3634aa4dc8e4300d6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202505051645.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-96cc5a8-202505071411.0_1746627194690_0.5322341604963747","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-96cc5a8-202505071429.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-96cc5a8-202505071429.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-96cc5a8-202505071429.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bd10099675d201bf89b84d12ed53d1ae62bddfe6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-96cc5a8-202505071429.0.tgz","fileCount":413,"integrity":"sha512-FhQanIkvTnP76PC+aiv7f/0vHTbrsPyAAalrRNpIlTAyAhIfcYbIL5inNpJPJs/jEeM0+YY+aEylk+pSQ/GBKw==","signatures":[{"sig":"MEUCIQCrRyjimuVZU0Yiv6PvYcPkJNPXzGct2xQQZBmoHeDDxQIgMux9wGkQa2pJzL1noPXvRWJjOyOilAN2toMUo+jbW7s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28898317},"engines":{"node":">=18.x"},"gitHead":"96cc5a876589720a2c0b86b3634aa4dc8e4300d6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202505051645.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-96cc5a8-202505071429.0_1746628325683_0.3160846324695181","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-1334bf3-202505071729.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-1334bf3-202505071729.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-1334bf3-202505071729.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a72009dc279ac6e916bd31ca692a5d23d0c289a2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-1334bf3-202505071729.0.tgz","fileCount":413,"integrity":"sha512-8oJccm208Cpdd2kqJVqYauO4ZnCkh/bT4W2F0F5z8o4uOKJ77DsvYU5cNTXhZKhXC2IHyAtcfVyn/kdmU3citw==","signatures":[{"sig":"MEQCIAHTSJoUPHxPCEsmZn7ml0hdDSa7/YxVyrZVJ/8e+vcmAiBAg+J+NXixiO23tsGxYOV+Fe/MLTDII+MWXWbypGztww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28994107},"engines":{"node":">=18.x"},"gitHead":"1334bf379017fd4230060e1713293f5a4de50dcf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202505051645.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-1334bf3-202505071729.0_1746639034387_0.6024619015253692","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-1334bf3-202505071744.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-1334bf3-202505071744.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-1334bf3-202505071744.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"66799b35cac0741ced0016ffbd1709fc201dcc65","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-1334bf3-202505071744.0.tgz","fileCount":413,"integrity":"sha512-1jCtN45NNMo02oShZUBitDxJR7u2T9wD4BgZR9QhB7Y8KBaZ0nmrJXleAgiYeliPx2Kn0lsBHM1XUPmsUL5jYg==","signatures":[{"sig":"MEUCIANZ0IMWUKGj1+VQfE0D+Nfv+GIcH4LfddTQepkyg0K0AiEA9wluwiS94/OQPIFbrW5IemzVbfwWfa7lA7XxBjrK+U0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28994107},"engines":{"node":">=18.x"},"gitHead":"1334bf379017fd4230060e1713293f5a4de50dcf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202505051645.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-1334bf3-202505071744.0_1746639963498_0.811770537789613","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-cef6c30-202505080840.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-cef6c30-202505080840.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-cef6c30-202505080840.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0828e210ec6f1e14db0d15fee03e5aa8cf86db62","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-cef6c30-202505080840.0.tgz","fileCount":413,"integrity":"sha512-RPcyest4FODMq9fcvlDWpukhER6PIhRJvI/CwU1P+2FLdwGtL1trnYQwP49BP1519y43xaa+9Oi3PLn2+NfWOQ==","signatures":[{"sig":"MEUCIH8oi4rpX7NBeSXwjK6l9rQHGuqzlAZ/CVj33G3+VFxkAiEAm7x7jwIpIZPcqAkjS4GQcWxrdsWIwtAPJDrvqQc1jQE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28995747},"engines":{"node":">=18.x"},"gitHead":"cef6c3040b990d66116772161c93ee28a984d572","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202505051645.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-cef6c30-202505080840.0_1746693696248_0.5237353672095764","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-29d8ee2-202505080908.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-29d8ee2-202505080908.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-29d8ee2-202505080908.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"89d9892900cf2d6afd056672f75357ce8f7b267f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-29d8ee2-202505080908.0.tgz","fileCount":413,"integrity":"sha512-qkL/8+kRFamP+NI0qBiVOvtz0Q3KU0bUARzxbk4/RoD+R/gQbz1uBvdKULow9L+U2MaAQrHQ6elQcxdr0jDraA==","signatures":[{"sig":"MEUCIQCviQnfDjrx+3VRy3gbp16UvQge9H/4ZJfevh+jenUfBAIgFzd9xFfKxyCNnw2i4z7ha42BKcc3Ej2m8UgYcQOllXw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28999409},"engines":{"node":">=18.x"},"gitHead":"29d8ee285225a119af3c01cfea236fc09f557482","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202505051645.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-29d8ee2-202505080908.0_1746695410537_0.4497379225699496","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-29d8ee2-202505080923.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-29d8ee2-202505080923.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-29d8ee2-202505080923.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7c1acd30c6f3dd3a71142d48b6922d94017f61f5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-29d8ee2-202505080923.0.tgz","fileCount":413,"integrity":"sha512-oHLQOywTwJv62ImUIQ8DKiP4Thr7xja8zdeU3xr2uiPvFDMknfc2oVXWMzp/luz8EfkEmIAB1bPFKBmCXZE9ew==","signatures":[{"sig":"MEQCIGXkP2T20eqj5cXC9quHwx2lloh/uF7tJnanTbb8TkhkAiAlxm9sYO2mlHDXlQmz3w6Yzhblr/YNj8wDQXgCrWB6yQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28999409},"engines":{"node":">=18.x"},"gitHead":"29d8ee285225a119af3c01cfea236fc09f557482","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.16.1-87cb4ed-202505051645.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-29d8ee2-202505080923.0_1746696327396_0.317872506461943","host":"s3://npm-registry-packages-npm-production"}},"2.16.1-29d8ee2-202505080938.0":{"name":"@flowfuse/flowfuse","version":"2.16.1-29d8ee2-202505080938.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.16.1-29d8ee2-202505080938.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b49771a7a02892e980ac27cf45c9c378cbdf7a77","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.16.1-29d8ee2-202505080938.0.tgz","fileCount":413,"integrity":"sha512-Iihdt22IUwPNrgtoZo3w5Doysvrhd9CeVYLRmNgnuOS6fodQmzsI/n8sZYCWC2fEvVAK1JD+l/Tzb1KCZi42/w==","signatures":[{"sig":"MEUCIHxPnA41y2jTMz3f35M3vyG/o0/hyElWz62pCmafQtePAiEA/oD9my8CqmrQ2tND0oIpjhkA243cs4k22NaePN7FAHQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28999409},"engines":{"node":">=18.x"},"gitHead":"29d8ee285225a119af3c01cfea236fc09f557482","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-614edb0-202505080937.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.16.1-29d8ee2-202505080938.0_1746697175814_0.5805773699640677","host":"s3://npm-registry-packages-npm-production"}},"2.17.0":{"name":"@flowfuse/flowfuse","version":"2.17.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7eed97b756ad0e23d2fb1101eb33fb606017a3a9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.0.tgz","fileCount":413,"integrity":"sha512-EtmUva5om+1aXOn6kVWMRqXIEpdu6kK4RI5bGjd+MzKoTBuh9HBFw2UMjUxl+jj9MrStsKiqLdqZ1emFQ/KRiw==","signatures":[{"sig":"MEUCIAaMziZCxEUCdHw2TC7AWqq8jsK8X7KGc4lQvth95fWOAiEAxLWxTzgmEignW05u8e7i5zjjQMQvJrmy+V4zK2tbpv0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28999724},"engines":{"node":">=18.x"},"gitHead":"999a6848830ee0caf906d5a0cb194bf0e50c815e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.17.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.0_1746697429720_0.200486904325043","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-999a684-202505080957.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-999a684-202505080957.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-999a684-202505080957.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"13eefb141fdc3193f7843b4e242a9caeb00f0aec","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-999a684-202505080957.0.tgz","fileCount":413,"integrity":"sha512-wxzQ/OWDeXqY1JOnj+foz+IYsJAwpsYvgYP5eTNf5AVsw7B3a+AEVZIV1/O5R4aheXJWkyf+sywMuo7CU2TVZQ==","signatures":[{"sig":"MEQCIBGri22peV0WJazdS8N6lMhq/Y+THSzgSg53wRiaksENAiAcABPso7ElttXQDDq562VKQpe0eX9ppuLM9B0bA1AG+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29002905},"engines":{"node":">=18.x"},"gitHead":"999a6848830ee0caf906d5a0cb194bf0e50c815e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-614edb0-202505080937.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-999a684-202505080957.0_1746698370289_0.47660569104148154","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-7c5a323-202505081622.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-7c5a323-202505081622.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-7c5a323-202505081622.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c8ffed4bf903eba21bba3bcacb36ed46649517dc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-7c5a323-202505081622.0.tgz","fileCount":413,"integrity":"sha512-LVcY/FIWW9myz/PuO5XS9ycMDWGJt+iIGjpmXPLzXhkeO1wXdxh34fMuCXg9Ygf9k9sVTI5p0OA6TOYCIL/cXw==","signatures":[{"sig":"MEUCIQDZkI+DGtWDflfnzJk/+292UcsVgv8oxSTcFlYFz1DkowIgdftYIKGP/7Hzq5v+xLudN/qew64zmjMWYaFCYTLsC6Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29010940},"engines":{"node":">=18.x"},"gitHead":"7c5a32385c261819878c34a34a3721dc5901062f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-614edb0-202505080937.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-7c5a323-202505081622.0_1746721433457_0.19183521699650052","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-ce4a392-202505121317.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-ce4a392-202505121317.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-ce4a392-202505121317.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9b6b717c5ada82e7e5ce4c4e943f444bb667bc6f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-ce4a392-202505121317.0.tgz","fileCount":413,"integrity":"sha512-Zl0CfrTshHEupIC+geLzuXBkZduPRmZ7hobriE1Qh7Agx0TxLsUJjo4B5GN5x0kJx86T4gCUJTfRfLsItFXrBw==","signatures":[{"sig":"MEUCIQDnypMMThS7PQxqLPYDxMhs7UDOLjeojVV7xs5l+wRunwIgUj2MDPTr9ncxDJ+MGxpCkx4JaUxBzcaedurMv34pj+o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29012048},"engines":{"node":">=18.x"},"gitHead":"ce4a392d3532ebc8c35395c31ef1a2295586f63e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-614edb0-202505080937.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-ce4a392-202505121317.0_1747055941653_0.6667251839866974","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-a2281a2-202505121527.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-a2281a2-202505121527.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-a2281a2-202505121527.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9a6ce247968e4ad878546c7d3f04558b194ad930","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-a2281a2-202505121527.0.tgz","fileCount":413,"integrity":"sha512-9OrZFi8vFAe+8/vc9IOtX7VjP+oO9hXq4V0hqxR1glu3/95tnnefx2oZ74QHxCmtGHVVcLdx4N7/jtDIhousvg==","signatures":[{"sig":"MEUCIQDmz3vBfPPE9WSNYIk2h8ixko5tsU7RxMZHU8B60UqfeQIgL/ZCOY+7ViQN1fiq7lPys++ZjxTpGzbDzvV9jviFC0U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29013416},"engines":{"node":">=18.x"},"gitHead":"a2281a2450d8e173e03ff42edeca49c18c810f33","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-614edb0-202505080937.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-a2281a2-202505121527.0_1747063753996_0.213422276525977","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-acbe939-202505132003.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-acbe939-202505132003.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-acbe939-202505132003.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4338a2c787c9ec6032bbf150b6e5b9e46dd64677","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-acbe939-202505132003.0.tgz","fileCount":416,"integrity":"sha512-yk1d6zfGu2p+RFHfpEQl/IkBRieNK0Z6gvFfQ36IqcCOjEewMlhl/G3aZOYb6rCAFz+T2D/7BT/65unCGH+52w==","signatures":[{"sig":"MEUCIQCiWJPUYZ96L0PCA7+0dIm+5iwPduWVmDHVG+LlsdXe0QIgHuuZabw1tBBHkFqeLuB+uyYSK79W9rwCRajym6XOW2g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29019049},"engines":{"node":">=18.x"},"gitHead":"acbe9398da5fa4be9244aa35d648dd52eb817b7e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-614edb0-202505080937.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-acbe939-202505132003.0_1747166681594_0.07602010873776188","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-86bef11-202505140827.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-86bef11-202505140827.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-86bef11-202505140827.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b88d224f5378fd7c803844c2f4b839a11aa755cf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-86bef11-202505140827.0.tgz","fileCount":416,"integrity":"sha512-HeRkr+UvBrV2Nn2ZA7zNFpV/LPz1Op9rYCvhKLtc/o6BmdBRDoOA23bRQbKerW7tm2jWW1VHu3ps2hqVP5Fhxg==","signatures":[{"sig":"MEQCICDsfSj33phtIkFkAfF3VM0Y6OwD1205Fdi7agUOpwIyAiB9IkWdM3IDe14ofBblZPwSX2Wyoug1x9k5RVtzrczGBw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29018908},"engines":{"node":">=18.x"},"gitHead":"86bef11c2c4d3d484fbca680b40ff7d31c727398","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-614edb0-202505080937.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-86bef11-202505140827.0_1747211344854_0.7478005055553401","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-e223b71-202505140923.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-e223b71-202505140923.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-e223b71-202505140923.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"90a7922f2cfd81cb25d1deed39779f169fa0c7d8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-e223b71-202505140923.0.tgz","fileCount":416,"integrity":"sha512-4pEHBETfdlM6YoNXML+x737an9yoHu0/ClMkQ1yYhCuYhKLnec0EEWuByJP1J3svfoyf2EQdZGmsZA35cy6anA==","signatures":[{"sig":"MEUCIDoEiJmnBZWnnHmUdvdZJs121XIwTDxCUqnphQ1MH6UxAiEAsWjQtm4wcdTqTAJ3qS+CKiaukKX068qnICs5RZWUU0k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29019106},"engines":{"node":">=18.x"},"gitHead":"e223b71d81d01b6eff7ba1b453654fb751c9c03e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-614edb0-202505080937.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-e223b71-202505140923.0_1747214721262_0.8627417653672071","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-1a05ddc-202505141014.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-1a05ddc-202505141014.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-1a05ddc-202505141014.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4cee9135412f386876afddc8e756e884e459be22","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-1a05ddc-202505141014.0.tgz","fileCount":416,"integrity":"sha512-HYL2O292N4N/4T7YVDHwSrTyjBL0To8YILgLMS4I3OyG94ZJYifpvLxOvU9sXTghAqb8K8brfef8QpwWfYHKkg==","signatures":[{"sig":"MEQCIFbtQ985Sojlq3GlyBP+lwRW0KJoaqfCzO48WpVFQYwEAiB0+t+kyBNO4bss3dbBRpt6L6XyJvchg9/s8JMXREyMDQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29027226},"engines":{"node":">=18.x"},"gitHead":"1a05ddc7b492167d5c2105e7c21c4858cc7b439f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-614edb0-202505080937.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-1a05ddc-202505141014.0_1747217736422_0.7122689940596509","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-5451f37-202505271334.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-5451f37-202505271334.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-5451f37-202505271334.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"25e8063cfd538e1f91b3401c39d669347c4b1ac8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-5451f37-202505271334.0.tgz","fileCount":416,"integrity":"sha512-n41lrMfTdnlKKt4Bl16cqmXnPkAjHHERLBrUMA4C5VNeR84AJ3GkJWfhnk9TzMONW5RLCoJmHzUyHgPczoY3bw==","signatures":[{"sig":"MEUCIBFC238FlpmInChp8ZJlmuQ4yhSWvUdgcaSv7HnD+YM8AiEA52eoxH9mUln360Rbqo5CbEik18VX94JEJGwCB5VN43o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29027226},"engines":{"node":">=18.x"},"gitHead":"5451f379a7dd46c1c5fc01d4e049c29f0a83710c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-ec1b72e-202505271334.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-5451f37-202505271334.0_1748352978286_0.7253807070118461","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-5451f37-202505271337.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-5451f37-202505271337.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-5451f37-202505271337.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"00354bb0317a9edd398865b5bcd51248a7f92158","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-5451f37-202505271337.0.tgz","fileCount":416,"integrity":"sha512-ooMOpohUpZHvUD6mCjP8zUU5LReKSaxXo9dPqLhbJC9gZWaGUWVw/NuQCS+WZzbFoxOQAB7U3JU5zBz/h0vDNg==","signatures":[{"sig":"MEUCIEjH0Q7DVnT10oPqrlQKm4VieutA8EikRcCuyiMwovhwAiEAirdxCAmJ8XOM97JMXSmHCrVLVK5J+9POCN2UoeRl4YY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29027226},"engines":{"node":">=18.x"},"gitHead":"5451f379a7dd46c1c5fc01d4e049c29f0a83710c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-ec1b72e-202505271336.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-5451f37-202505271337.0_1748353131239_0.717852187787374","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-70ad837-202505281556.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-70ad837-202505281556.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-70ad837-202505281556.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"43ec34c21f39573bf40af6569b34a9a24511acd1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-70ad837-202505281556.0.tgz","fileCount":416,"integrity":"sha512-WS8gg1arnNyk1Uhwc7HENiz132ZdYytp/t5R/XZdvcAlPAtxlToKcBlNTjIr0epD2mrlg18wQI/tr/7mM8jHHg==","signatures":[{"sig":"MEUCIQCIX5PA5QNmkx9ZrAqCTNRSS+TWiwjCMOF+sxX+008GJAIgZUQEbpr25RQoN4RfQZ84G+bQ4+xApljU+LqEGfl7NoE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29029304},"engines":{"node":">=18.x"},"gitHead":"70ad8371fd09c10f0257d5caa751bc40ff9d9af6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-ec1b72e-202505271336.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-70ad837-202505281556.0_1748447890173_0.927369537121219","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-70ad837-202505281612.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-70ad837-202505281612.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-70ad837-202505281612.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"66ded033c455f30cadcb1741184b4b9e55fc8e60","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-70ad837-202505281612.0.tgz","fileCount":416,"integrity":"sha512-5rO6lvXhAmaekOZBO4Jr83HTTuD/NF621TnoPH3Il7/uAuWuu/61ln/TX5EWkortsJk1GOwjZeQkXNI+J0HpNA==","signatures":[{"sig":"MEUCIGPa/H+ctXAQwygswuhE6R+ucb+qB8hSydKtTYws/+kpAiEA2hKDcO47n2oqJpMp2u5sjOdjWkisXEzyb02Li8OFjiU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29029304},"engines":{"node":">=18.x"},"gitHead":"70ad8371fd09c10f0257d5caa751bc40ff9d9af6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-ec1b72e-202505271336.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-70ad837-202505281612.0_1748448819531_0.6299463587702825","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-9f25974-202505291602.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-9f25974-202505291602.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-9f25974-202505291602.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"617d367aa32f5bbb320047e6967a04e672cf2243","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-9f25974-202505291602.0.tgz","fileCount":416,"integrity":"sha512-6HrGSFez4iyL3qC/ti2BilzjOpBJ9CH+GObjpOB3Mmtmnb2pOSglXXv3jgTp+dhHbCPeT55Sc0lVczPSccIasg==","signatures":[{"sig":"MEUCIGim/P14JsAaJ7vCr2zxmgaAlAd9taR7xeR/R2N+kQ+wAiEA5gbga3+phTNr1jp7BpvMYlOk0igs00xXgu+ArpK9N20=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29029304},"engines":{"node":">=18.x"},"gitHead":"9f25974d7771334834da9c3212d7c2ea3effc753","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-ec1b72e-202505291602.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-9f25974-202505291602.0_1748534644703_0.7333261771748993","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-d98afa6-202505291619.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-d98afa6-202505291619.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-d98afa6-202505291619.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fb709a3dc16d414f39dc95c4dfaa836fe6dfe4ee","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-d98afa6-202505291619.0.tgz","fileCount":416,"integrity":"sha512-Jo1A0rERSJrL0XHRjF581qOXDv6m1Fhl5KfLh58IdgTrRX4TQ/4Fgr+RewHjPbd9FGtqUJXmwResHknRU989Dg==","signatures":[{"sig":"MEYCIQCuOsWqozdYvo/xr8CG5XJZ4u6nO113D2oA9nCelqSY9AIhAJWVZQYQy/hE0BcHI38goFFxT/LOfnLmS/W2inr/ISOU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29029444},"engines":{"node":">=18.x"},"gitHead":"d98afa690c0577a6c5dc3a68a9468b9d060a244d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-ec1b72e-202505291602.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-d98afa6-202505291619.0_1748535675985_0.2709611378892285","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-d98afa6-202505301316.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-d98afa6-202505301316.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-d98afa6-202505301316.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7633b0e1389d7516f30b9e25e048d142036a6abe","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-d98afa6-202505301316.0.tgz","fileCount":416,"integrity":"sha512-cWRoo/ndBJc9TTK5NNP/PYzxvGNgJgjtOMBpDnWmrUCjwFZy5miCW7/JMwmI40oGbpoZj3P1yV9cvW4lAevnjQ==","signatures":[{"sig":"MEUCIDBTybGLmKgqysomY+jefKDkrNTMkmIuStIjgBOZUEskAiEAjKv3nUjjcLqAglFBg06XvDBDt9o3FvnzgzPqOwi82K8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29029444},"engines":{"node":">=18.x"},"gitHead":"d98afa690c0577a6c5dc3a68a9468b9d060a244d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-ec1b72e-202505301315.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-d98afa6-202505301316.0_1748611065553_0.2990651875989301","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-4dd2f3d-202505301529.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-4dd2f3d-202505301529.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-4dd2f3d-202505301529.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5ce0812cf8bdc9bf39193b31615afc1e489cd6f8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-4dd2f3d-202505301529.0.tgz","fileCount":416,"integrity":"sha512-zA8pOXJao0+r7Q/cYetrevhbezVjxu1dAwTvbBYIpEwlTI/gRg5O5KZNv6h8az17mJxIO3iqLgCKHwHy412T9Q==","signatures":[{"sig":"MEYCIQC4O+uVgZXIIHMFk9GK6eR5BQLn5ZVdoyAbznsAlLb+CQIhAPe5y0BeUJO1HQBHeT3wFNVQdZIsctjOY2YoF+NGjK/7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29029496},"engines":{"node":">=18.x"},"gitHead":"4dd2f3dad19a9ba00ca4aa30ee103b9c6ebb59d9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-ec1b72e-202505301315.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-4dd2f3d-202505301529.0_1748619067558_0.03341106395320104","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-aa44f7f-202506020944.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-aa44f7f-202506020944.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-aa44f7f-202506020944.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8affdc9ac1e5044a110b4ab549700d687b8ad953","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-aa44f7f-202506020944.0.tgz","fileCount":417,"integrity":"sha512-Erj9bsTrdMDBDuYtAZT6MFB4w8Xag78F7ko9LLl53xyNNU5Klb7zEikRXYvYnUInWU48tvrXXfi7xG/JvOuQLw==","signatures":[{"sig":"MEYCIQDX6lZGugkQc9gFTzpxCeWZNrC1iaQ4V7o6GCS7k8fKDAIhAL9+LWe9kjJWeKZx7NL+DNxmJr5a+CA8pHJCuErXLCC1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29077621},"engines":{"node":">=18.x"},"gitHead":"aa44f7f6197184dd3ac05cac5d976d7ba64c5286","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-ec1b72e-202505301315.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-aa44f7f-202506020944.0_1748857574066_0.27688646369036496","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-dd399fd-202506021049.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-dd399fd-202506021049.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-dd399fd-202506021049.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"54430350bc43883076e2e625bd0e42078595a2d1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-dd399fd-202506021049.0.tgz","fileCount":417,"integrity":"sha512-0pY1ZnW/EjiNL7ZukPwQCjSglnjFC6CPf89bfja8ii5bUf7fYcn2SYmFHSOIwveefJjxsqcGTUK39cwDOASyjw==","signatures":[{"sig":"MEUCIGDXnwtVGSe93Xoi1ABw40bOQX48ivoCermkCsHFgeAAAiEAmZz7aR0RvTdp/hpIghnFl3lF1PYAIauA85DlPRSyK34=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":29090506},"engines":{"node":">=18.x"},"gitHead":"dd399fd647e91973270ece43f69da831fbb43325","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-ec1b72e-202505301315.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-dd399fd-202506021049.0_1748861463346_0.5403448803923057","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-6dcc6d2-202506030936.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-6dcc6d2-202506030936.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-6dcc6d2-202506030936.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4136c5320ed09581aed2f8f4cc4a237197c1c22f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-6dcc6d2-202506030936.0.tgz","fileCount":418,"integrity":"sha512-cz8Gcln9GXxnOzTLzzA9rfaQIzcsYBunGbpURWKpQtJGKFnRe+BTl5uIxzrId2L3kITTW6vHz4i8TxbsLXww9w==","signatures":[{"sig":"MEYCIQCVNwJrj0vjIxJcvcEeMnPFYyyJmj3BAHE5E7HmGXhC6AIhAPwpu+b3hs5hpWWRsD2Srq44IUu2VdstJGGqgtLdf1TQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32685396},"engines":{"node":">=18.x"},"gitHead":"6dcc6d278f1e81a8509a9c64b2b0fd061af7221d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-ec1b72e-202505301315.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-6dcc6d2-202506030936.0_1748943509649_0.9219494292497812","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-396cb0b-202506031003.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-396cb0b-202506031003.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-396cb0b-202506031003.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"02302cc011621f4a3df71d1c2efa8abbe87edc9e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-396cb0b-202506031003.0.tgz","fileCount":418,"integrity":"sha512-gT8a32kSP4PVzBy64BMQjIwyaeY8mE55x9jPBcr9wfnSamuYATnIMnZSnzGslxPeGHYoRKrqdSBMSKQ2pOG+KQ==","signatures":[{"sig":"MEUCIQCEq1c+CT9ZWEsFbYyLBlSL20HkzZdo7TjimtRfe956vAIgBEWQOa5N5QdrjrN9wXCknsZxzZTi2LPtjG8zscLgAMc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32685560},"engines":{"node":">=18.x"},"gitHead":"396cb0b54b2bfb63699831533be8e9ccdc7b63a3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-ec1b72e-202505301315.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-396cb0b-202506031003.0_1748945095732_0.917961720402269","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-396cb0b-202506031018.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-396cb0b-202506031018.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-396cb0b-202506031018.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6ff38006c18b96750a3dfa5293b31f4d93fa2980","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-396cb0b-202506031018.0.tgz","fileCount":418,"integrity":"sha512-I9YGz3puz3irLk9wJ+95mGAbccbYJaHZm4r+d8CSSRkzOPFiNma0QLkKboTZ1as4OgUEFd8/Z7rcB+ZaQxtITA==","signatures":[{"sig":"MEUCIQCzR1jnxn1nsa5hoolDcTbZU7MxwoMPLdJfs665P/raJQIgfQPK38EQ3YJI9khSYe3Acp+EOBidH+7Thdzjfr44L6w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32685560},"engines":{"node":">=18.x"},"gitHead":"396cb0b54b2bfb63699831533be8e9ccdc7b63a3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-ec1b72e-202505301315.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-396cb0b-202506031018.0_1748946009925_0.0717086043352606","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-54763fd-202506031222.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-54763fd-202506031222.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-54763fd-202506031222.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e52e4da029fb010adfef3df0b4b94d331b1aba68","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-54763fd-202506031222.0.tgz","fileCount":420,"integrity":"sha512-zcsJO7AssoJeOWyK488j8dop9lNLXv53uSMgSs8H1LpvwylB5P2fQVZrBGbLdgz0MgWPt8Vf0dqYrFT1R52rFg==","signatures":[{"sig":"MEYCIQCuZUXkyqRPI3SiUPFmLl4tmZREjxuyLq8lMe+3rxY1pgIhAI0NFugH4R86mcjXjPT4G5vvrDhn+jwL+8QHVYnGx2Xo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32689566},"engines":{"node":">=18.x"},"gitHead":"54763fdfff6c4c28a092f26107b4ff05b61358d9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-ec1b72e-202505301315.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-54763fd-202506031222.0_1748953452436_0.664773481294517","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-54763fd-202506031236.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-54763fd-202506031236.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-54763fd-202506031236.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ac4d21d6f3cb112480482a772af2730425ec0d49","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-54763fd-202506031236.0.tgz","fileCount":420,"integrity":"sha512-+GLgnesm1wtiwwuUMEgghwk0ISHN48okBGkh2NEPguO0Tftvg5HoxRcGenhWli3Duo9Xo9tPeTX+tHQIY75J1g==","signatures":[{"sig":"MEUCIQDD08fel7NXstz9OMJRaRVYTewdtpOCr68C4gNAYyQpYgIgLvEmlhBav5zbGG64g0j3lwdBnWT9QtSrLdxJYUPg71Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32689566},"engines":{"node":">=18.x"},"gitHead":"54763fdfff6c4c28a092f26107b4ff05b61358d9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-ec1b72e-202505301315.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-54763fd-202506031236.0_1748954276747_0.7944716735234902","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-b123e32-202506031313.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-b123e32-202506031313.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-b123e32-202506031313.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"62c12c3eefe0499233d4b6e20a17afa9f7309a95","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-b123e32-202506031313.0.tgz","fileCount":420,"integrity":"sha512-AxHvomqb3KCxgEh15r+jYxSv7X1L9yHmO+/Ux34LKZ5TSNTM6VBY2A6ZXLIhQ6bObwKAZgBSoUwn0VIyCFV2cw==","signatures":[{"sig":"MEUCIQCbSV7BFQUcSKNYPn6oA3a30cPCNX43Tl8WWVLhBNtI9wIgD5H+z82G5yTFCLdtiqWbpnQpWtg20ayXJjv5viE/on0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32689566},"engines":{"node":">=18.x"},"gitHead":"b123e32abcd993d72e96e2f183e3a672e438136e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-ec1b72e-202505301315.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-b123e32-202506031313.0_1748956489874_0.4733608371071001","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-a56a8e7-202506040934.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-a56a8e7-202506040934.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-a56a8e7-202506040934.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"aba254031b8b4729acdad4881d85bd79828c9b0f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-a56a8e7-202506040934.0.tgz","fileCount":420,"integrity":"sha512-2itjwqUsa4GgnKJHl8MUNueEN9sSGS4sbGy3LCL4v3UXtGL2jvZa3wTCcUq80NKwxfS0IHdKnPt6OsZbJEwXzA==","signatures":[{"sig":"MEQCIB7eg6VCCTJziSHK+0mLPW/rRQRztR3dkbtaMOZit2xlAiB2hQXOEr8fQuD4Ir5hZ++ikWpNynW9PJSRMj7pCSAwRA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32689477},"engines":{"node":">=18.x"},"gitHead":"a56a8e751df703561eea4389502b322304f75ae0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-ec1b72e-202505301315.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-a56a8e7-202506040934.0_1749029748733_0.37716979729852484","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-a56a8e7-202506040950.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-a56a8e7-202506040950.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-a56a8e7-202506040950.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"05a08c83ecbfb9cd69b4aa6161ab40582ec9368d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-a56a8e7-202506040950.0.tgz","fileCount":420,"integrity":"sha512-sqCGkyGsBXSU1bvQi/mkauG+vGTEfyjyQ1xOXOA90ACRq2XbY/8uZos1HjejYpcLkTZSPg/jpR1M9CnKlxhHgg==","signatures":[{"sig":"MEUCIQDBHM2z7Qhs7NdMSqBjJV7C33vSUMsnI40LY/NlVWimxAIgBLJqptBoJTn7Eq0Ev0Q1JyGJEKQHt+/0+i6BAVW+eQg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32689477},"engines":{"node":">=18.x"},"gitHead":"a56a8e751df703561eea4389502b322304f75ae0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-ec1b72e-202505301315.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-a56a8e7-202506040950.0_1749030718396_0.7162753696137443","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-72a8a56-202506041202.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-72a8a56-202506041202.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-72a8a56-202506041202.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a2fd32e34af1f25e92353474786919db66aac52b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-72a8a56-202506041202.0.tgz","fileCount":420,"integrity":"sha512-j/BuJh5/3dkzGABVOT+yclPLMHQBwf60CThZaH4giyBT9eymLaZKZSrdVHdx8mL3Fid4cMWjR2mznA4nbF7v5w==","signatures":[{"sig":"MEUCIDfMITacmXAxlAQJcjEFAinzPf1Pue7ifuK7FW2kRDqAAiEA+imjrVENo52EHc+yhfkR0qoIYhQSXyeSFoV7Hi4Kres=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32694753},"engines":{"node":">=18.x"},"gitHead":"72a8a56d49c845891d50884c4b2a3655c563d9c9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-ec1b72e-202505301315.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-72a8a56-202506041202.0_1749038639869_0.17355555325929828","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-23ba907-202506041519.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-23ba907-202506041519.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-23ba907-202506041519.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"60c91ec50ab83fe5d52ef674724df33445b816da","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-23ba907-202506041519.0.tgz","fileCount":420,"integrity":"sha512-dzQmagHsEcbDJ/YDD2xhrK5uL2YwtA6xDa+xiN/mWn4ou2KDXtYbfFnt/Z889y0sdWp1TEEDj7zyLhp3J/Hs2A==","signatures":[{"sig":"MEYCIQDCq4DAGMK4OJGDYntM2c050NzKflKxuWSBUqj+pjfbewIhAMWHJ86pwDuu9W5iZuMEz3WFnXK88doQ64VEb1CairR1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32702050},"engines":{"node":">=18.x"},"gitHead":"23ba907b4f742788bf6c507232e0b4ab591b7c6d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-ec1b72e-202505301315.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-23ba907-202506041519.0_1749050489558_0.514547763394487","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-409d3c3-202506041522.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-409d3c3-202506041522.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-409d3c3-202506041522.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"03cefb19f0036e76cc2655c96d69cf6dcc2526e8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-409d3c3-202506041522.0.tgz","fileCount":420,"integrity":"sha512-2aEi5rbsau3HWSKd53wVKdorcwj6LsIpI2STNncYsccrdn1eqMdnvLevAGFNJKnOTvwPo7vab/jTuzAFBdtErQ==","signatures":[{"sig":"MEYCIQDcTTnEQlUGohZLIWuA/igKJKe9PF/QnLQ2oRhHabGZWgIhAJKfvOsbfYU0bhgSH/NR8h2DW065FM8CQkiP6P4plKzS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32695572},"engines":{"node":">=18.x"},"gitHead":"409d3c357b443b06b4bed3c70db2ceb431663c39","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-ec1b72e-202505301315.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-409d3c3-202506041522.0_1749050649573_0.1698933547807493","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-409d3c3-202506041537.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-409d3c3-202506041537.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-409d3c3-202506041537.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dd2cb5f6034a75eb17af90092aaadbdb7e26d128","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-409d3c3-202506041537.0.tgz","fileCount":420,"integrity":"sha512-eCuRcZnpS4tpvawbL0J9TLEvKmxL2/CYtIcJQvgCeLoLfDcan7Xkht8FV46BZVJfCvpxkE4qg3n/vSsttZZtYA==","signatures":[{"sig":"MEYCIQCTbXY/pai0NytVBqts6TDSlL9YcD7SYOQ8mC8fw+0PQgIhAKOSDl1UxhcsbhT5Sfga0cWGktGhhlYbHWg8pskex7a/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32695572},"engines":{"node":">=18.x"},"gitHead":"409d3c357b443b06b4bed3c70db2ceb431663c39","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-ec1b72e-202505301315.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-409d3c3-202506041537.0_1749051541018_0.14213777997993016","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-6fb33f2-202506050834.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-6fb33f2-202506050834.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-6fb33f2-202506050834.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b0208a970fbaef44c975badaa1b502c38f7d1eec","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-6fb33f2-202506050834.0.tgz","fileCount":420,"integrity":"sha512-jJ93SO/Uj6hNi3dx5cYosAxFI2q6UBMGTmb4U6AbfUtbmeJpBNrGcgbwzGEvM++wT4x364mNOdjC4AFdiLvSzw==","signatures":[{"sig":"MEYCIQDqpOtXKFK9mLGMIwqH+1bzGCW6CZ/5W/9iGvtr9WFShQIhAM0370yIO8LJ0w6dYyZzmZCPi/LuSNaJ4QyBwqnCzeuz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32695013},"engines":{"node":">=18.x"},"gitHead":"6fb33f284ea490ead8d063c4b22a0ef1eb61f6d4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-ec1b72e-202505301315.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-6fb33f2-202506050834.0_1749112549946_0.5427989425782089","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-6fb33f2-202506050904.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-6fb33f2-202506050904.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-6fb33f2-202506050904.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a90cf13b2debb77c8552297371c72d7851d9e63e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-6fb33f2-202506050904.0.tgz","fileCount":420,"integrity":"sha512-p0li0Zo/DkDWzERK0/bPIi/7JyP7NF2vhHlIoNiTVDGdEC+eC6f45tSrBt4G2DMxz1dFAcV+3bi+RKuCZOPDeA==","signatures":[{"sig":"MEUCIBTAAYOIfxuY21CWfP/TRIMiEpwUxpxoICY14NP1Hqt2AiEAmZ/6g+hZXBBPmzUnwKyicRVoGW8ImTyrMLcjdb7TgT4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32695013},"engines":{"node":">=18.x"},"gitHead":"6fb33f284ea490ead8d063c4b22a0ef1eb61f6d4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-ec1b72e-202506050903.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-6fb33f2-202506050904.0_1749114385313_0.6703886673143296","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-5e0d888-202506051027.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-5e0d888-202506051027.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-5e0d888-202506051027.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"be895971a7714687740799c4128127c323567150","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-5e0d888-202506051027.0.tgz","fileCount":420,"integrity":"sha512-CIpIIfI6faQoQoLLyN1bVvMSeebEhlhhpThiD0NVvgYfEd5ZcCOoHO5h8AmqaFPBJ+7OITvxsvLltMU4OtmLVg==","signatures":[{"sig":"MEUCIH36OInua30WdW6VzV9nT9FArKnqNwZBRjAImiBQ4JPJAiEA1ZyxtTYUHmXAuldV9I65eHOx0aY3Ba9+ASRB8KlIA4Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32769472},"engines":{"node":">=18.x"},"gitHead":"5e0d8889a43ea40484ae9968a9ca14909cc87a1d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.17.1-ec1b72e-202506051026.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-5e0d888-202506051027.0_1749119321946_0.606886826619079","host":"s3://npm-registry-packages-npm-production"}},"2.17.1-5e0d888-202506051042.0":{"name":"@flowfuse/flowfuse","version":"2.17.1-5e0d888-202506051042.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.17.1-5e0d888-202506051042.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bf828e37744c506457ec1c9a70c7620958ae17a6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.17.1-5e0d888-202506051042.0.tgz","fileCount":420,"integrity":"sha512-zigHsOA4UAU4g8gfDSyMhI/UzF/Nm5KKPWYmBGhCjzvnEQWgJRKCabn+NCvCF2XhoDra0RVDyraTvnimGI4bDw==","signatures":[{"sig":"MEUCIApl3ftbOfV+HuQ7WVbLnTwLexHzPMUO2VIt0UYKywjxAiEAqbso2kDt1PUfQI37C1syFuNcUkCHtKWyO7nHJHDyjnQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32769472},"engines":{"node":">=18.x"},"gitHead":"5e0d8889a43ea40484ae9968a9ca14909cc87a1d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506051041.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.17.1-5e0d888-202506051042.0_1749120234996_0.4934846668404371","host":"s3://npm-registry-packages-npm-production"}},"2.18.0":{"name":"@flowfuse/flowfuse","version":"2.18.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"690721d805c4c749a090c87d03cdf7b8195053c1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.0.tgz","fileCount":420,"integrity":"sha512-2qHGf7EME/MmpjuuzvVs+FVWud6xEu0S3LqisS0ZzylQyrXJplz9jIkLcE01MnxbCscjK5UJl01hm/+/en/H/A==","signatures":[{"sig":"MEUCIQC8D7MJQ+ipr46uVxZ56Gj2pCY1pCECVWphsntwLK6yCQIgLLOX+cv41cXZ/msX9Bllu2QDPTZdAKgNM3EkpqoplUA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32770077},"engines":{"node":">=18.x"},"gitHead":"e0c2b799fffc5f9afaa3e3de68030e70137c56d6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.18.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.0_1749120568491_0.2996206962691199","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-e0c2b79-202506051047.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-e0c2b79-202506051047.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-e0c2b79-202506051047.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2acdd9002c36b09be8bc36c1721e52c44d9643df","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-e0c2b79-202506051047.0.tgz","fileCount":420,"integrity":"sha512-v+a8Rv3bKjFY7uhWJ6ctXsbiim0fTSICEDPSyQqUWo38iYOEEc8i91PWFNPJ0Bx5aEphhTZRl8L2dpbJN6zRXQ==","signatures":[{"sig":"MEUCIQCQQn3WgNJYueazdGe+OSFSZs7L5iUkMkmwtEAF4lgYDwIgeNsx5uI/QHfkjLuCx6oxPeIrBUUptMQ8DqIHVlL+IaA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32773258},"engines":{"node":">=18.x"},"gitHead":"e0c2b799fffc5f9afaa3e3de68030e70137c56d6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506051041.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-e0c2b79-202506051047.0_1749120571099_0.4322729052735308","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-e0c2b79-202506051103.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-e0c2b79-202506051103.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-e0c2b79-202506051103.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"57b0551b91c686c65af0779dee329294140b20b6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-e0c2b79-202506051103.0.tgz","fileCount":420,"integrity":"sha512-2h7EaQJMwi1eVssZ/PHA4/7ATVlVZcOi+6G5nVSZH6Eic6pjujFRMIjknzpNp4fLy9shiprJfk81Z92hEZUp/Q==","signatures":[{"sig":"MEQCIHneEr+W0JFVMfVs7AtzG5lsRPOGGXTWEkpz5uvg5namAiBILsFKaMZQX8+ebyoxGf/fRq08wJM2QDUhd33qOCjSrw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32773258},"engines":{"node":">=18.x"},"gitHead":"e0c2b799fffc5f9afaa3e3de68030e70137c56d6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506051041.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-e0c2b79-202506051103.0_1749121484916_0.7906356797778891","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-a3bdfab-202506060709.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-a3bdfab-202506060709.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-a3bdfab-202506060709.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5991e3beb9f8cc011c57f1190709ec00c8f74c78","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-a3bdfab-202506060709.0.tgz","fileCount":420,"integrity":"sha512-gQm1zSDuaurYCN+Xwwb8jyVfV4bNMyJmvOxs506uzAg6biLUe9kvTMVc/BDpYpg0dJFyYxzZ7rnufEq+4wC2cQ==","signatures":[{"sig":"MEUCID+v9uph+AAEqen+Wj/686Y3pY0mtbT2pSU/RahO+97UAiEA2ZtQSMXmN5CoUKS56VksdA8W2NYOab28KnV5FAGRwXM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32774585},"engines":{"node":">=18.x"},"gitHead":"a3bdfab2c84d1104c38f1de6619868ede19dba87","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506051041.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-a3bdfab-202506060709.0_1749193850546_0.7622314414021538","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-008b3f2-202506060917.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-008b3f2-202506060917.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-008b3f2-202506060917.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a23e55f217779b03e2fa80819c699ae5bb80d41d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-008b3f2-202506060917.0.tgz","fileCount":420,"integrity":"sha512-LGDd3nptWs9yPBmhm/1O2SPZBzBd3+9Zex0ylcLZJBjsdlpyxC5d155dQ8Fil4Az+O5x3aBQawXy/pry7lqjSg==","signatures":[{"sig":"MEUCIQCz/RniB8LRi4FnKYeWK4Ec9LRfv8DE40xGlr2sjsZ6dQIgd1/st71bg/Ad/8MLaBvRbeu4XYHFK7DJwtThcBsDFxU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32774585},"engines":{"node":">=18.x"},"gitHead":"008b3f23bf4cf78e24e8450b69767898b4329b4d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506051041.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^4.15.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-008b3f2-202506060917.0_1749201573118_0.7088733741608924","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-ec2ac60-202506060945.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-ec2ac60-202506060945.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-ec2ac60-202506060945.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"af8a513b23e93c7e470f36d74e06f1ebd613efb0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-ec2ac60-202506060945.0.tgz","fileCount":420,"integrity":"sha512-KSNLIn34TDEEit+eHB8f+8Pw1ekEicFxh3vvfudebko9zchP4E3HoPMkHQI/7CQEqwkj/ZHzJkQWHVba0ZvQLg==","signatures":[{"sig":"MEUCIQDqFdcs+wqupvoQIgV2yEP0uML+aChe38rZEdc0xx7D8QIgSAbUZ+fYqj1o1XzvvTgGCcB8yve8u25J8sk6AkSR0A4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32774584},"engines":{"node":">=18.x"},"gitHead":"ec2ac608364308f0943800908993b07ea9616c8e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506051041.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-ec2ac60-202506060945.0_1749203197311_0.9461045011560474","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-ec2ac60-202506061022.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-ec2ac60-202506061022.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-ec2ac60-202506061022.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"036efaed624de526a263eba75356ddfef8479048","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-ec2ac60-202506061022.0.tgz","fileCount":420,"integrity":"sha512-M7qszIqGojiFVMk0Hny7mPDUZcI3nBqOI/3jhYb2h1+xCRSbuGgo++nfucZRHbNYwLC7ePhr/bUWPm7g4pi7vw==","signatures":[{"sig":"MEUCIQCbWCmw9EKaDEr4MYQ6Dlndlms6rvMEugtnf8lKTQDXpQIgQj0EB/ZM1TU2GFbt+oRx2C+F/ZQ2m8ZF8FowajaToCs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32774584},"engines":{"node":">=18.x"},"gitHead":"ec2ac608364308f0943800908993b07ea9616c8e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506061021.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-ec2ac60-202506061022.0_1749205431119_0.4503429953257645","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-ec2ac60-202506061025.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-ec2ac60-202506061025.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-ec2ac60-202506061025.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"12196b674ad2bfaaf2bdaca9118507dce10bde56","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-ec2ac60-202506061025.0.tgz","fileCount":420,"integrity":"sha512-O7NpOxgvaz0OgSsu6dYhazeeRo4jLLAXEdszidgsKBtGBhUfQX3KPo+HJEMxrn5Irkzng3aq5oY+hAjFdJ+7vg==","signatures":[{"sig":"MEUCIGBSbSTz2m+lkR1iZPBNa+6zMOojqQ7tB8eqC3Nqw3l+AiEAnsPJWUU6JyAB6rlVhG1FYb15tJ2GZ/H/bJECbH0QfDY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32774584},"engines":{"node":">=18.x"},"gitHead":"ec2ac608364308f0943800908993b07ea9616c8e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506061024.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-ec2ac60-202506061025.0_1749205633716_0.7089911070292265","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-1d9a79b-202506101553.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-1d9a79b-202506101553.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-1d9a79b-202506101553.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"67ea8ca732a1b7bd554901b929f2ddd72671d7a0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-1d9a79b-202506101553.0.tgz","fileCount":420,"integrity":"sha512-9ykwVuU6cHz0g8Ewqpqk4GJ+zkLh9YGzq/8k7mY5eohxvYuTrGyPa33pE5UCrQyZxGiUGzwbCE0ByqwhNA7IHg==","signatures":[{"sig":"MEUCIH4LPGPeoJC1puV7QzD7QRlPr3rUz92yZo8kBlTJbnYVAiEAwdJTtANPParXo44vDo/yAtCYR5qkV6tEtUzbfTzHTwM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32774748},"engines":{"node":">=18.x"},"gitHead":"1d9a79bb2e8b8dfa637d46756360fcf0f780cb30","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506061024.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-1d9a79b-202506101553.0_1749570873319_0.6364620634296736","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-5706184-202506101816.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-5706184-202506101816.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-5706184-202506101816.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d9ea785189585119ed53a888c5053e371c8d2938","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-5706184-202506101816.0.tgz","fileCount":420,"integrity":"sha512-xw2H3fyPGgjmsQsa4Xo4sOBMP4kF7C9Lmp5yRAf4i7yF/tzLME7+Mla8gqP4N+p1NnRj3cCkkvIKQ7WuIgFgYA==","signatures":[{"sig":"MEUCIQD2qPBLQcuRzVpcsLQy5lrvTHa+NB7R0YWcFtxcTLE3ugIge5BgYZ6QHz39xtHjjJz3smAJ32RPbk8okq3dHHCkOqs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32774748},"engines":{"node":">=18.x"},"gitHead":"5706184529acd110d1dd12573c8b9339ca1defe1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506061024.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-5706184-202506101816.0_1749579503252_0.7377485231456042","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-72c5f2b-202506111614.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-72c5f2b-202506111614.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-72c5f2b-202506111614.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ccfc5f540398d3e6caa39ba403f481704abe1620","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-72c5f2b-202506111614.0.tgz","fileCount":421,"integrity":"sha512-w/7NnnPd9xQK6STyutaBsW84/l/C2pSK4Qt1v4tRoYNyNpgV8bMzN/7FBTAgjtKjDTuPWSvjwYUlqbRqJmWP/w==","signatures":[{"sig":"MEQCIHCqGgTEMC4PA+RO23thppSARaRKGBsGO3lClWoG75z9AiAXidSGwXWfHMn8igEV/QpEhHtdonCQuh0xIiYpf41nxw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32812146},"engines":{"node":">=18.x"},"gitHead":"72c5f2bade93f5a6fd0b14b74b3ccbfcde678470","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506061024.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-72c5f2b-202506111614.0_1749658587785_0.680090845181734","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-72c5f2b-202506111912.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-72c5f2b-202506111912.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-72c5f2b-202506111912.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c22a9e711278a32a6aa4a54854792f36843e80f3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-72c5f2b-202506111912.0.tgz","fileCount":421,"integrity":"sha512-WIOgGGPVYqjd89c84YvDLx/WUyl9t3hUgaqopWgGkjVCKxD8M/xvoYe6/gfpYXY8ghvZggxpM/KLTOWmHK0dfw==","signatures":[{"sig":"MEYCIQCu5wWT0hDSDLFN1kzld3JNNyinqcJx0Nt3GSEAiqbDxwIhANx75ILofcje90zVgiz4Hg8TbuNAjsDLRPsLGBnRBWoe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32812146},"engines":{"node":">=18.x"},"gitHead":"72c5f2bade93f5a6fd0b14b74b3ccbfcde678470","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506111912.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-72c5f2b-202506111912.0_1749669251686_0.7509196207230657","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-72c5f2b-202506111917.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-72c5f2b-202506111917.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-72c5f2b-202506111917.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4e3922998ce03ad864054fb6976336911a060047","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-72c5f2b-202506111917.0.tgz","fileCount":421,"integrity":"sha512-sKgiQj/E4s3ALyPNqlyeFwxL3hCJeMfftl3y0WCJIE5DB3VOp+V3vIxbbJlS/WwjWVSGwYA++Odz5wjpLGqC7Q==","signatures":[{"sig":"MEYCIQCZys3WOehmOUCCPbCTGuhgbdtilLuAc9tH9mnsnv4wQgIhAP+QSBD/t3QIbW9TpofN4IOWR4qTJo0HRvxx1WtJznFN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32812146},"engines":{"node":">=18.x"},"gitHead":"72c5f2bade93f5a6fd0b14b74b3ccbfcde678470","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506111917.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-72c5f2b-202506111917.0_1749669578451_0.28974198445326116","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-3983ad0-202506121008.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-3983ad0-202506121008.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-3983ad0-202506121008.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a8e9da3ac0a73c0de3f6cfed4ddd5bd36d237719","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-3983ad0-202506121008.0.tgz","fileCount":421,"integrity":"sha512-seiWjRvVT5H2eX+ddPzp3LYfT7V4a+HsU+iiFvIGqvfMOC/6+lXMmoGCyJAMvNv5tmCmv0lxBcikpuBlBXfRwA==","signatures":[{"sig":"MEUCIARoTFYcVsKUzRU4ems+dU0WRFg6gltQKuSnULzUtdaVAiEAsUBWWODs3+NxCxs9TfBBhxA3OIvjVE6rUOT20WHiapo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32813657},"engines":{"node":">=18.x"},"gitHead":"3983ad01b9e805025eb32e8c5834ca6eb59b3001","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506111917.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-3983ad0-202506121008.0_1749723000476_0.4014494091999061","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-3983ad0-202506121250.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-3983ad0-202506121250.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-3983ad0-202506121250.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"33832fe3e78b33d9c0347aa974c3f20a5d90dc02","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-3983ad0-202506121250.0.tgz","fileCount":421,"integrity":"sha512-Rc2p6zitEcvRu6Zg4zJXLq7vM6nUnv+yJJEn3XgBRVSGId3p0M5YpGf3vg95byG/Wak0kz7VDNddltvaKCtqeg==","signatures":[{"sig":"MEUCIQDxRbssr8Zu+n0tsJTUwZE3ArBAtliKfvqWTs3CvajyFQIge9TfdDWEzSahhN9GxE3neumIKp+gjwEHivJBs8jkw8w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32813657},"engines":{"node":">=18.x"},"gitHead":"3983ad01b9e805025eb32e8c5834ca6eb59b3001","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506121249.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-3983ad0-202506121250.0_1749732718952_0.6932312897242814","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-3983ad0-202506121515.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-3983ad0-202506121515.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-3983ad0-202506121515.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f302ef61c13cd19530898b77de284f46ac721eb0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-3983ad0-202506121515.0.tgz","fileCount":421,"integrity":"sha512-wS50t8T08HOyk5/ACBSki6evYXTUVvvXI7c8qU9B5ySaflkRFvdH8NSMU97O2qn76Rs5dszyFIiMcqSxNspwIg==","signatures":[{"sig":"MEYCIQDGdjt7tfQI9KuCAohFff7qzllYsuwcbCdqjRaSI/Mv3QIhAOubN0CDswMMyCRL60xXfkjA2+Jhpipl3XLatZSQgd3h","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32813657},"engines":{"node":">=18.x"},"gitHead":"3983ad01b9e805025eb32e8c5834ca6eb59b3001","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506121514.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-3983ad0-202506121515.0_1749741426083_0.6202020580462002","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-3983ad0-202506121537.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-3983ad0-202506121537.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-3983ad0-202506121537.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bf241e20743fc8f717baff8972dfc4b2e1e6de8f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-3983ad0-202506121537.0.tgz","fileCount":421,"integrity":"sha512-8C8DyLXdYGMFLtBUkFMRGUvp+vyF4a/D4n9e4iAeVW83Zm+LfgX5csNHqmSl3+geYOWWR4Bb0WlhRfRgB569zQ==","signatures":[{"sig":"MEUCIACp4EwtvgiCMDNM9VnWvx3bYaW/FvbRLCDESm+rQlYAAiEA3G24yH1dUYW3KvoBZsTRZMQRAvvrVOrBN3yPqx+wT3k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32813657},"engines":{"node":">=18.x"},"gitHead":"3983ad01b9e805025eb32e8c5834ca6eb59b3001","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506121536.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-3983ad0-202506121537.0_1749742731223_0.5107786389856455","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-e255489-202506131320.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-e255489-202506131320.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-e255489-202506131320.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"358786eab273eb000c3673d0e9eabb3aa7b22666","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-e255489-202506131320.0.tgz","fileCount":421,"integrity":"sha512-O1RW9UhwR44FhG41yFLQLEGIxSI57tM7zNHB14l0X3ZtoZ/dAuUV7ztZlWf0YwOeRBaLTuN1ViIFHQ0tppCyzA==","signatures":[{"sig":"MEYCIQCBgemny7dmTHj/gdcjpkwF26k+VrvBwcAN6rp1Q4M+/gIhAJLOzDbt7B2OHl6Y5iFolbaBnQ6pmym6yxtB2lmOqr2j","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32813675},"engines":{"node":">=18.x"},"gitHead":"e255489f1cd904ea61218cd7e147f0172c26641b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506121536.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-e255489-202506131320.0_1749820934861_0.03850859727041556","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-e255489-202506131431.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-e255489-202506131431.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-e255489-202506131431.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d31978e5304b1bfae66b0fd03acaeb864cb66878","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-e255489-202506131431.0.tgz","fileCount":421,"integrity":"sha512-d2ET9tT3WqUgwBDNmQejjlBEvbhtNCmxa0n7xOMJSH+LMdXKODSjjLAbzLWzz0mGL9IgUoVjVuE8HTP4iI+fSQ==","signatures":[{"sig":"MEUCIQDORLO+g2UqoeKAahG+lZkLn0rJ7KqHPRm9ofPnLbE6HQIgTMjK3na1wsBhwGSGp6i6tSNGA3/jB49Z6ohwTEymjzo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32813675},"engines":{"node":">=18.x"},"gitHead":"e255489f1cd904ea61218cd7e147f0172c26641b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506131431.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-e255489-202506131431.0_1749825208507_0.9157695916364801","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-e255489-202506131702.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-e255489-202506131702.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-e255489-202506131702.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6506ff832ec4b77d80032fa846a092ad2b95e21b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-e255489-202506131702.0.tgz","fileCount":421,"integrity":"sha512-OR+p84GixJiPAe1op3E70zlym2CicyV2ANxLXwRW6g4bWjoRXp1RChberrRoVEdg2u0nH0ajW/4lLqRdJkaHpA==","signatures":[{"sig":"MEYCIQCThzLJIcm7eFPn398QrY2Jcdur+M2bt033wDCgvfFPUgIhAJRK8H/cEfSRPN9eKnsjUrebN0EuIWpAKsuaHAY3FwRi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32813675},"engines":{"node":">=18.x"},"gitHead":"e255489f1cd904ea61218cd7e147f0172c26641b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506131701.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-e255489-202506131702.0_1749834218846_0.5497245656738827","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-e255489-202506131706.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-e255489-202506131706.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-e255489-202506131706.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"46221fe73d19fcef417c34d057ad8ee50f58adf2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-e255489-202506131706.0.tgz","fileCount":421,"integrity":"sha512-k1mMThDP4W5sPyRuCpDLmJgzN3gf5nrtofE5PHjgBtXju9KigUNWFYg/JRaxhw7AixrB/Dsp6qgVhn3mKLEnlw==","signatures":[{"sig":"MEYCIQCooAJlp7uW7TheZ5WqCgorx/4C38n7TReVFohj38GjUAIhAJbkb1tNCmLhgBaCkU+tYYoUQiNRBtUe0j5iHbgQPp+P","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32813675},"engines":{"node":">=18.x"},"gitHead":"e255489f1cd904ea61218cd7e147f0172c26641b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506131705.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-e255489-202506131706.0_1749834458647_0.32636090755733016","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-347de6f-202506170937.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-347de6f-202506170937.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-347de6f-202506170937.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f6e17aa4bdf33f732cb4127752a71e8cccbb382c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-347de6f-202506170937.0.tgz","fileCount":421,"integrity":"sha512-Gj4nJmMX69udgZpoA1T2dg+QJZjSdG5NHAgFJe2LPKx+YZ75K0QUxILw+soYvjcL12uRsRP+ZSCCMlRPVM5YtA==","signatures":[{"sig":"MEYCIQCq93wWjPyclQ+w9i0G+fZNH34yrv67Ck5V4RFL8+M/RQIhANm5cEwWdINsn30cSu2Ysy8dxP3dnBJaSx3tB+WBS7TL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32812798},"engines":{"node":">=18.x"},"gitHead":"347de6f72c85b5b9dc804b691ba79bb07de5052b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506131705.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-347de6f-202506170937.0_1750153124680_0.8308330179503809","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-347de6f-202506171457.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-347de6f-202506171457.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-347de6f-202506171457.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"da51203855d648cc2dec8db0b39bdc20b631bdb9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-347de6f-202506171457.0.tgz","fileCount":421,"integrity":"sha512-q1aGgZ1HyYLpIFasFj7JUqyEpKAJZ5rh5oc9iI1nsBurxa6uNi1Kt2TzPs7JimFSNMyPEL1UHNXsgU7KTK21vA==","signatures":[{"sig":"MEUCIFQGsR0sIGUbfT6narVvk6hDnsvBdEoYfNe6FkoMEltCAiEAmb7TICDF8j5DSyo1z3Vp/pouFEx5IQgiomn3Odv3dPY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32812798},"engines":{"node":">=18.x"},"gitHead":"347de6f72c85b5b9dc804b691ba79bb07de5052b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506171457.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-347de6f-202506171457.0_1750172358688_0.1371263192974248","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-347de6f-202506180950.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-347de6f-202506180950.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-347de6f-202506180950.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0ee7721742ad701b27ccb3131ed282ad73df2862","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-347de6f-202506180950.0.tgz","fileCount":421,"integrity":"sha512-5RnXjcAc0Ge3A7KobNjfagvvz3cuqIk0yN2R4Jukokd4PWa2Qt+kQfabsruq5fS5a3OHh6O0EWuzVdTV1oCz0A==","signatures":[{"sig":"MEQCIAj6zM2/e8w5ujzMgydZsTFDeSxEV8JcnbR+n4r13cQ+AiB6odBhRaKd9HemmjIKGwlqeowWu279oCzvMJTTtxff7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32812798},"engines":{"node":">=18.x"},"gitHead":"347de6f72c85b5b9dc804b691ba79bb07de5052b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506180950.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-347de6f-202506180950.0_1750240343731_0.5266845412631032","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-9d0a50b-202506181110.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-9d0a50b-202506181110.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-9d0a50b-202506181110.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0b18374cbf54a57389d988dd98668d7c727b250b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-9d0a50b-202506181110.0.tgz","fileCount":421,"integrity":"sha512-Qvq+bNxUVmuhQx7YZsNoJ4bmmKzmPprUKi9uIZdZEMXd01OAg16NXk7iJ2A8ocTkmQ1sHtXOIV+SxtOvcIh5Xw==","signatures":[{"sig":"MEYCIQDALbDRhUe0CFxxceM+b8mwZ9tEKkNe1XPSJ+THk5LGVgIhAIK/mAWtwqRNqrKW02iCMplYOjqoG8mP+owEm5RgIy2q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32826628},"engines":{"node":">=18.x"},"gitHead":"9d0a50bb2c823739d081d95199dc88885d74046f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506180950.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-9d0a50b-202506181110.0_1750245098393_0.15733680707558007","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-10cbb56-202506190807.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-10cbb56-202506190807.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-10cbb56-202506190807.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cc3acd7bb61a24a3bd6ff8217594470b567dcd25","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-10cbb56-202506190807.0.tgz","fileCount":421,"integrity":"sha512-dejv4/aEgYhEGmVzfiC3+oPgSkn8EPUbrTKbTg6c9MWk//h47t3elTLsP6w6BB878YGdk8h5jsz8eplhmo97mg==","signatures":[{"sig":"MEUCIQD9m6e4QDzTFtBoIYo5pGEBNNpbINxVqvDpLEy/Qg/qvgIgI8ufKUky4CWVt70JxVqxA7DmIz2vS1rDhyb8vjIECUo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32834602},"engines":{"node":">=18.x"},"gitHead":"10cbb5681cbeae937fd5d2de79310f9774ed17f9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506180950.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-10cbb56-202506190807.0_1750320542690_0.6709225795354632","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-16e71ed-202506191241.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-16e71ed-202506191241.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-16e71ed-202506191241.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a571c45f4af8693d46942af60b8f49272db8d286","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-16e71ed-202506191241.0.tgz","fileCount":422,"integrity":"sha512-LCBC5uFslYj9/CLBcIs6y7LkEizonGaeqS5FuSut7G681SmtNk8eXmwt585u3fc/Ukj3V1/F/bxqHc7gcHdYvw==","signatures":[{"sig":"MEUCIC+ED1psw3OpE79hpK/371LZ5tG7nLKmLN0RaptvPzuQAiEA/qDNKxZ5pDElqPb0xXH06t8636kvYZgn/NzbgfYZvM0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32874235},"engines":{"node":">=18.x"},"gitHead":"16e71edfe385984146436562f9a518b43c7f309e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506180950.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-16e71ed-202506191241.0_1750336989222_0.02925986111503054","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-16e71ed-202506191257.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-16e71ed-202506191257.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-16e71ed-202506191257.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b5a617dfe4e6a5e485c961567c806b0ba8bb3c9c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-16e71ed-202506191257.0.tgz","fileCount":422,"integrity":"sha512-V5tSi3ie350gjTCOnmBZCxFlKf8ctjZUKa5dbqyqa5VE/IbSOELK49MdaD4f+vtzj9r99VHctbviGbwCLM4ZEg==","signatures":[{"sig":"MEQCICCHllODDkWEe6ueJZp319mbH7ZL+L4F5tifmwTl+LrgAiBweLg1mqo1y/ZrXCJhA7pCspw23wHZP0CpbD5+ekyj9A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32874235},"engines":{"node":">=18.x"},"gitHead":"16e71edfe385984146436562f9a518b43c7f309e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506180950.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-16e71ed-202506191257.0_1750337954863_0.9227565669337372","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-ba8ec09-202506191400.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-ba8ec09-202506191400.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-ba8ec09-202506191400.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9cad1edb4296bbfcec77835ea5e143c261c9faff","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-ba8ec09-202506191400.0.tgz","fileCount":421,"integrity":"sha512-jfs5GlOqYCcKsdmAWW+F42iZ5VKDTgqQii6JnLWB7ogWkwvm0XDLgkxHRRX2k+XBZqua4BWT+aTrMeTvgzlMhg==","signatures":[{"sig":"MEUCIE98I8dK+20HwTyMj4zFViE+g9G1VkBsq7KTX5DhOQ7GAiEAg2GalrXHD6GF5Pcrn4UyvtOHWPpSEuFjKoFnhfnL8+k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32835060},"engines":{"node":">=18.x"},"gitHead":"ba8ec09f8db00c41ffd2f0db9f1a69d10cb4899d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506180950.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-ba8ec09-202506191400.0_1750341736526_0.5715157593681335","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-40cab79-202506200900.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-40cab79-202506200900.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-40cab79-202506200900.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"01946dc9c748e63928281cf3c0e73c78eb4b109a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-40cab79-202506200900.0.tgz","fileCount":422,"integrity":"sha512-jGoh+151NPNeIOfmLa2cycBRi3XInC+ZKtgLFmineAODKvDiLMeeITeeFQjxpfPgEvSPk1SE0CLNCZwUDE5R9A==","signatures":[{"sig":"MEYCIQCOQecjEqaSBsSqwfdNsTJb4UD6C4t1jSSEb/CLadnH0gIhAPYNDWUzj1iFI98LC0mmHKoCEbTyHPo/XT+VXcQpgGsO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32874258},"engines":{"node":">=18.x"},"gitHead":"40cab798f85209e67af4331c6cd869ac29001e9e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506180950.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-40cab79-202506200900.0_1750410142799_0.16146769404293648","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-f054ad2-202506201159.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-f054ad2-202506201159.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-f054ad2-202506201159.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"82170b3de560e7ffc863ef5630f0908486e16e20","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-f054ad2-202506201159.0.tgz","fileCount":422,"integrity":"sha512-Z9OdHWBGK6tE2NTcMmFqJjSGIJSwIxxOL3DXKMjLN2yf2MNK/050ru/9nNbi6ahuQt80dddFFCrg1PqRapTidw==","signatures":[{"sig":"MEYCIQD3BQ3byjeuaFhL2IyQT6Tvg4V8xspFAOQHeWetvK9ZlwIhANjBs94g6OmD4NnWfWXfabH/WI1SgxY2Zs90oPD+Ip3m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32912658},"engines":{"node":">=18.x"},"gitHead":"f054ad26f1cc821e485cc9ce8f1171c43e063b91","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506180950.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-f054ad2-202506201159.0_1750420856425_0.05713007542175319","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-88317ef-202506201256.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-88317ef-202506201256.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-88317ef-202506201256.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"26be8da0fe80c117e57c0644170769d2553d6acb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-88317ef-202506201256.0.tgz","fileCount":422,"integrity":"sha512-oZGCJNmw9A4puQhMNQ9+M/uIxe8mKh3RvZ10yTonGnuXhosu2988HsKVL/S8lQRCmUtMDTCuWvBiek08pVwn9w==","signatures":[{"sig":"MEYCIQCsYEj9+YnNUCDzPsDY4WxrVyiKkGZMST25YZ+cgzwwIgIhAMh7k7xLufcuWZ6M9qtjWukXRst0fwQGcs7r1y6vVrzO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32914056},"engines":{"node":">=18.x"},"gitHead":"88317ef6c96a78d6179590ac2d8e3bc1e937cc2f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506180950.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-88317ef-202506201256.0_1750424280534_0.053056252717702757","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-88317ef-202506201312.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-88317ef-202506201312.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-88317ef-202506201312.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0a536d83222234b6f42d38e47b72090a846aba4c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-88317ef-202506201312.0.tgz","fileCount":422,"integrity":"sha512-3kgqa44YIXmLxdueNCPiOpDNHwrI8vhOWvwyfmkJt5zOUnGSuT7s7R4tw2p40JCyruNV3sHut1Nbl13wpRlQCw==","signatures":[{"sig":"MEUCIQCYg+d00xvLLDziQ0GbNxCzKg8981ZxyzZbya353PjkewIgVo330QtSFzF8le4ZysUFGFDktUjJS7VSx0pkyXwj8do=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32914056},"engines":{"node":">=18.x"},"gitHead":"88317ef6c96a78d6179590ac2d8e3bc1e937cc2f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506180950.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-88317ef-202506201312.0_1750425216246_0.3292785944284289","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-2f810ed-202506201449.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-2f810ed-202506201449.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-2f810ed-202506201449.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"36a2529c7fe2161879816cce64326493e87db0db","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-2f810ed-202506201449.0.tgz","fileCount":422,"integrity":"sha512-WJ5DggJPUJ1VK2J1peNJttutWXxSDSBQlMesAmzm+h4wrSLwhXQrhL6y3OEjuVAM6hUDXAZYDnJkX+Bs995/hA==","signatures":[{"sig":"MEUCIQCGzbyCqGEtS26InUuO8ySZq8aDjnY33wzTQjLNB9HAUAIgM8qVvA2nQhEDCMRjDLLYGupl3O0/X6iiDFiubiRw89g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33167866},"engines":{"node":">=18.x"},"gitHead":"2f810ed9204dd3293f9e183373e90ed24344c9b5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506180950.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-2f810ed-202506201449.0_1750431054427_0.37840677072045503","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-2f810ed-202506201504.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-2f810ed-202506201504.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-2f810ed-202506201504.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8181899e7a6e5e5515f84c4b02dc19bb3a0f5029","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-2f810ed-202506201504.0.tgz","fileCount":422,"integrity":"sha512-q9HhjGjteH+O8u40qjt5OJ0IkRX6+Sa8rdAdUFXjhy5ihO95DXbsRQvmzTDG4kCrVzKz4P3chgTL4UxVxLRLCg==","signatures":[{"sig":"MEQCIAIo0T2o4qcB6GyXnY7NbMadElNyncX7gtTEjcfgWQzGAiA8NBmxO9gQPKWVaokcb14Zme/GLG36zygC8NKnQC09Wg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33167866},"engines":{"node":">=18.x"},"gitHead":"2f810ed9204dd3293f9e183373e90ed24344c9b5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506180950.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-2f810ed-202506201504.0_1750431977859_0.8406427003837322","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-529bc75-202506231151.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-529bc75-202506231151.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-529bc75-202506231151.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"43fdee06fdfc10f757cf2cdcf66d94d8ad874b9c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-529bc75-202506231151.0.tgz","fileCount":422,"integrity":"sha512-IpAx8cHrLW7MJIQKnxXPWYlSwRWuNRyAJCMeprhzys0Bvc4niuaBuyuSdYVn+AT2RFTfKZXoTuj5nAQEPtnvqQ==","signatures":[{"sig":"MEYCIQDkFNnGanEIRRqOqmPBootg71vCbbpOfsacIkbHcVTGDgIhANBxYCwMe1iYKz7iNJ6h5U7OFtgJd84i0rY3ZHBxrYYQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33177295},"engines":{"node":">=18.x"},"gitHead":"529bc75f891591597eb2eb0c64bef5e85082d0db","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506180950.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-529bc75-202506231151.0_1750679579584_0.37932655290855655","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-529bc75-202506231206.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-529bc75-202506231206.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-529bc75-202506231206.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"14c42e6e235db830f77d960e3d3da2659e1c66c8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-529bc75-202506231206.0.tgz","fileCount":422,"integrity":"sha512-pCUNZzrlns5HGmpBqbCrT+qaKYwxW+G45dEhZ8sOTEc0OBMIUvdWroIw0W9c+MmDBW9zV3ZZOzz4ztUWqDY7sg==","signatures":[{"sig":"MEUCIGRw00OoJWsQfTG18S4G0FeudQCPeL1GE/WgSjwyTd2RAiEAuc7n26S9QeRm1ZlLdqFIPSsyCzmJ+9X0+Ifo1j2CE4E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33177295},"engines":{"node":">=18.x"},"gitHead":"529bc75f891591597eb2eb0c64bef5e85082d0db","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506180950.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-529bc75-202506231206.0_1750680507452_0.17925931151404773","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-1fb6fd2-202506231535.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-1fb6fd2-202506231535.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-1fb6fd2-202506231535.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b628e507fdfa791efabfa34acce5b81d844b6f6e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-1fb6fd2-202506231535.0.tgz","fileCount":422,"integrity":"sha512-eIydyiUR3HpIECmgiV8De1KE2aMSvvgZdsLcG8nXHZWJBbc3hQZ5zcMvEk2CYhBTMvfO/lnIlgultN4Dlk5ksg==","signatures":[{"sig":"MEQCIBDdhYRDroiq/NTJln1LkzNr7Tdu/J29ttXQty23zSSNAiAEL50IrdKkdnApTtIKW3cs5X5xUX2aOsHpbo1z15ZPIw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33187234},"engines":{"node":">=18.x"},"gitHead":"1fb6fd257b983a2cbee612e30727554e1168997a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506180950.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-1fb6fd2-202506231535.0_1750693016513_0.9173309261618656","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-1fb6fd2-202506231550.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-1fb6fd2-202506231550.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-1fb6fd2-202506231550.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"88a0591bbfaf645f63985d5bc748d4afb4234dae","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-1fb6fd2-202506231550.0.tgz","fileCount":422,"integrity":"sha512-uL3w9s7+fsAD9wAk1tj+UQRqmERsaHCt8M89oAEXG+zL2zb2LaGVNlPckWuoZ3DkabuEQc13tJTiXXukqMog4w==","signatures":[{"sig":"MEYCIQDpaBqzSf0wtDtM4zeBDIMmBDNCH8wxgd0wDDgX/+AmRwIhALfPuoGIK/nG85X9iyetASFFtbRfY+gVcXjnrDyFNHTx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33187234},"engines":{"node":">=18.x"},"gitHead":"1fb6fd257b983a2cbee612e30727554e1168997a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506180950.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-1fb6fd2-202506231550.0_1750693914430_0.7656112098244283","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-88d9f69-202506241031.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-88d9f69-202506241031.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-88d9f69-202506241031.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"46de0f7d0f4d028baf8daa1d6c50c5c00326ffdc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-88d9f69-202506241031.0.tgz","fileCount":422,"integrity":"sha512-ZRaeq2zowHFO3sg9Ev74ebuctN+hn8PMPsQJK9t/JKT/YNP43Bdw989bCTR+Fx/PuXV9dfhk/xiqIM26Gp2iPg==","signatures":[{"sig":"MEYCIQDzyik8L/ALYSSUa38Ir4G6RlIgTka6xOJFfUmTKTZYLgIhALu9wBgbtHEjaTnQ1MCw/q53NgETZCFv2xcL96mfmBgR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33206581},"engines":{"node":">=18.x"},"gitHead":"88d9f698dfaf1b1aa5dccca0cb13c7177cd51ac3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506180950.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-88d9f69-202506241031.0_1750761179539_0.8106117862257147","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-88d9f69-202506241237.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-88d9f69-202506241237.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-88d9f69-202506241237.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e5e79826e48a6aaac8230694d6b559f7ffccb2ab","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-88d9f69-202506241237.0.tgz","fileCount":422,"integrity":"sha512-VbcPdJVA7HQ4hcESo0z7vqRswoM09XqeNv31RHtzo7lHNN1FBPs8S0UiWSlMSLovSnja5/h/DoQjvkVpWAkPtA==","signatures":[{"sig":"MEYCIQDOUdbhv4bJuU9GWGN/O1xuGhBKqCHGjWlenm1UMQmDagIhAN5s+bXfnYqXSDJFfXHRQ/Wy7Tb0I/kpVhq3gYdmhgLm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33206581},"engines":{"node":">=18.x"},"gitHead":"88d9f698dfaf1b1aa5dccca0cb13c7177cd51ac3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506241236.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-88d9f69-202506241237.0_1750768737264_0.4470078050275268","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-1ac2dc2-202506241441.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-1ac2dc2-202506241441.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-1ac2dc2-202506241441.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a32aab26f6afce9d910cb8a5d1e000989c4ffb3e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-1ac2dc2-202506241441.0.tgz","fileCount":422,"integrity":"sha512-wp4Sl+KPojXLT2rvFvZTFhYjYmxsIUZjXmkV4ayEowibQmvCDskbt424iLXmB6yhF/Bs/Yox/Qjgt4A+6IJKbw==","signatures":[{"sig":"MEYCIQDo5Hp+RAVnerHUowRunSk5czYb2rvYK5qQwtCETNTdJwIhAKZU9QXsoLcgLWQYU5bErw/UME4pka/YL+oCvouz0i+F","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33207492},"engines":{"node":">=18.x"},"gitHead":"1ac2dc2748fcc4fefb80f6cf6ab5e095af34b8c2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506241236.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-1ac2dc2-202506241441.0_1750776192960_0.17981935819777162","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-53ae606-202506251041.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-53ae606-202506251041.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-53ae606-202506251041.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3dd3b1602494ea100fe24ca6079e26a361f0609e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-53ae606-202506251041.0.tgz","fileCount":422,"integrity":"sha512-4+vKacq0w+AIYj9Z8xO8Pw0UnKpPOkxyZnnCZ1rf3h+L+1fFRCoODtox1hpQ88wGsWjcRvcY86FxNhyim13xFQ==","signatures":[{"sig":"MEYCIQCL3xcl7t/gMyTas+eTspVWvavf0aAN5njKhD9xy2QLbgIhANwgO6SChxWV8zlE7Hy9be1po1hMyX2rRxtojLLtNrgR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33224871},"engines":{"node":">=18.x"},"gitHead":"53ae6065ddf37d2d9401b59e664e8e391d8bf651","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506241236.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-53ae606-202506251041.0_1750848163490_0.6051155438484528","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-704a989-202506251339.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-704a989-202506251339.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-704a989-202506251339.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4ca7b256a1d44a17f3937ce6ef57278cd8fd0de6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-704a989-202506251339.0.tgz","fileCount":422,"integrity":"sha512-nUOItjaxtzcz8BAVrAzTHCzZ9WIm5ylf+s/B1grRdjIqhZXZTZ/hN5U6Q2iYyDZ+M98b6KULmDA369P1Ne68TQ==","signatures":[{"sig":"MEQCIGbTgCfDVDYVwmQNjRX4y6d9DDSyWX4p2oYg+EimcXu0AiAs030GID3kwFh1MA0F76z2nB7KZjv1gJuqOVar+R9ijg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33228006},"engines":{"node":">=18.x"},"gitHead":"704a989989ac7f1a175763dd01b92e445ce3c11a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506241236.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-704a989-202506251339.0_1750858895906_0.2522771023057848","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-704a989-202506251401.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-704a989-202506251401.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-704a989-202506251401.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a250af7d35e129051fa083bd15849d3bb9c876d0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-704a989-202506251401.0.tgz","fileCount":422,"integrity":"sha512-yRE+RjEZwtHtARKXjIk0jS7ngNeNnc0+Aa2kZxej8xRrlTIprLhucW3N8xRbiu6FayyIz1CaDRJRLe5OqXo08Q==","signatures":[{"sig":"MEUCIDRyHS+TnMSt7eOGlLPBbAqfY5ig4CfidA9gv9GaYLuMAiEA/BiRgkNSkPlLps7CprXZMgXk3MegryuL+eL01cnYLWY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33228006},"engines":{"node":">=18.x"},"gitHead":"704a989989ac7f1a175763dd01b92e445ce3c11a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506251400.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-704a989-202506251401.0_1750860219856_0.6935005157518512","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-80b5cc9-202506251512.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-80b5cc9-202506251512.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-80b5cc9-202506251512.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ea75347fd095fddab080edfc1baf5b54b23c44c2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-80b5cc9-202506251512.0.tgz","fileCount":422,"integrity":"sha512-wdIYrIm4q21aE5zvFSXpHhmioTJruSLqe54jGKq9TM0zwvDdtccRGGN/5oedCBQtGW/+EHseihDnybChqe8/oA==","signatures":[{"sig":"MEUCIQD8AxY2KpqAWBqp9hPJxjDT0Ke/71kEtEx2IPNxNqEbBwIgXFLP3bx2eU5irTGDiVIYAGUaKzCXw+bnW8thoadeEis=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33228017},"engines":{"node":">=18.x"},"gitHead":"80b5cc9ead66bf1ecf957bfd93257b7db3d55fd3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506251400.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-80b5cc9-202506251512.0_1750864480098_0.6550206107383281","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-5386e1f-202506261422.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-5386e1f-202506261422.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-5386e1f-202506261422.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f8a80a72d44598d02de803dc06d5869b0dc1ca73","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-5386e1f-202506261422.0.tgz","fileCount":422,"integrity":"sha512-HzmSJz6M6dJ1nCuEqYxntNN9Ek/0D+XgZ3Go48JX4VJOFLkhPWI2YJXATlK7c9JleH9+zCo99Ri2yMd4Ck+nAw==","signatures":[{"sig":"MEQCIB+0YjWq43e57HJAxAW1CODdAgfGnakKVMqV0KQahmK4AiAnL1Tp14wzarT1iFilPICqgMyS4166YitcZzeKVUINPQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33228880},"engines":{"node":">=18.x"},"gitHead":"5386e1fb120dc326a0b7630c0fc2ac86f9c1645b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506251400.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-5386e1f-202506261422.0_1750947846474_0.7215135672326578","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-c99d360-202506271129.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-c99d360-202506271129.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-c99d360-202506271129.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"454abefd95668256414f1fb3a77ecbc804b7dc9f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-c99d360-202506271129.0.tgz","fileCount":422,"integrity":"sha512-yOxY+X1T4NrRpo2mKrLSiudg7Hfe3ZA9P2s9ty0U8Op4uO0AtoS2IezL6qLgu+c+ll0BSglnD9qD0zPgKvqc9g==","signatures":[{"sig":"MEUCIQC3LJjVp7FcPdlia8fxgZH3NzOFL3TE8PXAIHKog3ZK5AIgOmLs8NYSqt+MxDZrl9q9Kb92jFn0eBL3bKZ3jYv3uuc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33243734},"engines":{"node":">=18.x"},"gitHead":"c99d36047adc2fdd4cfe6b679f2ae54bf0b3a1d7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506251400.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-c99d360-202506271129.0_1751023884045_0.5992924871343728","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-b59737f-202506271308.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-b59737f-202506271308.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-b59737f-202506271308.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"66ce382fc174e68478032dc7d3dd108eaddb422e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-b59737f-202506271308.0.tgz","fileCount":422,"integrity":"sha512-LsMRyEND1GeU5zehRc0VpBTBtakppJvs91KPaj6ZnfmxFuL9lBz+gw6DlxKFVel+sNbnv6MDTmnvoLMFsIWKaA==","signatures":[{"sig":"MEQCIFZOVjVnYCJjiPAtxV+pRX8p4I0p0GZP9bpv2oMrZywCAiAq2Ehzx/mPjatAMEmX5fWuLFzdt7eZ3ZCR4jV51YsLNw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33244296},"engines":{"node":">=18.x"},"gitHead":"b59737f4af16fe8b00f5e9d10b21be5f88649745","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506251400.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-b59737f-202506271308.0_1751029785654_0.5605053738555881","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-33f154e-202506271335.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-33f154e-202506271335.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-33f154e-202506271335.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c6b6a667efc4ebba644038f8f76a46c94e7247ed","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-33f154e-202506271335.0.tgz","fileCount":422,"integrity":"sha512-CJs79zJwiMiwivwFfLu9XP565v4BsVgNsydVAyoDTmW4Po67IAZ+F/MkacR0pGrqw+BSwq4gqkjd3Qcdg5kIEA==","signatures":[{"sig":"MEUCIQCLroRb+mjV4gDfSPsTPVI3nfh/pTD++Mi32cYj0c8H4QIgMIVtFbZi67IPPG9vVEMWdy1h2s01z8pOE6/aoGYx4Jk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33244402},"engines":{"node":">=18.x"},"gitHead":"33f154e1625ab0ecab4ae99a91a7def6f4008740","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506251400.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-33f154e-202506271335.0_1751031453710_0.5468978204140797","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-33f154e-202506271716.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-33f154e-202506271716.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-33f154e-202506271716.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9aca92459fbba04a160e27e0d6802c472cfec30e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-33f154e-202506271716.0.tgz","fileCount":422,"integrity":"sha512-kz2HiizzgqO0ebQuvj+9vrVn43elbxztwJE1K8B7+v4nt4CsNSneTdUoyz3soIMQ36Hz9cIg60OKeVMwwtNi6w==","signatures":[{"sig":"MEUCIQDVREjjrPeNYl7WB2Xb7rhybv5ix1c2g57TB3MioZz/xwIgKKeiPRoh4GiybTvCN96xm+szuxiezY4Q/T/SVjPl6JM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33244402},"engines":{"node":">=18.x"},"gitHead":"33f154e1625ab0ecab4ae99a91a7def6f4008740","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506271716.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-33f154e-202506271716.0_1751044715235_0.3339615399807394","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-33f154e-202506300806.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-33f154e-202506300806.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-33f154e-202506300806.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"719cfedcc3923401ed6ae54b8551585949f6b826","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-33f154e-202506300806.0.tgz","fileCount":422,"integrity":"sha512-enp1h1fHM/yVT6qPWKBzxlhrS7dVarUb2xkfX7yyOth4QAhbuZyksTxrbDiSDmK8Q5vQXj0MVCnXYVkHIhSr9w==","signatures":[{"sig":"MEQCIEpVntleXz9n2Vm5xFcqbNIVu3GHm9CdDBdVCbCBLPraAiBmFDHxS/7IW+rKLJpSookRTDgLiTq4pylRwhtFu6T6RA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33244402},"engines":{"node":">=18.x"},"gitHead":"33f154e1625ab0ecab4ae99a91a7def6f4008740","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506300805.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-33f154e-202506300806.0_1751270888899_0.13366555937196156","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-a7acf45-202506301034.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-a7acf45-202506301034.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-a7acf45-202506301034.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"82da52d59ee97525c0fa5f1248d1a2b0e6985854","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-a7acf45-202506301034.0.tgz","fileCount":422,"integrity":"sha512-7rla9Pv7YlOjHx/zg3LV+ENN0dWabKN2Gy7qNOOPaLOIbuzie4iTsgq/7sajxIleqkTghQs/B0NFTM4pb5JdJQ==","signatures":[{"sig":"MEUCIQCIxHRi6Camf/DbwWnwvUWxmB7oqiG/zuR4gPwVBpsN8QIgAS570XL30iB+OBHqCaUJdPUSke9dXSjgQwI6qjDVRrQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33245101},"engines":{"node":">=18.x"},"gitHead":"a7acf4585a1a7fe84331b9238d5fe292de1797de","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-5ea1dd4-202506300805.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-a7acf45-202506301034.0_1751279763138_0.9428373451624126","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-a7acf45-202506301633.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-a7acf45-202506301633.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-a7acf45-202506301633.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d9e54d3ca3fc1a6528e5ec3bea2552f79d9340dc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-a7acf45-202506301633.0.tgz","fileCount":422,"integrity":"sha512-MQKoEGs/lkFckpMy6FR4Y6huhENCXzFqMZv6T2s/9R2JwUfClnrOkoDib7KzI1XAfshpUnCS0ja2K8AXQ566oA==","signatures":[{"sig":"MEQCIFcmGBoWaGNx4FEKByd+gSoS2UEzcT/VWFAfP1E7cZbUAiBYfKgteIbClz2akG03XMWtI0rlwGzLc0vfxkyBcCEKwQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33245101},"engines":{"node":">=18.x"},"gitHead":"a7acf4585a1a7fe84331b9238d5fe292de1797de","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-c54a9c7-202506301632.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-a7acf45-202506301633.0_1751301311124_0.7890346653957403","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-a7acf45-202506301750.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-a7acf45-202506301750.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-a7acf45-202506301750.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a2c33a48ad6c1ddc7c16b8419bc4c6260d306f78","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-a7acf45-202506301750.0.tgz","fileCount":422,"integrity":"sha512-E3MFmZjkQIIycQs2xraR6nWOBLg4W0sP8XRZTcya0UcQXj8cxfCtLkpKOzZCj8wBOfHP8HkmqUrEogSdzNEwLg==","signatures":[{"sig":"MEYCIQCaCwerCNBhyWO5bWkpkH7uMgzP3XPlpscGNQMfj9x5mQIhAO9+56WrxyP+pEyYm7ZhICQZ3HeoDL9cBdZKe7/cGF5g","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33245101},"engines":{"node":">=18.x"},"gitHead":"a7acf4585a1a7fe84331b9238d5fe292de1797de","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-c54a9c7-202506301749.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-a7acf45-202506301750.0_1751305929394_0.6484796145191996","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-dc874d6-202507010823.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-dc874d6-202507010823.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-dc874d6-202507010823.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a6759051733b37d48de85cdebd2e769f1465ac79","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-dc874d6-202507010823.0.tgz","fileCount":422,"integrity":"sha512-I+D2p1SbFIo0GVgQOlYI+P7qgfbyM9hZ4nT2PqiznV1WaNH+pjva7LTLn/uIdqYAkqMNRLqaJrh66iuKlz0l8Q==","signatures":[{"sig":"MEYCIQCQzzrpqsP3pjtwZQ/H2Vc7M0WyZlkYsAxsIHWtYouguQIhAPOmyCCEsU0oS8oJczoC1p8t2dvRR0WtGsRsAof3zSOK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33244402},"engines":{"node":">=18.x"},"gitHead":"dc874d6f4a6ec898a8a6b40ec8bacdbdb818c230","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-c54a9c7-202506301749.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-dc874d6-202507010823.0_1751358284346_0.09688993256406087","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-4763ebf-202507011154.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-4763ebf-202507011154.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-4763ebf-202507011154.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4bfd38bf4bc211708dc0eae7f8f985fb37b4bf44","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-4763ebf-202507011154.0.tgz","fileCount":422,"integrity":"sha512-veCjdxDVGe1xlldknJzDTqhpEbva7dExN1xCsAz/ZGRdYS9oW1Mks7s2WKpBh2Wr3fIszN515OtXv91bzGvbjQ==","signatures":[{"sig":"MEYCIQCfrLz+DkJihK2akjqKyD9NQ5noVHgRXR0ABBdq3pgW6AIhAKfjeTdeFqAYNiSYNc6AxeT9F0sFIHJRd34HEaF7QKE9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33245027},"engines":{"node":">=18.x"},"gitHead":"4763ebf914cc1261309b6d66f7960a8dbea7c11e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-c54a9c7-202506301749.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-4763ebf-202507011154.0_1751370958294_0.7504745340411618","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-8dd7cc2-202507011502.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-8dd7cc2-202507011502.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-8dd7cc2-202507011502.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0dbd4bf346e25eb5de5438b533713752d9cac30e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-8dd7cc2-202507011502.0.tgz","fileCount":422,"integrity":"sha512-gMw8FdbfvWoJjNo+8f2iQbOSujJ++W2elx5xZ+KKiARUQPLaevP5ejnKEox7/Ls0Sj2aJ1QMzVj5Vo487U/6jw==","signatures":[{"sig":"MEQCIFEtD7ToVbdRNhVGzn43LkBFQ8uFC8+TGKQbTnsOFdwxAiAEiuJB3Y/NzYklddUKe4NIaL12MyX9CbY9knlKWDc/tw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33245632},"engines":{"node":">=18.x"},"gitHead":"8dd7cc28d76c2bc86e44c850a9c72e18443ed0da","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-c54a9c7-202506301749.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-8dd7cc2-202507011502.0_1751382274035_0.42884580399675376","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-76ea8d5-202507011534.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-76ea8d5-202507011534.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-76ea8d5-202507011534.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"88e381417f2908531abc0611fcbe06ee48a36f9e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-76ea8d5-202507011534.0.tgz","fileCount":422,"integrity":"sha512-IPkRZp+213VpV3omI4jZVyIAhZHz9WIvg5YbZrqFeGnEsIr0v7Qyh/KpdgAQq46zrDjIMlYHXnV2Py2YfdjStw==","signatures":[{"sig":"MEYCIQCq2HdF7JMm3GwWiFgY9Lkb/SCT3A53cwVh0Mjge6BAJQIhAJGQcBJKWyn841RzBW5xeiZQDmOH44cpd2oWrIql8UzL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33246534},"engines":{"node":">=18.x"},"gitHead":"76ea8d576c4baa62493316393c6229c557010c63","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-c54a9c7-202506301749.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-76ea8d5-202507011534.0_1751384156194_0.9017186543672597","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-76ea8d5-202507011550.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-76ea8d5-202507011550.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-76ea8d5-202507011550.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2290892056d7f6519e266e0bed889f6e6ee15898","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-76ea8d5-202507011550.0.tgz","fileCount":422,"integrity":"sha512-J2wDTkD6nczF09uU8RQCEmJUsTywd+uRl4YNPn8FbslC2sObFtqj/wm+u3pho1LNHMlUR6OO8pwmiY+XnIIUsA==","signatures":[{"sig":"MEYCIQCk2PS94om1kopo39rx/QPWpPypN6qcrm3A9bWRKvhbnQIhANfpt6QVI19PJfwlIq9BzF95fHTcrPk2t4TVflPzdy+I","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33246534},"engines":{"node":">=18.x"},"gitHead":"76ea8d576c4baa62493316393c6229c557010c63","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-c54a9c7-202506301749.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-76ea8d5-202507011550.0_1751385151151_0.42931746603185195","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-8a06b12-202507011620.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-8a06b12-202507011620.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-8a06b12-202507011620.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d20c85950d3a708dcb8bac46049fa20e379e7819","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-8a06b12-202507011620.0.tgz","fileCount":422,"integrity":"sha512-rMDIOHOJO2EXr3sf7nLlCSK44d/xqY4lN3MKElyqaHvES9q4foyjzEjNksJw57dy2bUPi91WLCgxopTZm1vP9w==","signatures":[{"sig":"MEYCIQCWcev5cUkPxD2BbWbth896y6z4opgZMpB1YAIeNcKmcwIhAJ9oEIElrZOHeHu84z4z71UgoRjl2Zk6AZ1zN6nMKKHH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33291829},"engines":{"node":">=18.x"},"gitHead":"8a06b121d432605d57be8286c30d99123b34e2dc","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-c54a9c7-202506301749.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-8a06b12-202507011620.0_1751386910813_0.5503288713020098","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-c75359c-202507011642.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-c75359c-202507011642.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-c75359c-202507011642.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"63d40f3b090b2f22ebaa6e54afe7d06a927a6e52","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-c75359c-202507011642.0.tgz","fileCount":422,"integrity":"sha512-aBBpNWDv/xue2JRM3QCwVaWE+chzCsEiRBm261QxSmdHNYfTsDU7/s9Hmx2Wd4tQ65rPuoVKL39JXzQHs11yxA==","signatures":[{"sig":"MEYCIQC2rrtv2nMH6tY/dzoSCeXinDUQbJV/7jvv0jZ/ORpwKQIhAMXKjTe6HAvSQ+PmBTRo4Aj1u4neB34wByOMHKlTinJ4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33294792},"engines":{"node":">=18.x"},"gitHead":"c75359c1e558460b9fd322cc4ce67c9d77099580","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-c54a9c7-202506301749.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-c75359c-202507011642.0_1751388283738_0.9544203301990095","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-ebbc205-202507011650.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-ebbc205-202507011650.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-ebbc205-202507011650.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"08b14eed701b119587b0e15b03fdae40dc1e8c9c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-ebbc205-202507011650.0.tgz","fileCount":422,"integrity":"sha512-nAnY85Yo2zLD6Qesr0MmEZy7SCiw13jng+yFqhq4dAu+3bNNJj1U2f+J/G3RHCDy9910WYNao004/uBw/K4O/A==","signatures":[{"sig":"MEUCIHzkXN0NUOsRKW9ClULo3TccPtnxcZXt3BLfU/pNgBk9AiEA+lx/fYZ6PrTMG91CGHg6mXwxvAkQvFwXXebcqG11yDI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33301601},"engines":{"node":">=18.x"},"gitHead":"ebbc205ea8ad5a5c8f2c21ec2a2321ef3700f8bc","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-c54a9c7-202506301749.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-ebbc205-202507011650.0_1751388705801_0.6991643514719716","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-ebbc205-202507011706.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-ebbc205-202507011706.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-ebbc205-202507011706.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"187b775b52e8bb55588e29fd198c37e10014f336","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-ebbc205-202507011706.0.tgz","fileCount":422,"integrity":"sha512-n0j72ak8FFQd5s3DShkhIqedpwhnBf+r/ETQvv5rm8pyTMcE5AO2ia5OqsjU4Ypu3qrYhisVtrOnDvlzgufnoQ==","signatures":[{"sig":"MEQCIBeFilPD0Hq5kRCG1mDSLQ3E9QglMbtzw7l5tXwbVZ8ZAiBE//YMsPtL2auUKd5BbI6UKd/DgWjnlC9Dovwh/A9AmQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33301601},"engines":{"node":">=18.x"},"gitHead":"ebbc205ea8ad5a5c8f2c21ec2a2321ef3700f8bc","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-c54a9c7-202506301749.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-ebbc205-202507011706.0_1751389663341_0.008422345409094811","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-ebbc205-202507011823.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-ebbc205-202507011823.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-ebbc205-202507011823.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"77e2273d0ebc4bae9298e4015ee4de6818b79bf9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-ebbc205-202507011823.0.tgz","fileCount":422,"integrity":"sha512-swXtOZfk77lYxEczfy1P9aKczWH1kQf0j27b9QhHCp+ZtG2Y36dGKCYjEFcgaYp3AIYEjNCGwxBFoNXxaCi99Q==","signatures":[{"sig":"MEUCIQD3Vjm8lQv/m62Y/pLs+QY8f2FS+eoTbxSMDkUw9fnS6AIgK22N6B8WXolBx6nQhEL1JsbMG/LcWrDjxWY/Y72vmj4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33301601},"engines":{"node":">=18.x"},"gitHead":"ebbc205ea8ad5a5c8f2c21ec2a2321ef3700f8bc","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-c54a9c7-202507011822.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-ebbc205-202507011823.0_1751394285792_0.0839434143629596","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-e929575-202507021108.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-e929575-202507021108.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-e929575-202507021108.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2d4d08f5383d85385a184b16815780eacba36cdd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-e929575-202507021108.0.tgz","fileCount":422,"integrity":"sha512-lFPfvlSXDeBkoF+zt6GCwLJKJshw++fV9We5Ka9MOJX/KZd7qBO653i0WrDcdC8I9b/ZKbk6VmN3ZklMPK9TKA==","signatures":[{"sig":"MEUCIQCVFgfTtQPQXpy76wffzs3G3BFuicgTEDgyK9tk1xGHOgIgE4Jdw3SdxWuITx5jschfKiOXeZxwzZNBDyF6Dg4sYz8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33301928},"engines":{"node":">=18.x"},"gitHead":"e929575d82c72e3915935a71132b0f16afdf1b76","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-c54a9c7-202507011822.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-e929575-202507021108.0_1751454585239_0.3756130804618407","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-e929575-202507021123.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-e929575-202507021123.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-e929575-202507021123.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"27c9b85f638a79de2135276c2d51438bf9d97752","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-e929575-202507021123.0.tgz","fileCount":422,"integrity":"sha512-O6WnISzeQxARjZSdODG3FVtSZEkzms5f9rp3v2ZNKqj9ZQ699aPoEdopp1IV8heneOGa0yDEj2e4wlQXqLNe0Q==","signatures":[{"sig":"MEUCIHiI4HHxdLexAXlPHfLrSG3/FumwH8CLikRdoKdXOkNKAiEA510LHGWAOSKsv/ZM/I7Lf0QDKSuzPWAylbgjYUmWk8I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33301928},"engines":{"node":">=18.x"},"gitHead":"e929575d82c72e3915935a71132b0f16afdf1b76","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-c54a9c7-202507011822.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-e929575-202507021123.0_1751455486147_0.21782863101098093","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-0e17ac5-202507021138.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-0e17ac5-202507021138.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-0e17ac5-202507021138.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"04877e6d75e70bb626b5c398e8d3fe45ee2dfa33","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-0e17ac5-202507021138.0.tgz","fileCount":422,"integrity":"sha512-I/Z4CTUk7tNNeo2Xd85CcxprNVIkW109X2kZCXGzmFXCdwc42AY7H8k3Wnvy9Mjx3oHcHqsHvEmnwoTFXGLI7Q==","signatures":[{"sig":"MEUCIAKtynhjpPq4dotpbD4bp/a0gN/JOoGJz0grUixAowOtAiEA92NW24UcLHJJmqer5rUleCE7TD+u7DBXtevm4XY8gMA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33329885},"engines":{"node":">=18.x"},"gitHead":"0e17ac55f851afa8397bb5f5fe166f0a4f92381c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-c54a9c7-202507011822.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-0e17ac5-202507021138.0_1751456418829_0.556440631179794","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-959d1c6-202507021406.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-959d1c6-202507021406.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-959d1c6-202507021406.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7a1aa5ca8a84844f6bbc9db0e3b238bd025e169e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-959d1c6-202507021406.0.tgz","fileCount":422,"integrity":"sha512-0mJxMenfXu+hA9Fx9rluzC1JpqNmJKiGJZmqI8bmKHAwgYzVZaj08TfGn8mv7PxeNtgAw15+9ofE3ZHZOaurfg==","signatures":[{"sig":"MEUCIHQd1NOn0RwwlH52cvYYw45eYHL3QJ50neBGZTO/yTQsAiEAlXWJ85bUzSxALqNHMaIWdQWJf0JDNPDr3f+fovCSDZk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33329885},"engines":{"node":">=18.x"},"gitHead":"959d1c641e799d9681f37fb55e1df007086a05d9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-c54a9c7-202507021406.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-959d1c6-202507021406.0_1751465307519_0.6634636043238686","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-9566fa3-202507021656.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-9566fa3-202507021656.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-9566fa3-202507021656.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"81c0e72841947a8ba5d45e6ab77efe995238a6c7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-9566fa3-202507021656.0.tgz","fileCount":422,"integrity":"sha512-veVUyJ2eBbQkN30JPzmxQM4uo8hfUmgD4dtbYaYgGgKqMo3TD3nT5dZW1AaJMiyY04kI1XV66JSzvIBziQ9vug==","signatures":[{"sig":"MEUCIQDf5dY0D8XH9vUWKRgHJXLu8RRhDZwM6kbmYHBh2H70JwIgUIfJsEdzFHxw5QPmV816P6a1u5+eHWR29TfRPRwepIE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33329995},"engines":{"node":">=18.x"},"gitHead":"9566fa3a3da5bc13e906b37da957fcb57a1a65f5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-c54a9c7-202507021406.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-9566fa3-202507021656.0_1751475491591_0.09762620737057115","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-12ebd7c-202507030810.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-12ebd7c-202507030810.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-12ebd7c-202507030810.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"911474cde4b62b566eba06aaae1b680f018869d8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-12ebd7c-202507030810.0.tgz","fileCount":422,"integrity":"sha512-rqdbzNzOLWpyDYY0ow6XBrNEaoCnb1HQTbI+2vNKcRXnnmlS5tAuqogc/rVfRZymae8IIwaMKHpdyDyZA0mulg==","signatures":[{"sig":"MEUCIQC+tjhbo9vBQIwUlsIfOCBpyAP0aikgsnZn1BHzZ+dSaQIgMS9jkU0utIH7gNuHWaoHSZX54fwts7mXXEqOeCm5oIU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33339249},"engines":{"node":">=18.x"},"gitHead":"12ebd7c23b60c905c59f1d6b2968c63a51d92390","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-c54a9c7-202507021406.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-12ebd7c-202507030810.0_1751530349729_0.0429044581187068","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-1cac58b-202507030846.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-1cac58b-202507030846.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-1cac58b-202507030846.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a4019019d438999c32f0baa015a195b9c47db379","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-1cac58b-202507030846.0.tgz","fileCount":422,"integrity":"sha512-37Ns+3mljRQB48ALNxIJYucv/MbW6JaTa2D4UW8ZD3jX3vEbI8lEbT58fKU21j32ycBDyTYcXH7Wwcag+rKmxw==","signatures":[{"sig":"MEUCIQCJQIgYP3IhhrDjKRd+qEUgAf5/v4s+0NBs1VHbTe+H2wIgGazmpi0HAeDqcbRTLTuUgHvWVyR0/btMd+RVW+7sEuo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33339794},"engines":{"node":">=18.x"},"gitHead":"1cac58b727f7e05d010a6b6efca40166327b7eca","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-c54a9c7-202507030846.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-1cac58b-202507030846.0_1751532507280_0.3361639985252656","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-1cac58b-202507030850.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-1cac58b-202507030850.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-1cac58b-202507030850.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4978dd232c7ea61b17f07f908bae47ebeacfc150","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-1cac58b-202507030850.0.tgz","fileCount":422,"integrity":"sha512-ySp2UahgzrQBuSgNj2RPuS+LmQJ2R71Tra8RejidJJngskYdxhYnsGkDaXKhaiLuYJeOaj05TkMlvFThWBnFtA==","signatures":[{"sig":"MEYCIQDejhebeq9ZsnRztHRqSTW645Djnrx6FbwLIXxdz4AWmQIhAONiGxQUSZznWdjFbAEF96zT145y3/J14NjKU+bXYYh8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33339794},"engines":{"node":">=18.x"},"gitHead":"1cac58b727f7e05d010a6b6efca40166327b7eca","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-c54a9c7-202507030846.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-1cac58b-202507030850.0_1751532710705_0.22228094763120598","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-a48a3a8-202507030906.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-a48a3a8-202507030906.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-a48a3a8-202507030906.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1cd0dd37260571510b630f0de61febf8193009fe","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-a48a3a8-202507030906.0.tgz","fileCount":422,"integrity":"sha512-oPFOOLxwhWu6ew5/OTWpDc0lXSl2NUMjzPNmIP9Pt1p9IxTpJ5vSF05dm5XX+VZcvek3pliO7Qp7TO7lkcizTA==","signatures":[{"sig":"MEYCIQCyaSMfAH9CzDitwUwqpVaE+htvOL29mt40LfC0ispD0AIhANadNuezsRS82b1nHolNNDwb1Lg7ORj/lUq2PdkAelco","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33340422},"engines":{"node":">=18.x"},"gitHead":"a48a3a8004cfcc2782567ab12a966a31bab8ff36","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-c54a9c7-202507030906.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-a48a3a8-202507030906.0_1751533689248_0.6840772336542613","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-a48a3a8-202507030921.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-a48a3a8-202507030921.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-a48a3a8-202507030921.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a6e4ae1145ad07d83b82c683e1b1953f549ceed9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-a48a3a8-202507030921.0.tgz","fileCount":422,"integrity":"sha512-GjF9KaGnM1zMVvnvHQ59M/zxAFipEOmDzQgN2oor3/DrVe/2V3Al8YU3HcQFwoRKb/2Xwt5djb+e/8EyHhu1Zg==","signatures":[{"sig":"MEUCIQDrjzact0fj2tn2jv2Zn3wA7Zw9i/fB0dnxUvNaVkqM5AIgGG1tKLKUO+t+iU6HVYpKHrMk3wNaZeMjwXjs1aYcNJY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33340422},"engines":{"node":">=18.x"},"gitHead":"a48a3a8004cfcc2782567ab12a966a31bab8ff36","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-c54a9c7-202507030906.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-a48a3a8-202507030921.0_1751534557659_0.7305324363592642","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-a48a3a8-202507030928.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-a48a3a8-202507030928.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-a48a3a8-202507030928.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ab0e3ce0f9aafcbd0230b25e3b7f72d565133c99","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-a48a3a8-202507030928.0.tgz","fileCount":422,"integrity":"sha512-3HsCxmt1R88LaPI9qYotUGkmWLB/FvBpLfG9IqkRzzhkn5JSQZZE9TAGKYmgpsvwhbOlNiZ0bAr+w7ZXagIQlg==","signatures":[{"sig":"MEQCIFWNfLo7Rk8nDtWxW2iA04ODq1jyUIrr8mOX/6vdskGiAiAvD+vsBqMJalS0ifpMcMikSa50YRmzHpHXyKgyL/2OTw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33340422},"engines":{"node":">=18.x"},"gitHead":"a48a3a8004cfcc2782567ab12a966a31bab8ff36","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.18.1-c54a9c7-202507030927.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-a48a3a8-202507030928.0_1751534978636_0.30288169310653146","host":"s3://npm-registry-packages-npm-production"}},"2.18.1-a48a3a8-202507030930.0":{"name":"@flowfuse/flowfuse","version":"2.18.1-a48a3a8-202507030930.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.18.1-a48a3a8-202507030930.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7aa886f9c0811e28c214652c3536e02a41e1ff1f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.18.1-a48a3a8-202507030930.0.tgz","fileCount":422,"integrity":"sha512-hdvLyAUQeT8on7H5boXMN4RZ4YLTRtcATLBTl6jDDZmEjNogysN1mzw94Ubd7eyHF+IkqjYhZKhHNTuTPIOBEQ==","signatures":[{"sig":"MEUCIFlmeozb400UGZf1W6ef2heN5DOyI+yBMy8xVDq3iNiHAiEAxIw9Rqzqq+LQcomqXTtMO6sKPnoLpawMlSJyA1zYgjc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33340422},"engines":{"node":">=18.x"},"gitHead":"a48a3a8004cfcc2782567ab12a966a31bab8ff36","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-34eca61-202507030929.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.18.1-a48a3a8-202507030930.0_1751535098392_0.9728297956679073","host":"s3://npm-registry-packages-npm-production"}},"2.19.0":{"name":"@flowfuse/flowfuse","version":"2.19.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cfc3ad80f006036b5b17c0db92361b6a1a3b024c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.0.tgz","fileCount":422,"integrity":"sha512-613G7RWxs2DdMVi3E5isaucaueieMeiXLPnuwaMM1Ss3HEgmKBLTnMd1pdOfQLb5F9fusPQiOCJ5ouSigU3amw==","signatures":[{"sig":"MEUCIFFddxpskMgK+MHYXJCkWbY+uiOnQ42c6A52nBH5+342AiEAoa3YkX0K1L7/Y7zjKWon468l1Jc47bBc8R1DaB/zUnA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33341531},"engines":{"node":">=18.x"},"gitHead":"0c0aa4dbe05fde95f9c7e08a29163827b24194af","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.19.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.0_1751535552567_0.081523323944243","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-0c0aa4d-202507030937.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-0c0aa4d-202507030937.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-0c0aa4d-202507030937.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a72afa2faa1ae8cc895c775db6db1110e80730ba","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-0c0aa4d-202507030937.0.tgz","fileCount":422,"integrity":"sha512-UMFRcxgFptb5LtdtljM1e61Cxl7fjJ9PTumu1r8SJkw633Y/U2Sz2Wz6TNAr27vUPtUDz+q1vYtoQQsKj7vizQ==","signatures":[{"sig":"MEUCIQDIpZBxbWx/K84REy3riZvu9DzjfspGilqgDyAxZ7pb6wIgWMBxgfm57/giXr+BbTCKnvE5ARmaZuUIBWBzNBnLEqs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33344712},"engines":{"node":">=18.x"},"gitHead":"0c0aa4dbe05fde95f9c7e08a29163827b24194af","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-34eca61-202507030929.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-0c0aa4d-202507030937.0_1751535560868_0.5596280603518313","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-0c0aa4d-202507030952.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-0c0aa4d-202507030952.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-0c0aa4d-202507030952.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e6ed03879155733ad8d02b11e840b0a3d60ffa36","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-0c0aa4d-202507030952.0.tgz","fileCount":422,"integrity":"sha512-DZZsnpMNIxBw28tc9Ly+r2sP19dgXr9POR+ubffZEZVdTTul3K35i8I4iVuQgFR2ElsYqzdtqQ+ouIJ3TDaFwg==","signatures":[{"sig":"MEUCIQCXQbXzyJdjC+TRRG6QJXAf/MZFTyfehUxIkOEu1yze/QIgQs9oDTQvmzIsSPshicA/1QT8Kn7OfbjoNw8OYNhq8ms=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33344712},"engines":{"node":">=18.x"},"gitHead":"0c0aa4dbe05fde95f9c7e08a29163827b24194af","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-34eca61-202507030929.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-0c0aa4d-202507030952.0_1751536464094_0.40581747803636725","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-2da1f10-202507071027.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-2da1f10-202507071027.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-2da1f10-202507071027.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ef7fa9da0e7675f4e9de626643a30addaa6a218d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-2da1f10-202507071027.0.tgz","fileCount":422,"integrity":"sha512-r+gXFITpmUX9ML1D/J1Nzo1thnxqKoNcBQ9SKlxsyZRj/AZQgNu0SjVaJFZnejenhTXSzYHcFIHtskHONKoc1g==","signatures":[{"sig":"MEYCIQCy11W4IDaBtE3QYPRWbQRFbOsoCxub7kPVYtuSgKjSdwIhAOlp3IiJUro1TXK1Jj09V7mqrA66/ECbTgeau5FlkGsG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33344712},"engines":{"node":">=18.x"},"gitHead":"2da1f10e8e9229bd25c1e4964cca17aa5bc04a0b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-34eca61-202507071027.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-2da1f10-202507071027.0_1751884189089_0.6391954572804177","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-b4c748b-202507071200.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-b4c748b-202507071200.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-b4c748b-202507071200.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"04be838fd025076609d9ade209b3a2a14118838d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-b4c748b-202507071200.0.tgz","fileCount":422,"integrity":"sha512-0+rOWBdxLFrSbT12wwQMEhWCO2rOWal7nOTT0SdXPOkTK2QxZaN5hrLsCEiLl+RFbOQqtkEe9jSYszJoJnYcfg==","signatures":[{"sig":"MEUCIQDaDJ6fV09dnbel6v8doteg5YPTL6HMAuowq/iAX3CirwIgJhhzPIWjJAnfIdOLE155U7YdlGkxJzMS71H08HKwbY8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33345189},"engines":{"node":">=18.x"},"gitHead":"b4c748b182545757724865b5c6812f5e4def46b8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-34eca61-202507071027.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-b4c748b-202507071200.0_1751889714132_0.5147154335724751","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-b4c748b-202507071211.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-b4c748b-202507071211.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-b4c748b-202507071211.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"02fb14d41cde0df7b693f3f9ba714d2f1baba40a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-b4c748b-202507071211.0.tgz","fileCount":422,"integrity":"sha512-QpUAwJGFAByymQYvDoQfm8MtbUG7hOcIo0MsrURfizCaG6SRLvW1D2TfE2lRC7ucbfb9ClxaIIRZ/Xwy2JOODw==","signatures":[{"sig":"MEUCIFauJ/FHuUq39M0fZnOPONa8DHC8EHcPwk6iePb4oahiAiEA+Xce5QjuA888QqLdHP3khngDhc8WVFiz+4LhsMDU5bI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33345189},"engines":{"node":">=18.x"},"gitHead":"b4c748b182545757724865b5c6812f5e4def46b8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-34eca61-202507071159.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-b4c748b-202507071211.0_1751890383397_0.5643045950866812","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-18e2c9f-202507071246.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-18e2c9f-202507071246.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-18e2c9f-202507071246.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"823441a394c26a54a1f7e1a0639617322a018a8d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-18e2c9f-202507071246.0.tgz","fileCount":422,"integrity":"sha512-jwTDepBzFk/CRdYw+JWJiOYteMphU0eoOGofTafCkpAHZH/0ZbhTCx/kgY5PqLEhjbGRkUhEO0yklt8VSvG8Sg==","signatures":[{"sig":"MEUCICOEYOH4YLLZh1forel6Cd6Spr3FuScGGRlwueMJ9Ji4AiEA6QZEDtUB3uE41wi4R7Q8+c6upEint2XXgKunn2KNACM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33340833},"engines":{"node":">=18.x"},"gitHead":"18e2c9f4f5fff044cf36a65f3e9377b7143852ed","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-34eca61-202507071159.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-18e2c9f-202507071246.0_1751892475882_0.15976852460306046","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-a968be4-202507071430.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-a968be4-202507071430.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-a968be4-202507071430.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"306b8c78437d9ced6a238ab9eb5e719d1aa0c9b3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-a968be4-202507071430.0.tgz","fileCount":422,"integrity":"sha512-wNI/TsCMYxs4CabQoSI9a7GOIfIxFRTJJovfsraEXnRS0yrysisX5+0c6mugoNp75mqFONGsQ6QLnOBhqwJ68Q==","signatures":[{"sig":"MEQCIFx8TkIuFPOeDiq2R82JiI3JgmABCy5695PeBOjQSKDNAiAIWo90mvDScfzsDdzuJQ6ThUbFG1/UChYqzbgNHuhmqQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33340842},"engines":{"node":">=18.x"},"gitHead":"a968be44fe363c2a335cb986ce92d977eae90233","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-34eca61-202507071159.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-a968be4-202507071430.0_1751898741489_0.14378143037114754","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-a968be4-202507071745.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-a968be4-202507071745.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-a968be4-202507071745.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b2d1d859602dac0093433022a80b65c3a683d752","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-a968be4-202507071745.0.tgz","fileCount":422,"integrity":"sha512-D5SBhAAwtSWFnLvNbasSquqi0T7iD5GJbIMwxvdVfCX5xtDPN8ykVS9FZYv4l6NmVG0rIrpwFuIl+l+X3UdX5A==","signatures":[{"sig":"MEQCIBaXpevTDgOIgFsU+4YN4gb87Iqwg7hc+LSdF030IpccAiAmrGe6FtB5nkndbAdr4C33tI0xto7yh4ieXpQSby8PKA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33340842},"engines":{"node":">=18.x"},"gitHead":"a968be44fe363c2a335cb986ce92d977eae90233","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-34eca61-202507071745.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-a968be4-202507071745.0_1751910444811_0.49184449329340296","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-7e8624b-202507081429.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-7e8624b-202507081429.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-7e8624b-202507081429.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ea6ed21cc9921f60a5ac272183d039986888e68f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-7e8624b-202507081429.0.tgz","fileCount":422,"integrity":"sha512-8w+G+5Mh5fWsON9AFlU7nFH1fhW4Je2+BidBSxaWEIgHcuSUGCHRXFbQTG3NX9ppiu8gu0hb8YaynFdPpIicCw==","signatures":[{"sig":"MEUCIQDN0ZaPDR0M2OQIixA6yol0GonK80a02II8vdjn0GYajAIgKDVOo3y+aXHIB39nPcuExy00Itjeb5cWrtCOrYHDEOM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33340872},"engines":{"node":">=18.x"},"gitHead":"7e8624b4b25a0922668d667113afdc97e3dace62","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-34eca61-202507071745.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-7e8624b-202507081429.0_1751985074023_0.5297182220412502","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-d737ea0-202507091532.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-d737ea0-202507091532.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-d737ea0-202507091532.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5622c021e5eb7754381afa1b55f150ed7ea37794","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-d737ea0-202507091532.0.tgz","fileCount":422,"integrity":"sha512-mugQ1NY9lwqCmyZfs+QOlHriVw7OyLR8V9deVj343ioNG/ILAEjU19xCT8KXzhMQLi7jaiUbaS/yjVNI5rTeKQ==","signatures":[{"sig":"MEUCIQDMXeR9xM3IYEkfg1RJ61ELsVOtddXLVF2VVV7j8g1NdQIgZOpoLjFN4/LThIefeVJARaWFrGSpYIwErc4lW2lgkC8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33341209},"engines":{"node":">=18.x"},"gitHead":"d737ea038a9e5f3de4b82a6d139e8b48d9cc4e1b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-34eca61-202507071745.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-d737ea0-202507091532.0_1752075213039_0.9511511385091964","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-684f605-202507101141.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-684f605-202507101141.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-684f605-202507101141.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ed7aed5f328b3b60028753f7645ff6a125e1a93c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-684f605-202507101141.0.tgz","fileCount":422,"integrity":"sha512-bUH8KJrNa75R0MFmTE4vgSW1J9SLL9ITM/NeHLkkLY3bDjfg++vtf/TZK4FvVlnpsfhPRfpuy0q5w/E5QlG5jQ==","signatures":[{"sig":"MEUCIGiNaaucdT5WJYCJNSrmMFAT14UH24pSHL/4dL/KDXt0AiEAzMuYeC3s4IWeW92JXjSiuo/lfcf3DuoFdfVa4XEX0JI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33343818},"engines":{"node":">=18.x"},"gitHead":"684f6057bccd919c1ca09045df7610d2a24cfddf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","actor":{"name":"flowfuse-user","type":"user","email":"nick@flowfuse.com"},"email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-34eca61-202507071745.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-684f605-202507101141.0_1752147810815_0.1442994516162721","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-67f7b41-202507141023.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-67f7b41-202507141023.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-67f7b41-202507141023.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c8dd24df2684868f2677208a36598b699ddd1dc0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-67f7b41-202507141023.0.tgz","fileCount":422,"integrity":"sha512-R6164ikBHA4jDfBvR/PUqsWu5Xx/8+IJlMoUaBJbVMVw62Av/BuKej7kthEh7jOeNqTZVAJRQ7M7Lz4js+87jQ==","signatures":[{"sig":"MEUCIAV3i8HUV3/eNbwcj2+HIiJcuROpq3rcGwHpoOXvECg3AiEA36jIPk/u7iUSQa+Eo7V+PTDuCe54AR3Ap82ZeRbIGDc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33344673},"engines":{"node":">=18.x"},"gitHead":"67f7b41b38ca48439ef7bb6a2224d117bb4c579d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-34eca61-202507071745.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-67f7b41-202507141023.0_1752488716631_0.7174285283266195","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-67f7b41-202507141039.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-67f7b41-202507141039.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-67f7b41-202507141039.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4be6a7e73a0fdef0912cacc3240d8dd606659795","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-67f7b41-202507141039.0.tgz","fileCount":422,"integrity":"sha512-HUaMVEwwnidbz+MTgn6JQ8lu2QENHf+XbzalcXvq8MM6PLlwGChta3xMv9yVI5fvjEi20c7xWiPISkXX3bNpPg==","signatures":[{"sig":"MEQCIEn7r4eaaNv7kZqIZHUmo0A7KM8sK8Fp+izUgHdBoPHVAiBGzP9pX1CGVa7hpTI/GHgl7Zk4ySjFrkpoWk30+FFseg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33344673},"engines":{"node":">=18.x"},"gitHead":"67f7b41b38ca48439ef7bb6a2224d117bb4c579d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-34eca61-202507071745.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-67f7b41-202507141039.0_1752489642519_0.17249569461797631","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-0059cec-202507150823.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-0059cec-202507150823.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-0059cec-202507150823.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6a7c5735a86eda153852364064b4a61f1f535132","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-0059cec-202507150823.0.tgz","fileCount":422,"integrity":"sha512-xUk4mXk1MVIXxpt+JEFmpiA/onL850KVyN03EEOUyw6EmZg30TItFJ42W3YH141A44BuOCeoIgTMtn4Dcmxfeg==","signatures":[{"sig":"MEYCIQCRLdH4a3LwRg93zlQL+NBJfpX2dVUotXWiCAcTn0RFKAIhAMSBPZl6Ot2zbHfLeiBFt447QbnGgFPWsb0qmzxUTCKQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33345314},"engines":{"node":">=18.x"},"gitHead":"0059cec92fc44275ecc0813ec0efe78f81ea8453","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-34eca61-202507071745.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-0059cec-202507150823.0_1752567933943_0.3081332678263471","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-0059cec-202507160927.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-0059cec-202507160927.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-0059cec-202507160927.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"466eb1cf95fdadf08c8a6c64b0703a0cc45ee01f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-0059cec-202507160927.0.tgz","fileCount":422,"integrity":"sha512-pW7M/n8kqXbk7RTsnYVGkf7/4DfCJ8UTh+F+XdtUGxmSphKZ0TZrO3Ghy1tk+GrTHJ61Jbm920KQXWwctg1DGw==","signatures":[{"sig":"MEYCIQCoElEI3O2M+KfaLnS7184irN7FUc1ES95Nr+kd/0n5ewIhAJswLpQ/xqH8PgnNxBSpugLlahQX8vJWdjPNUxQGnrNt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33345314},"engines":{"node":">=18.x"},"gitHead":"0059cec92fc44275ecc0813ec0efe78f81ea8453","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-34eca61-202507160926.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-0059cec-202507160927.0_1752658119009_0.36466326319758324","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-da6430f-202507170933.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-da6430f-202507170933.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-da6430f-202507170933.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"31ebceb8c45dc212c58a3362b2dc7f58d3ce1558","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-da6430f-202507170933.0.tgz","fileCount":422,"integrity":"sha512-fwN3tkZYgACHPnoEWwGmnBRjX1wzQIF95lT/eE2DW3fjSGpYzsMLQgPdXyFdm4Eu79aABLVjmQXJDeaBJOfW7g==","signatures":[{"sig":"MEUCIQClEe4M4EAr1sqK3FR5XQCKLqqNMR9ber4xGXG5xLr3MwIgDuiinTuritwM2Fj1dZJlQapR1sWFHza0KHJJHpdynhk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33345959},"engines":{"node":">=18.x"},"gitHead":"da6430f9cff153b55c0bf822eebaa7b1188368e6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-34eca61-202507160926.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-da6430f-202507170933.0_1752744916702_0.2625888538275778","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-d959b29-202507171013.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-d959b29-202507171013.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-d959b29-202507171013.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4af13e0ea53ebd100ddfc36253817b466faa40b5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-d959b29-202507171013.0.tgz","fileCount":422,"integrity":"sha512-ZqsrOuDhZCMbgAeo7O8K4tEW6xzjkfCshWPOVO+5zR9p1y+3bBhxoJKMXMEbwQ2+w8Dlch8LhVEtTez336e8Vw==","signatures":[{"sig":"MEUCIQCxvU6n7GSIyKkZ+7nwVu6wDqoYhXAsu4GbqwHBMvYFZwIgTnPKsYtn3/tD+6RqXhE7sqFPEchkdUGT5bBnoocFyq4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33346629},"engines":{"node":">=18.x"},"gitHead":"d959b2996d07d352eb15dc0198c80ab673ae63ff","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-34eca61-202507160926.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-d959b29-202507171013.0_1752747301684_0.007895370141651092","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-8d62aa5-202507171231.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-8d62aa5-202507171231.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-8d62aa5-202507171231.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8ebc54658efdf65fb71e66fc868e31399fb09982","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-8d62aa5-202507171231.0.tgz","fileCount":422,"integrity":"sha512-He8vlmPxpY0uXSJdFJLjZolNAXYljZJB/XAg+vN1XktDcjIVdbt4yTLfkA2nT/gtHUfxq15OjMVuT4w1qG0Cow==","signatures":[{"sig":"MEQCICxOrimEYiDrMZE4OXNRMZq1YF4YWu/xGMPBjbLWSBJNAiBS+ZnGtV9KULx3AKmzosDEmiy94BJHz6YHq1LUy3YvYA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33346748},"engines":{"node":">=18.x"},"gitHead":"8d62aa5b6563f73014888949d4dfa14da6b6a438","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-34eca61-202507171230.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-8d62aa5-202507171231.0_1752755567933_0.7427670037017355","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-8d62aa5-202507171244.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-8d62aa5-202507171244.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-8d62aa5-202507171244.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"75d1fecdd45700e5b55dd0471f26b5a060d325fa","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-8d62aa5-202507171244.0.tgz","fileCount":422,"integrity":"sha512-WenacBp5ZxT3+E5q6tuOUkGXkLaYWxnEiPxE8HNeDiUi0S6eB3BGqS8h2j9hLtxTbgwiKj6ue8/ufIRE5DdILw==","signatures":[{"sig":"MEUCIChetpfo2zBg6exgqsZAoEEl9rSibhuez617VySFIYx9AiEAsIzRizxGuCza74e3wc4FKMfTHvNwoOFQa7E9oeYEV3s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33346748},"engines":{"node":">=18.x"},"gitHead":"8d62aa5b6563f73014888949d4dfa14da6b6a438","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-34eca61-202507171230.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-8d62aa5-202507171244.0_1752756368569_0.33261418557279","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-ac01cfa-202507180942.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-ac01cfa-202507180942.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-ac01cfa-202507180942.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"357430b3edfd71289dcdba2f4d4487ba30ba8e59","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-ac01cfa-202507180942.0.tgz","fileCount":422,"integrity":"sha512-OR1bS+3iS3fPuUBwflQA7Ki10l/+Wq7mHiwzNzvwDpB1cP51J96dkP2yoOp+zTIz4nC5pdjD6ciu6e9+Gri1pQ==","signatures":[{"sig":"MEUCIQCV8I9tHDMcxq0OE2KxEgq+UW/SzGS09GZOAtTxRMOPBAIgRqbXh3gwR/cinxkN1ZaS9ESxeZ50NUwzStShqArcUnQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33346748},"engines":{"node":">=18.x"},"gitHead":"ac01cfa6bfc7ef53a0b5d09aeb34aa9fd9d40fe8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-b7717a3-202507180941.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-ac01cfa-202507180942.0_1752831843097_0.0909423780658829","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-ac01cfa-202507180948.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-ac01cfa-202507180948.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-ac01cfa-202507180948.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"06aee96131a465914fd46933335f79c89905c0db","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-ac01cfa-202507180948.0.tgz","fileCount":422,"integrity":"sha512-dp7t2yGJZZaSGfd2yvoM5AlZipDPjzEkRSMnyUkCthTKGBDf7DRI4/giofveA1Mluv6w/+Q5GAOZ+FRo6YQbig==","signatures":[{"sig":"MEQCIA008/6m9IMEj/8h2PM9waanEEV1Fvj0s6Bpl5Yu5Af2AiBAxUsXxjqhaqzmVxbMylYgmIpTRrsxuzPhGOnJsO6HfA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33346748},"engines":{"node":">=18.x"},"gitHead":"ac01cfa6bfc7ef53a0b5d09aeb34aa9fd9d40fe8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-b7717a3-202507180941.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-ac01cfa-202507180948.0_1752832218796_0.6870547549793005","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-ac01cfa-202507181014.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-ac01cfa-202507181014.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-ac01cfa-202507181014.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1bc8b37096192f8df5c6bd0b878990c2125aa589","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-ac01cfa-202507181014.0.tgz","fileCount":422,"integrity":"sha512-NrZGOb9me63khoTQma8blsK5zK3jJF7PaGSehr+e1api+/nyOlY/E8BzNCByYTj+ds4YtkPWGW6g7EDeZR7Bzw==","signatures":[{"sig":"MEUCIQDogOMJULDpM7bBKHSR0ivcc8RNpqlkiMDB+U8lq/bw8wIgdMjjROXGUzjrUJmoo8FVEL3qZBNWFfVCBpW7Vclzuc4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33346748},"engines":{"node":">=18.x"},"gitHead":"ac01cfa6bfc7ef53a0b5d09aeb34aa9fd9d40fe8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-b7717a3-202507181014.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-ac01cfa-202507181014.0_1752833766665_0.8434237176631514","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-ac01cfa-202507181017.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-ac01cfa-202507181017.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-ac01cfa-202507181017.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"016f3b17c32874baf8d4f594a952c605602dec8d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-ac01cfa-202507181017.0.tgz","fileCount":422,"integrity":"sha512-EtZ33uX+EJX0JhapariFVACRHMm9DML/wXrIusqXs1hfHnrYvi0GoEv9ZycYtLacr9HucV256FQsqisS0sdPaA==","signatures":[{"sig":"MEUCIQClk7oa4B0IzuGq+t3wEyYunmt75858ZJOdZT94SXQBuAIgM94Y8e1bJi2Nq8xgHJhVDqRhqvMUk3kvfsOlE3ejvhM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33346748},"engines":{"node":">=18.x"},"gitHead":"ac01cfa6bfc7ef53a0b5d09aeb34aa9fd9d40fe8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-b7717a3-202507181016.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-ac01cfa-202507181017.0_1752833951967_0.8829833663518885","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-46c6716-202507181322.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-46c6716-202507181322.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-46c6716-202507181322.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a4ad0ed7eac9db5092c1feea52a927ced8fdeb35","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-46c6716-202507181322.0.tgz","fileCount":422,"integrity":"sha512-JT2fnvGAMqPsTNRZ6QRG4Nw7gjhFWYFvv4IcTiJWKghjaoAUC6cawdjcrUGjiYfLFsFYGvvK0OltW1v0VlpoOQ==","signatures":[{"sig":"MEUCIAX0Rvj/x6KZOAxzOSD4y4NaVusCHEthRAGelTgCUDT9AiEAsdgwDsOCndLCfRdnUO6MRTXo2WEXcu+UvYJRVmGFAc0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33347633},"engines":{"node":">=18.x"},"gitHead":"46c67169948889e2fc9ef82cda297b4af409a94e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-b7717a3-202507181016.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-46c6716-202507181322.0_1752845037968_0.3128280658923095","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-63cc75a-202507181626.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-63cc75a-202507181626.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-63cc75a-202507181626.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"16d4025c4157090af4150797d01bbafc380d97eb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-63cc75a-202507181626.0.tgz","fileCount":422,"integrity":"sha512-KRiVrcxbOgcX+ZYMZ5F0Xx9LnoazKcJfqhmI6uVodNz6Zc2qzXhnqxrKtQZMTpHJmsNI79RAzl0NPtSSOcVsAA==","signatures":[{"sig":"MEUCIAXAGVB1A6i41SiZG84m1NU8Zl/QaD4P80/d5sJJk94vAiEAjghQkY6yWLYTK06aL59MYNnXJEVgWLhfCgcn3MaPAO8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33347615},"engines":{"node":">=18.x"},"gitHead":"63cc75a22aaa6d42cea13b4081c8d8ea9aa56f14","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-b7717a3-202507181016.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-63cc75a-202507181626.0_1752856057105_0.6060379608616773","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-b7cd3cd-202507211033.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-b7cd3cd-202507211033.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-b7cd3cd-202507211033.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"897c76f27286a732bb153ba3d195823bfc389505","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-b7cd3cd-202507211033.0.tgz","fileCount":422,"integrity":"sha512-c+2s2F0c69hIdTanOqB8IXFXf8NQXLasmKAHMVT1I4BMEI10UR3xdRXuThrJT7KFZHfdV5dDE2PObnik7KoNWQ==","signatures":[{"sig":"MEUCIQCPAk82WLtup6zvtDk6Pjs/DTmtrnn0/CLmcpVIL02x2gIgNcQ1dnS+Li81KMOrgLFtKqGJznbOF02r5u4a8LoHaOY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33348167},"engines":{"node":">=18.x"},"gitHead":"b7cd3cd180c626c687212abe7f8a91b04e6cbf25","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-b7717a3-202507181016.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-b7cd3cd-202507211033.0_1753094077206_0.19465583167979927","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-92be94b-202507211332.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-92be94b-202507211332.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-92be94b-202507211332.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bf767f3d3d4e50ee20efefd07538b6347786aae0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-92be94b-202507211332.0.tgz","fileCount":422,"integrity":"sha512-XLCIMeDVdBw9NXjJOV5gsxYUT7sfmWz6G0t0Vdq+Tzd1XLr8yGGjzSjcGUGKyQ+OgEoj5havAJfA/FskvptJog==","signatures":[{"sig":"MEUCIQD8aFtHQkdTs0UffaaWi1AUjn+zJ68ix+m5g/nACUazDgIgV5oTWAtQWiHEXRtyfkWHW3GECewm/tmjMOHj/65PpsQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33334236},"engines":{"node":">=18.x"},"gitHead":"92be94b0e706a20a2c837e74c70bb2086dfbed1d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-b7717a3-202507181016.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-92be94b-202507211332.0_1753104823485_0.4318459188211621","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-92be94b-202507211347.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-92be94b-202507211347.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-92be94b-202507211347.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9d57000c8c841c991c1f88d8de6d287f323f35e1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-92be94b-202507211347.0.tgz","fileCount":422,"integrity":"sha512-zkNKAvBdMZuoPrLHWfKNCYdcpfad8zFVcw1/OH46FQfSy9MXQlrXNOX5IOhu9uFSKStJ0vJPNodtbM+O/STC0g==","signatures":[{"sig":"MEUCIQComyRZ8hHyc5YqU8KLZu/gUgilCE03dp9wgyYhK8mJ7QIgA2yGyU5UYVi0qtQFG0uHuth+obE4IhenwoCxV/Ax0EE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33334236},"engines":{"node":">=18.x"},"gitHead":"92be94b0e706a20a2c837e74c70bb2086dfbed1d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-b7717a3-202507181016.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-92be94b-202507211347.0_1753105790241_0.6354365702565377","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-9e5ec7b-202507211443.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-9e5ec7b-202507211443.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-9e5ec7b-202507211443.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ad7279397959a04092fcfaebf025599a73c1215d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-9e5ec7b-202507211443.0.tgz","fileCount":422,"integrity":"sha512-b7t/RcSL7g9Nij+H8iPpXvZBF+KwKkS0zbs9il8fGxiVtLsy1H2BlY8Q0FHlRN04mwbSpJbmHjZ+OaoF9QMvCw==","signatures":[{"sig":"MEUCIQCnSiLVO8IznhrNUktprV0+fHyY7FIuDwW3TVqmdDzJWQIgNW04H60/Bn17FzHJ5wknpXlPnLB/uylqjbyYUBBt5B0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33358703},"engines":{"node":">=18.x"},"gitHead":"9e5ec7b6ea527c929689c0c43aa77ccba54f2133","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-b7717a3-202507181016.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-9e5ec7b-202507211443.0_1753109138760_0.17465908363819227","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-9e5ec7b-202507220827.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-9e5ec7b-202507220827.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-9e5ec7b-202507220827.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"427aa5fc7214ff2f3d4254abeefb07ba6be0bd8c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-9e5ec7b-202507220827.0.tgz","fileCount":422,"integrity":"sha512-5T6ALmeXKHATUurD0sCSkVOOo48wVLwHxXDcgL9cHvGkS0vRyS+rkBVvKCQukWsDBWy6RR/oVtFg04FWdjt7OQ==","signatures":[{"sig":"MEQCIBVd7LhE/+ZUP6bQsbxfT86VL710JComElUV3qlDvq14AiBsYesd9Q4DWepj4FJ5gDRfGXCZt13OFZ+rUOr7fzefpg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33358703},"engines":{"node":">=18.x"},"gitHead":"9e5ec7b6ea527c929689c0c43aa77ccba54f2133","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-738be69-202507220827.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-9e5ec7b-202507220827.0_1753172971496_0.836029273753538","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-b862ed8-202507220955.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-b862ed8-202507220955.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-b862ed8-202507220955.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e50aa9fcf93e1544fe56469e663fa029ada4c273","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-b862ed8-202507220955.0.tgz","fileCount":422,"integrity":"sha512-mqng+4BZe7QuLpJnk4zeGBO5rRgsatr9sDBwM78RTFBux4RzBS54wIhNnWem1A9kSDzQaAJXcDZ+yr1ytznEbQ==","signatures":[{"sig":"MEYCIQCJ0w30d1DpMQkOTF+IELT+N4a5oLKStY+WP4Q7ijVtWQIhAOGm3JHVCJHBh+3zP0xSkBdWsgoqZIEe74srtCY91UgS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33359160},"engines":{"node":">=18.x"},"gitHead":"b862ed81cfa1f193d7915b1b0598d77a2272a442","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.1-738be69-202507220827.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-b862ed8-202507220955.0_1753178219357_0.7723399992042053","host":"s3://npm-registry-packages-npm-production"}},"2.19.1-4227159-202507221408.0":{"name":"@flowfuse/flowfuse","version":"2.19.1-4227159-202507221408.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1-4227159-202507221408.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5e9b99ffec8006603ff562b2e973c1f8fa32d60f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1-4227159-202507221408.0.tgz","fileCount":422,"integrity":"sha512-0dImCNxZZxUeXATHEaQ4WWYfwHWPdpEFVlxhD2waNx4lNKj/tvAUgTK43kAWBFYTWewUSblVzYdIdKN6y6rVXg==","signatures":[{"sig":"MEUCIQC1/qJsx2OnH7wzOwuk3PG9XxT4z77+8jQLWnPPFjNOeAIgUaE6IrfcTqOcJ/8pOLfsiiFHnbVy7eFR9hz9VjI5ZXg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33359160},"engines":{"node":">=18.x"},"gitHead":"4227159fdd86f16a7a3a40af1fbe5f2884601bca","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507221407.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1-4227159-202507221408.0_1753193419145_0.6379594826623085","host":"s3://npm-registry-packages-npm-production"}},"2.19.1":{"name":"@flowfuse/flowfuse","version":"2.19.1","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.1","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c62aca658118bd193f49bf18ee4d56a98826733a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.1.tgz","fileCount":422,"integrity":"sha512-RRhk75qQuU2ZBElU3M55i6qvjlbVUjWCtFz8eOQd0m1cTJ62NrNndYDW0IfkRVRp3uShXR1RDeaG+wChSe+5Hw==","signatures":[{"sig":"MEQCICDtJV+j7DQy7xbZQVcMgwkS0PXcNHSzQfTvsqYRfLLJAiBNEv5lG7ymPanmf+RMHhgI1CskzjNnEZE5WifUBSeiLQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33357612},"engines":{"node":">=18.x"},"gitHead":"a71f9a0deb3cff729a90e406cf7ff654dbc57132","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.19.1","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.1_1753193628828_0.5057470852619916","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-a71f9a0-202507221412.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-a71f9a0-202507221412.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-a71f9a0-202507221412.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"50b300e2f258a65c34f2064fa8ad7e7ebb6ee1d9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-a71f9a0-202507221412.0.tgz","fileCount":422,"integrity":"sha512-5X+w3vmHi9QTgnJ6JCdKUJ0BaatFZh3ovFqaGOMKioa8cQOb6NwICyseHmpX6Vr3kT1JBnCKDBaE0xI5OcRSaQ==","signatures":[{"sig":"MEQCIDHnqjNIp6MxqBxXqzmcY53tQ5KjGeXrdgqCYt+uuoHUAiBnYMyL8LZCckvgVm/I8ERi00wS0DCJgQLcB2f9HEggWw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33360793},"engines":{"node":">=18.x"},"gitHead":"a71f9a0deb3cff729a90e406cf7ff654dbc57132","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507221407.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-a71f9a0-202507221412.0_1753193644900_0.7812284647172696","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-a71f9a0-202507221428.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-a71f9a0-202507221428.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-a71f9a0-202507221428.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e8701f79f621d5705217404a0bb2b840118936bc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-a71f9a0-202507221428.0.tgz","fileCount":422,"integrity":"sha512-bqNY2oYcBDk3v0SXV2WMX1nUH/vvxnsafnS4bzLXMxSPAbU69fxtI6hEI6y2iEpRC+wiACjtV2tDi4pgdd7/fg==","signatures":[{"sig":"MEUCIQD8rpEQAlyi42QzzhFdi+dMfW1F9npSJRC6bJw4ytWZigIgBxFNSKQQKAuzECKlIlEZfikB72MnNkBuUEcARqknecc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33360793},"engines":{"node":">=18.x"},"gitHead":"a71f9a0deb3cff729a90e406cf7ff654dbc57132","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507221407.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-a71f9a0-202507221428.0_1753194590048_0.02918155523769217","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-0f50305-202507230926.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-0f50305-202507230926.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-0f50305-202507230926.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"77d8e8989353ce22a9125b7d0d58dcccc6d05d0f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-0f50305-202507230926.0.tgz","fileCount":422,"integrity":"sha512-logWRCYWCAfgrYpIBjFco+CV2HTGWYIEpgsWblfLzuynzSjOegudbTWR1zMmPK3p5zEogX3jhu1fUCfFylaPJQ==","signatures":[{"sig":"MEUCIFpzA9/dOsyKI247AOHTdCinECv75djC2jkWWe5ff4e5AiEA50M1SVOrMXCzWKCKPOGikMPTy/EIlvdiLSNPowO1iw4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33360796},"engines":{"node":">=18.x"},"gitHead":"0f5030528e06364e80363d915224402ce9f12770","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507221407.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-0f50305-202507230926.0_1753262899571_0.9515679343485579","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-dd13f66-202507230947.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-dd13f66-202507230947.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-dd13f66-202507230947.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8e9eba4bd176147d8140eaba2a9ffdcff3a0b312","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-dd13f66-202507230947.0.tgz","fileCount":422,"integrity":"sha512-0h8kyB9dL4m7IFwqjkJWC5yd91Ltl9iuHimS/HaxjO4Dw7N6C97JkcDBMCAb736y5RVwymAGmfU1sEjxkgvWyQ==","signatures":[{"sig":"MEUCIQDtSXHm8yTQcpGM0m5qB00bV9WATsZVeNlnMbUA1PrHXwIgcZf+f4OwwUDgQBiR9qNFBUMfywgRWKu0N0lLhOjywmM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33361258},"engines":{"node":">=18.x"},"gitHead":"dd13f662689619886587c5dcd49e048b62f99b4d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.3","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507221407.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-dd13f66-202507230947.0_1753264128841_0.8002576699773922","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-2fc0ddb-202507231456.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-2fc0ddb-202507231456.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-2fc0ddb-202507231456.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"46e3547d96ba507ea6c3ca6477bf4c39b35b4617","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-2fc0ddb-202507231456.0.tgz","fileCount":422,"integrity":"sha512-Yfmvpqt5HTp4aAS7SUjRUgGes4VuOpaeghSbis2y9gwxEtUY2JkLXnJ7Q+JOVb8noosPtz292mNFyvuuaI2Ubw==","signatures":[{"sig":"MEUCIQDcKS1+BVJhlTTx1PU79EbZjqtpFs9rD3NaRbuHcyLXlwIgNGGtMuPMhw6XTNUo+H/hUuHcwHXVVL1t4bRS0w4RCmQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33361319},"engines":{"node":">=18.x"},"gitHead":"2fc0ddb13e7e925c7327c31b761aff4f3082a80a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507221407.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-2fc0ddb-202507231456.0_1753282693243_0.7725266396145423","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-8009370-202507231624.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-8009370-202507231624.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-8009370-202507231624.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4b83353921c6117dd7a90f2fd3755233825c0a2d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-8009370-202507231624.0.tgz","fileCount":422,"integrity":"sha512-oeT2DdLstpfkYwBfvSFhkRgfnD0zQroRctWpT2DdwiGWhA2uvP2l1bqcQbRoYg43O7Zf1DwaLFtOnTmJwG9dMQ==","signatures":[{"sig":"MEQCIGJ83JLI1mpkDLQ+h+AnmYVYp2gN3r3k9a9HXYSbqS0TAiANNBdFr2o9B5NN0Zx/X/YOxkdRd2R6cq526Vn2uyw1fg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33362851},"engines":{"node":">=18.x"},"gitHead":"80093704d7ef98e8e0c55ac9dd0886ffa7d8d104","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507221407.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-8009370-202507231624.0_1753287988938_0.6603684711719569","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-8009370-202507240837.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-8009370-202507240837.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-8009370-202507240837.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8446b52ea2335015927cbce6d34b6bf43ce59db7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-8009370-202507240837.0.tgz","fileCount":422,"integrity":"sha512-6BMqR7uVk01guVARLrZiokSI1DwfKwaDNeC9/fX25Fvkjp0kiyh9+44zX+tapQzo92fRG3I9UsQzXUPrUVOKUg==","signatures":[{"sig":"MEYCIQCdj9e5XokkSvNwJAVIuP9/1p3U9fxBBk0uGRhSyD6dRQIhAJngpFWj67dm9Bb28D6mRlQ0jlL0fzqPWosSJptNPViv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33362851},"engines":{"node":">=18.x"},"gitHead":"80093704d7ef98e8e0c55ac9dd0886ffa7d8d104","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507240836.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-8009370-202507240837.0_1753346325163_0.07571925938372348","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-cc3363e-202507251515.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-cc3363e-202507251515.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-cc3363e-202507251515.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b878a3d0df71c64eb891239b512792dd5ca6d6f7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-cc3363e-202507251515.0.tgz","fileCount":422,"integrity":"sha512-EHrTiVNJup92isKRPgIBxxCI2OFapzqSSvkfCqWkJBaAAU4OvvntY1LgXBGfEcfVQMZmBnyS5FcoA03YMDAtFA==","signatures":[{"sig":"MEUCIQCZJZuzFZAZ9hXIgQxy2X8ierFwSRdmrh9jjD5Tg/4lswIgWiNKef3WH6Ihci5dIlL6tH4869whivuMvPQUtHzxPTw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33364274},"engines":{"node":">=18.x"},"gitHead":"cc3363eb24c4c4932f24db080a687719ff50c4b8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507240836.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-cc3363e-202507251515.0_1753456648530_0.04615533036352293","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-cc82aec-202507251548.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-cc82aec-202507251548.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-cc82aec-202507251548.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"88651cec4a9a7baf129df5cb26645ece6eaf4032","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-cc82aec-202507251548.0.tgz","fileCount":432,"integrity":"sha512-tFnIure3a+yfkX2mtm22MsevnG5/DNqUYzWnYqNxpfsDghc6nqo1bnmjohB/ncTg37OshaHwdSrRmVGhkbvRdw==","signatures":[{"sig":"MEQCIB+jBFFCFccz98SXLV5Yii0vs+T7fdWZS8Zgo7lMxChdAiBlmmrRgvoRiZouLgtr1ZvdMqwZl7fSmWOUkSVDfyWKzA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33722738},"engines":{"node":">=18.x"},"gitHead":"cc82aec510a9e4937ad569f513b2f0ffe284f390","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507240836.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-cc82aec-202507251548.0_1753458619847_0.2903064191328162","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-c39bc50-202507280952.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-c39bc50-202507280952.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-c39bc50-202507280952.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7bbf0fbe76ee113d6b1b2105dfdd1cec5a7ba5a6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-c39bc50-202507280952.0.tgz","fileCount":432,"integrity":"sha512-oCxE1KCeQ2Ebw660fOtBSFcmySFjd6HwvujPjCOHd97b1/xS/taGJaEWeuhydzXYwz4D6fxbiqdJ/XV7AX8zjA==","signatures":[{"sig":"MEYCIQCOmtExZvVvoNYbH+zsbClzCTyGWu/FwREgd4HplUtPHAIhAIG3HXBWcrdKm2X/XqkXX30FPlqPobW5dbZ30NER+WFx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33722738},"engines":{"node":">=18.x"},"gitHead":"c39bc507b37acd37e99c4415517395dbc91483a7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507240836.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-c39bc50-202507280952.0_1753696455529_0.5554988939802323","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-904798b-202507281142.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-904798b-202507281142.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-904798b-202507281142.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5b139ddb2dff4867e7b339fe6b8213cd27e16f72","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-904798b-202507281142.0.tgz","fileCount":432,"integrity":"sha512-6Ju8KzWUUt0/nNmdBhwxtal6WXw6zv9IEoU9t/ROrmNOC0vBd1m8SDfm0P0usohiFXpHnApeAwZO1d8Xc6iu5A==","signatures":[{"sig":"MEUCIQDk7VWxzB6cX9EbUc4LUYxNhaqzDPWhFsfQ8SEmPHypaAIgZsnXhObVtBatEM999Ryr9HRIw7CpeMmh3lrEJRJ8JI4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33722816},"engines":{"node":">=18.x"},"gitHead":"904798bd7d1258eed208b274b81b6e8b661249cf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507240836.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-904798b-202507281142.0_1753703030909_0.5238910073795131","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-c82d238-202507281357.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-c82d238-202507281357.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-c82d238-202507281357.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"275f888ddfa40d9c1f787988a0c4273a85052d3d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-c82d238-202507281357.0.tgz","fileCount":432,"integrity":"sha512-e05sbqZZg76USRnl3NANAL4HuV8tpzNoUA7Xe77XSTWLqzFAIpC8Lx9JcXsCGdcs0YDvN5sfGgnY5Fg2fzQlyQ==","signatures":[{"sig":"MEUCIB4fSqNbhxzTeY1O4NEKfE7fZk0fC2OIA0fd9sS2DbhJAiEAvgThF2Ob2DqToYnYxn2+yoLPg1DQD5pK/ziuJgAoRgk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33722919},"engines":{"node":">=18.x"},"gitHead":"c82d238c02b04b05772601e1a57c89705b421ad6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507240836.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-c82d238-202507281357.0_1753711137997_0.47211246998443923","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-c82d238-202507281411.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-c82d238-202507281411.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-c82d238-202507281411.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5c42dd53f5e071745d1e9ff1ed0376168d05e675","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-c82d238-202507281411.0.tgz","fileCount":432,"integrity":"sha512-mD4O2QLdye+PXbDVocJit9NwaZFqMPOoNE+A1UndXuAm9AeMLwR+MlS86jnyuvYJD5BNNLNyXeZMqTA7tniayg==","signatures":[{"sig":"MEQCICqp3rOP0zoQ6TsIxCnosVAivG3kei9oh0u/xGiq+3GgAiB8PqZ9G4e60sHraP8ltD9MbkRUInq6cVNG7hHM6GUT5Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33722919},"engines":{"node":">=18.x"},"gitHead":"c82d238c02b04b05772601e1a57c89705b421ad6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507240836.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-c82d238-202507281411.0_1753711965524_0.895901157084986","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-93f53dd-202507281458.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-93f53dd-202507281458.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-93f53dd-202507281458.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6917dec2b621606271fe9ccc84ad726b932caf73","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-93f53dd-202507281458.0.tgz","fileCount":432,"integrity":"sha512-CKttieYa4amhX3A7BQFs9MQY6qOx0wYnJf/r/yNz5lxXmhNOQYsNq9C0n2Tyn3UyOqZU0iG98cXAZ0NFtiDd+Q==","signatures":[{"sig":"MEUCIBS9LSzTJG4pDczCPYMnDlbQ6P/maRE4dKSuYswY5Hf8AiEA+LQbSo680WqK/AgKAbmdn7mNbuc9qj/YbIybc3uOPrE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33722993},"engines":{"node":">=18.x"},"gitHead":"93f53dd2d7ecea6e0605f56d0572cc3fd0b0c051","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507240836.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-93f53dd-202507281458.0_1753714804199_0.33865395728697023","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-4e491a8-202507281620.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-4e491a8-202507281620.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-4e491a8-202507281620.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"306b693e9833c11456598c259d5690935111ab2c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-4e491a8-202507281620.0.tgz","fileCount":432,"integrity":"sha512-/91t91XedwfeTMCapJXWr18MCYWrBcTFK683JvxqlCr0pca03+/4TLo9wGRoq6aMjSj+gRUFEKNHwK6l7pNTlw==","signatures":[{"sig":"MEQCIAULADw0JrEnDQtsd0FXXTJwzGYYWXAl13edMrSLaJkcAiA/3/QuGKjUUcCzxG43T2ZyVo/lNAfyaGBy4pNoaAqQnw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33723358},"engines":{"node":">=18.x"},"gitHead":"4e491a8a80d1ca235f6f2507aaee86d1cffd857d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507240836.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-4e491a8-202507281620.0_1753719753776_0.666025227824234","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-3b064d3-202507281742.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-3b064d3-202507281742.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-3b064d3-202507281742.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"586a6efeb2fff7bb0c9fde338f2d38348fab53cc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-3b064d3-202507281742.0.tgz","fileCount":432,"integrity":"sha512-5B2aBMswE3/4iHPZniHaUg53vvCCNYmrotg1FvNEgypBNw5Dw6qqCQEfMWW+mclwjMAWOTn90jP6FE9lecsBVw==","signatures":[{"sig":"MEUCIESeF9p9E4juknFXYtrXawGsxP5l54HDVbs4IM4avKyQAiEAw5g5hF+toMRcgCHYfgGZnZmWs3CTnvsMyVWf6vR8pxU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33723500},"engines":{"node":">=18.x"},"gitHead":"3b064d37aa1f87d99d7139d77bf3a94873b74251","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507240836.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-3b064d3-202507281742.0_1753724638588_0.27504768987993145","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-31d6502-202507281957.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-31d6502-202507281957.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-31d6502-202507281957.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e78d007afeb02441c8518c2cb013ad99666275e5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-31d6502-202507281957.0.tgz","fileCount":432,"integrity":"sha512-t+5OVHDhzPq3cqZ1onxwJmYKmHVYF65qXgY1QgMg2kc8pjGgWIPmqeCwlRpho8bvsYLM4a0SKsUcDSQdKyLTTQ==","signatures":[{"sig":"MEUCIExaZqkAclKNMsgZEavk0O7fIKQaycsz7M7OhqOs+sDDAiEA73z3yleHUej6BY8sQW0pmS6H1d8GX8j5Mgq43fOFWRU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33723590},"engines":{"node":">=18.x"},"gitHead":"31d6502492240bcd912277f796ee3da4b29c7961","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507240836.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-31d6502-202507281957.0_1753732767954_0.5299526939408881","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-7bf95e4-202507291112.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-7bf95e4-202507291112.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-7bf95e4-202507291112.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4b299bc097d20268e496638b017326bda5e9b5a9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-7bf95e4-202507291112.0.tgz","fileCount":432,"integrity":"sha512-e4TwA1qK6SPDMsuGhQ/oIpxg+KS7EnvdGQ9snlsZbTtcVEvYe3vQyO5p0a+gCMfjEONgfucEog5HYpAQiUXKJQ==","signatures":[{"sig":"MEUCIBNWG8Vio5xJo7rjIfH/7XfL+/l+MQ52q+GTBj7MQi39AiEA0gaTUZ7MX/T2PV5B2tYWTsV/QDQIkpGd1bRM2E21wDc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33723289},"engines":{"node":">=18.x"},"gitHead":"7bf95e4ac157c1aea6206a2260373c9bb2015f37","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507240836.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-7bf95e4-202507291112.0_1753787647516_0.5592625026388094","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-7bf95e4-202507291128.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-7bf95e4-202507291128.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-7bf95e4-202507291128.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"61bd6c1456d4339a791615554c6b146e863f3708","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-7bf95e4-202507291128.0.tgz","fileCount":432,"integrity":"sha512-VyOG6qRacC/18kF6RgNPD5UUU9VASE85QLd8VU4oXA4L3J1Yv0xmjSZ2gR53qwdU8TsyJxPBkzcrGHQ0HMviLg==","signatures":[{"sig":"MEQCIA4ICdYg/gmDxMCbceBIfAWNjEL/bdxDdINKvj4fk0OcAiAnjKwXGlUJmLPQjjtJLP86J16rv1Nup1LCQxHTLoQ+uQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33723289},"engines":{"node":">=18.x"},"gitHead":"7bf95e4ac157c1aea6206a2260373c9bb2015f37","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507240836.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-7bf95e4-202507291128.0_1753788581894_0.539790220322673","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-1286819-202507291315.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-1286819-202507291315.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-1286819-202507291315.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"04e8df422900eded654332d3f86e3658e63148e2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-1286819-202507291315.0.tgz","fileCount":432,"integrity":"sha512-Vb/o088zURKIxHfPZKQnuhozWCwMdUx9PZ8KEmRQN3+ao0x04sZarHdzIOBaa1KdJA7ew869EnmEo5uMZfiwQg==","signatures":[{"sig":"MEQCIHqLlLdaci5kYjBlzBmhc1SNso4MAI9XbP9fqmwGZ03+AiAbo07YE2c9WFPdxdk5E2XKZ4+F2wjrFYT6Vc5Qus+wJw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33630757},"engines":{"node":">=18.x"},"gitHead":"12868196ca2dd9fcef2762ffd9c7a0cab6e9d4d9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507240836.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-1286819-202507291315.0_1753795008363_0.017288759818527177","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-f3b48af-202507300816.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-f3b48af-202507300816.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-f3b48af-202507300816.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"28039356298f82c78b3d6a32357fa2d0268a34b4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-f3b48af-202507300816.0.tgz","fileCount":432,"integrity":"sha512-Wifq7qEo+hNCWaPY1fvKAJ455qfqtvkaCQE7qYrGjXijYDjtSxrWFigeOMpUcUjfxNDyw7Jbn1R6hn0AeZYkgw==","signatures":[{"sig":"MEUCIC2SoERkkerkskaGJq6kZYAvWj3TomIxndl2dP7ooVlWAiEAx/QmQ3nUw6LzbZAug4zmnt7Bj8kiu2MF0H+yGHt0Tqg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33630916},"engines":{"node":">=18.x"},"gitHead":"f3b48afa3cfaf4229af58f7d0a8463262fdafe9d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507240836.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-f3b48af-202507300816.0_1753863501690_0.05316210608106342","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-a8a5191-202507300853.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-a8a5191-202507300853.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-a8a5191-202507300853.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cbcaa056e06f7298bead0940d82f3d3ce47a5bbd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-a8a5191-202507300853.0.tgz","fileCount":432,"integrity":"sha512-4w7Gsq4nkZBQDoqDc5UWHZtMjWevmBoJL0dJdjXTtKkq4sgFUH4+nAPpwjdUD4XlEe9TmBoUxZgObo294KYYgQ==","signatures":[{"sig":"MEQCIHIoAGTowpHRzLNvEvRtKw3mZ5ZruLZ57Me+Ip6GACUoAiBqxGYbfCrdmBKbH7RsPyYwSJwr/uVIbtvhWwillrvm2Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33654835},"engines":{"node":">=18.x"},"gitHead":"a8a5191ab352c8812fbf387a4a685602c9880adc","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507240836.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-a8a5191-202507300853.0_1753865712388_0.16302463358609232","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-2f79d75-202507300859.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-2f79d75-202507300859.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-2f79d75-202507300859.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fd1485d5eac1ee334f02efc4692e68be5a4d8667","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-2f79d75-202507300859.0.tgz","fileCount":432,"integrity":"sha512-TtrOr7ow+b5mjT549lRfmjjoFJ6VblMd6nsTiUcmWBfkMW2pLx2X9PipU1HbhDYmOD0wzlgHd3cQxWERlt6lgA==","signatures":[{"sig":"MEUCIQDVnvsT/+8J+ANRs60BWHRO4Lw2kzp/5zg1/m/7wb3gRwIgGHppT6AclqGJIDWbiyqbk4KUZjjLR/KOcSpq36W0JjM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33660164},"engines":{"node":">=18.x"},"gitHead":"2f79d75c14bfeed6842509c0bf8a1d09bb4b0c3c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507300858.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-2f79d75-202507300859.0_1753866069002_0.6893106948501564","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-2f79d75-202507300915.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-2f79d75-202507300915.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-2f79d75-202507300915.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a8eca47d5348d55b045316b96f1e718a1e604a09","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-2f79d75-202507300915.0.tgz","fileCount":432,"integrity":"sha512-CND0JvPLYQDxSUCjEQwsxOuq9MWJNHIbnonRQQTpwmNVp8l1jUKB7CSULPiindzKa0ji3m6qzXx/og25YbcB5Q==","signatures":[{"sig":"MEUCIQCiKiVAiwwTMsYu3setYA8kmQxbq4vI/n0lPxTcMGxeewIgPIfDQuPvrrMDpHV8a3/DsTj2DmIr4H+sNRXxaDN3nMc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33660164},"engines":{"node":">=18.x"},"gitHead":"2f79d75c14bfeed6842509c0bf8a1d09bb4b0c3c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507300858.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-2f79d75-202507300915.0_1753867009119_0.6945020046380905","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-da3add9-202507300929.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-da3add9-202507300929.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-da3add9-202507300929.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c7afcbf2da72fbe0103a52951682cfa76b3cb460","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-da3add9-202507300929.0.tgz","fileCount":432,"integrity":"sha512-WNuptx1YVrmQ1gulPL3Ee7tebrk7FjkHsdPoAlIPj4H2RlNqwbyJugP84eyNe1pEU97IGKOfcIyvFDd9abZhPA==","signatures":[{"sig":"MEUCIQCNA5IEsU2U1urKdimq1Vo+uuzRp5T9UHCmT67Glzl/NAIgP6ZGhIOmenl+K/Ca9ml3aX5IHvSeX/OhltBisC1c3RU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33660752},"engines":{"node":">=18.x"},"gitHead":"da3add992b10e8634275c9a450e0a97731b93337","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507300929.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-da3add9-202507300929.0_1753867875738_0.13512700835882718","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-da3add9-202507300944.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-da3add9-202507300944.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-da3add9-202507300944.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fc5b838c5f0c6ada5ceeb0fceac85881f2549d54","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-da3add9-202507300944.0.tgz","fileCount":432,"integrity":"sha512-KUxykL8E+B/Zcw59aAYSWZ0jumM4ydRJ6cbCfI3bdDlO4ng96r2sLsa8SDHkHZxF7aqWzAMH82ZGaCabUEXJmg==","signatures":[{"sig":"MEUCIQD0PPsOtfJxbCra0dYZ0M3EgdcIUeiMIukt61VkO7/5lwIgc6IqFUu9AM6BO1TNSoVIJivkEQ7OLF5CcrcR8DCehTg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33660752},"engines":{"node":">=18.x"},"gitHead":"da3add992b10e8634275c9a450e0a97731b93337","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507300929.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-da3add9-202507300944.0_1753868777284_0.6366725860451716","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-da3add9-202507301024.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-da3add9-202507301024.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-da3add9-202507301024.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7091d880ba3d3f77385f9db1db94dd2ec5e1fc7e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-da3add9-202507301024.0.tgz","fileCount":432,"integrity":"sha512-aBzYOZcsYEhH2KXF5wiF8gC2qkfIkc7x3Htqz3Qm3IuL6gFn5UeBI4QKU/QvIVN1wXIBTVIYwCF2jE2EhqlWlQ==","signatures":[{"sig":"MEQCIF1fpajhwaOFPCVSAwbNPhH9ouvguvZ6ZH0ou6EacvAEAiBGGHNEx5qicpOS2D47okSc9cSbIXu2v+UbMZnIOJ226w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33660752},"engines":{"node":">=18.x"},"gitHead":"da3add992b10e8634275c9a450e0a97731b93337","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507301023.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-da3add9-202507301024.0_1753871160987_0.20080354445316617","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-da3add9-202507301243.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-da3add9-202507301243.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-da3add9-202507301243.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3a9ca8c9cada599273e5aa070b8f0ea7f1ccfb8f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-da3add9-202507301243.0.tgz","fileCount":432,"integrity":"sha512-nY8124P2w72GTNlMa81diYV1KXPL1JUAvPWOs9+IYgYZZKymJTbhnLyEe8C/EDk03xalwfH4Ncv2F0OcZDxP2A==","signatures":[{"sig":"MEUCIATFKBEH4kzsRA38EqfGNgXb5c2cjB3ktO1+nmXQtb+AAiEA8bQCsxMmpxiVHjWlbOp6OvGst7ULuHmkzc1cHKjnLYc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33660752},"engines":{"node":">=18.x"},"gitHead":"da3add992b10e8634275c9a450e0a97731b93337","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507301242.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-da3add9-202507301243.0_1753879502757_0.23097209163760324","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-06f9c4a-202507301513.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-06f9c4a-202507301513.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-06f9c4a-202507301513.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"23b20a70e9e4adcdc38b4f05ab9aeb3ac8a46aa4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-06f9c4a-202507301513.0.tgz","fileCount":432,"integrity":"sha512-yyaywR4OcUeDyaWazVHtoEPbLWLPYjUqArrJRM8+zfuRzX9WYjITJGoiiumf6A5/7p3I6gSD1xKcb0GDbK9HsQ==","signatures":[{"sig":"MEYCIQCgL+g+gnsrJcBt+7t/OqFD+U7hB7iuHsrx35QA4G/SdwIhAI94s2oRvTlikJBeTpjMc7d+ir13HUXtna5zl4D4LuXm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33662145},"engines":{"node":">=18.x"},"gitHead":"06f9c4a9e27ebe7740db11860259321b1d79ea03","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507301513.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-06f9c4a-202507301513.0_1753888500492_0.9820313528315261","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-06f9c4a-202507301526.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-06f9c4a-202507301526.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-06f9c4a-202507301526.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0ab34f574be9b7f5903eb0025ab650c47e633647","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-06f9c4a-202507301526.0.tgz","fileCount":432,"integrity":"sha512-NSOAK9ajTSPVcHAAbAqNlRGzUQQxPb8gDNBAo6bX4wflxesYTRvYiN43uKONA3Cf8a3vSHNvteGwi7puQ99upg==","signatures":[{"sig":"MEUCIQCkiP/72SFa5iStm8rtwUd7lDDFGGWjgCcV4BKdhbOfggIgBjs4s68ddsWp5eQ0hwaGAP44pUC8VKH0U3NH+iryfD8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33662145},"engines":{"node":">=18.x"},"gitHead":"06f9c4a9e27ebe7740db11860259321b1d79ea03","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507301513.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-06f9c4a-202507301526.0_1753889263478_0.6002342474387703","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-06f9c4a-202507301543.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-06f9c4a-202507301543.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-06f9c4a-202507301543.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f5aeb926dbf29eade06fdeb14c9630346f7502d7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-06f9c4a-202507301543.0.tgz","fileCount":432,"integrity":"sha512-KLSHu946tA9aBnvVQnN1ekopHU7oE3l8E5fzs+cFM8GRz8H6lWMg9pw1dvjQJCs/5CYnamOVPoqvaWA3EblhDw==","signatures":[{"sig":"MEYCIQCmt9wRZm9c2KiSw1Nx3J7Xb3Bcyznmj6DEcIN98FFCFwIhAKKEiKV4uqjtK+25joW0MOwu7HWUsI3Qmjd9zkxmmXAb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33662145},"engines":{"node":">=18.x"},"gitHead":"06f9c4a9e27ebe7740db11860259321b1d79ea03","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507301542.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-06f9c4a-202507301543.0_1753890308746_0.3308292742979373","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-06f9c4a-202507301554.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-06f9c4a-202507301554.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-06f9c4a-202507301554.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"73f6ae53a70affe0e79f426e87ac2b88f4ff03c6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-06f9c4a-202507301554.0.tgz","fileCount":432,"integrity":"sha512-zWjQ1VnGE9f4L2v+X8ljk+K3jRGKrd8rGz9GVx4awFqFgcW1laXwrHX4rsn0aLRJAftMdqoibc1HH0BRTwjzUg==","signatures":[{"sig":"MEUCIAmt0mwo9NM/7YyF7YQPgmO2dxqWlppRS9Pm0aftO+e5AiEA8QCM98tTPB7JbrlvtGBbX4PIs/djXoGDnN+vkpcpPP0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33662145},"engines":{"node":">=18.x"},"gitHead":"06f9c4a9e27ebe7740db11860259321b1d79ea03","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507301553.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-06f9c4a-202507301554.0_1753890934537_0.24075223196888929","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-0971d5b-202507310704.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-0971d5b-202507310704.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-0971d5b-202507310704.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4bd4a1667e62d90483d7ec94ea98f44f1a9466d8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-0971d5b-202507310704.0.tgz","fileCount":432,"integrity":"sha512-bP2B60IH9PLzGDeSHANpXjDW6Q9I/K1tYM8zBnqBXsskvTsJJquxF0VJ0SEiFdouMsEpM63llmBf604es7lvMQ==","signatures":[{"sig":"MEYCIQDwglkUhLzOJt+bzo/6qlZuYyp+lePu0OqwDWU74TvCmAIhAKvY804T6cM434xxcemZW52Ik0ltrvcLBmBNB6mZb1RV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33847623},"engines":{"node":">=18.x"},"gitHead":"0971d5b7a545c5832855ea1d6059afa8402b2018","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507301553.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-0971d5b-202507310704.0_1753945577787_0.2799504162993365","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-0971d5b-202507310720.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-0971d5b-202507310720.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-0971d5b-202507310720.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e1b30457cfa06d29c4a9a33da68896e37206b6d0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-0971d5b-202507310720.0.tgz","fileCount":432,"integrity":"sha512-go8xmGMUSDPVEhQHvAXla6r0g08INvzxtj8HbX7/hXTE1a15m6KDALl6aDUa4aEMPU5mNb11qclFtXWPBNs3Vg==","signatures":[{"sig":"MEYCIQDi7DMUPxQtMGfbBawT9Vm5VIFtxVUSzUBNa35mJCvaeQIhAOR0zIgfhY/3ylV8eAJPbUq29z/EPrIjNd7V+SI04ab7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33847623},"engines":{"node":">=18.x"},"gitHead":"0971d5b7a545c5832855ea1d6059afa8402b2018","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507301553.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-0971d5b-202507310720.0_1753946517776_0.8620223473331963","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-6a59980-202507310848.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-6a59980-202507310848.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-6a59980-202507310848.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"02c6cf3046de96d249d75bec5e15c97206024ef3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-6a59980-202507310848.0.tgz","fileCount":432,"integrity":"sha512-u4YxPDjPtzIIfMNbppCHslzHr/QK8qPdolKEi6h9WFCajItQ/L+hjKrE12GJX0jUlFB2GJfVwhsm4diAL+QWtw==","signatures":[{"sig":"MEYCIQDNTSxAU+8aWajHbeH9v7GXdNGw1cW07d9/fOyXIcBuTAIhALP7GLMmY+CDk+lypk+bES52/B9NLWgVUfuywJETlHyN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33847119},"engines":{"node":">=18.x"},"gitHead":"6a59980be92b3f047b6c96b65bd9cac16a1f8faf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507310847.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-6a59980-202507310848.0_1753951807195_0.5316465243928983","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-6a59980-202507310851.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-6a59980-202507310851.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-6a59980-202507310851.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"43a7b093905b023b76be9ba45d7170acb9495e28","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-6a59980-202507310851.0.tgz","fileCount":432,"integrity":"sha512-zBkW0VXlzCuR/tdPGiBLYtGWr0spAbH2PihUlokKaJmTcOnPX4JlCrKldxGvKtxWWD8+3Zp8GpLbKbp4hLv8fA==","signatures":[{"sig":"MEUCIQC1iQCZrbjCPWcFnDnp1LbjjxjjSq8nH6uDqWyujySpngIgLXE5v5qbcGY/sDLebI/VosQpPDAVF9S/Pvdp5bOVLaM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33847119},"engines":{"node":">=18.x"},"gitHead":"6a59980be92b3f047b6c96b65bd9cac16a1f8faf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507310851.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-6a59980-202507310851.0_1753952002905_0.6239165595699026","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-6a59980-202507310853.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-6a59980-202507310853.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-6a59980-202507310853.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6a3c27b8d8efdede20afd5efe8ed1460bad62caf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-6a59980-202507310853.0.tgz","fileCount":432,"integrity":"sha512-74OyigeZFAG5NQ3u35TSUfvc64CbnYx8wyb7cBZhRCGfxDJ/JyQW/L69QnRF9fb5nENOCNv4f5xcdQyk/McRhQ==","signatures":[{"sig":"MEUCIFEudQ7ssFOXc1SXNv65ZgbNrrQrsFka7/owvmqDSRLrAiEA7zuXyLgfTHKo7AO7FE4VKZ82zd0t1MGbt82qCiwM2b8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33847119},"engines":{"node":">=18.x"},"gitHead":"6a59980be92b3f047b6c96b65bd9cac16a1f8faf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.19.2-20e647a-202507310851.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-6a59980-202507310853.0_1753952133211_0.5071196977705479","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-6a59980-202507310922.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-6a59980-202507310922.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-6a59980-202507310922.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f0f9a28822c14cf084c64f6baaf116b6cfbb450e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-6a59980-202507310922.0.tgz","fileCount":432,"integrity":"sha512-XjDW9Vl0GnSVRV0r7JjYQRr1CEAGMg0Nu7m/A9tJiBN9sS71BC04r0+s7FH0DSAjcdtTwQTriNhL+rFjVf0cuQ==","signatures":[{"sig":"MEUCICdg6B9M8q4WWNT16b49hftR+4Z9wTSZ+4//im+wndCBAiEAp2Vlt+GbHJAHxj2lulFepU4dhh0nKo7k/AqDPXqZ5Uw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33847119},"engines":{"node":">=18.x"},"gitHead":"6a59980be92b3f047b6c96b65bd9cac16a1f8faf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-c68b882-202507310921.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-6a59980-202507310922.0_1753953835289_0.8184366479764766","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-b36f434-202507310928.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-b36f434-202507310928.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-b36f434-202507310928.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"93c5750eb31d409abc26d1079787d50e3c01cb19","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-b36f434-202507310928.0.tgz","fileCount":432,"integrity":"sha512-Nu22Yka6OxyzUnCWRiM+FdJuxX3SMENchLtK0TB3U34IZC7PhK5UXb7KeCGFM3N77akjBzd2ill556Egb9dIpg==","signatures":[{"sig":"MEUCIEHfK2nRlsVtqJHPd6kK1SprLhXHkC4sDQrXftnAtAWxAiEA2yOYmT3yUmNXCcawVaYQlMzaxxBTHMvA6HJI3gmvrLw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33848820},"engines":{"node":">=18.x"},"gitHead":"b36f434628a2b44cb4b750409a585ae4e4803e01","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-c68b882-202507310921.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-b36f434-202507310928.0_1753954191224_0.24651006206241455","host":"s3://npm-registry-packages-npm-production"}},"2.19.2-b36f434-202507310943.0":{"name":"@flowfuse/flowfuse","version":"2.19.2-b36f434-202507310943.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.19.2-b36f434-202507310943.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"30399ce02e15b7348f61f184da38f962d8f68bb1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.19.2-b36f434-202507310943.0.tgz","fileCount":432,"integrity":"sha512-EUT5yfi3BxUIkkqfWJuDU43iijMQRznotAbi5UVCtb2UnWhDDWmqEemjdItBgEbT9fiWZBbBxHLLo3A1RKPbxA==","signatures":[{"sig":"MEYCIQChLUYQ8AjJzBfzOwEdJ6GT/51n3X+fNvutZWcOGzJWjQIhAMSaZ98Exfok0USgMcuQVb8YmjyM1zAPZeVPC5RDPOKw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33848820},"engines":{"node":">=18.x"},"gitHead":"b36f434628a2b44cb4b750409a585ae4e4803e01","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-c68b882-202507310921.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.19.2-b36f434-202507310943.0_1753955123821_0.487076781724024","host":"s3://npm-registry-packages-npm-production"}},"2.20.0":{"name":"@flowfuse/flowfuse","version":"2.20.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2b7b2f75d4f4ed0e2294dbdb7681480c561a9193","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.0.tgz","fileCount":432,"integrity":"sha512-OYZJvEKTLTNYEciM3XB1g/fWD/+DHfJv4+/HjP9L6YQWMQzmM4l/FVxt6ubXCvwZIJDZZ3JMYkMkEE5v4Q89pw==","signatures":[{"sig":"MEQCIHvqGMQl83uYGmSuHi5dsZnK0xUO94TT0elP/nGtsmXdAiBhHJ7ik20dGlvp3XI/U1FxNhKDs7VS8SiD5HnKrD2w1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33847310},"engines":{"node":">=18.x"},"gitHead":"5b455627669365757bc9a58767fdcfd6f5f0fbd8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.20.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.0_1753955592226_0.8087172337950372","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-5b45562-202507311002.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-5b45562-202507311002.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-5b45562-202507311002.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"18d70b6a85b9806e4ad217baa0a059e455cda572","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-5b45562-202507311002.0.tgz","fileCount":432,"integrity":"sha512-8MXJYtEZJ+cPTxTTgs+xrwPwRIM2UMNwxJiuMRSggNsd20L4r6oV7mjUcoX3SazBA46WndGS7BlKO4mryGWBJQ==","signatures":[{"sig":"MEUCIQDFuUTO3z+22RA/1vjJRjIySdmycBvLCee9QVyEIoCebwIgSBuqTffbOgPgCOHlbb0pNSw+O1e8RHT/ZRn+b2x0INM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33850491},"engines":{"node":">=18.x"},"gitHead":"5b455627669365757bc9a58767fdcfd6f5f0fbd8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-c68b882-202507310921.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-5b45562-202507311002.0_1753956254932_0.22528450422763746","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-5b45562-202507311231.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-5b45562-202507311231.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-5b45562-202507311231.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4fd21f0c5fbe93d2abe13c2d753d1a31f748ed45","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-5b45562-202507311231.0.tgz","fileCount":432,"integrity":"sha512-KSFCk8+MOQkNd3UP5vZyaG77XNFEqrjVvnVGG8/fYFWFe3r/pCPU4bOShHPV2/87NIHAyB+tFsS45sJoxKsYBA==","signatures":[{"sig":"MEQCIB4D71+AgbCg2PdjaRRSvvRi3DSyJdXLcMENLn2jRbFUAiBIi2xsFs3bB9tR+GIwfyiRXlwtUpmiZyqbeq6/gBG8cw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33850491},"engines":{"node":">=18.x"},"gitHead":"5b455627669365757bc9a58767fdcfd6f5f0fbd8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-c68b882-202507311230.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-5b45562-202507311231.0_1753965160962_0.9053213427197213","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-5b45562-202507311235.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-5b45562-202507311235.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-5b45562-202507311235.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f1141e71072a48c4d71d9b7e8853c6ab7feacd94","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-5b45562-202507311235.0.tgz","fileCount":432,"integrity":"sha512-WznlDGXu6pAHnreNsx3FJcfdu6U+rhskEV1b5HDX0e2HLjJYk4WGHU7CfXA6lmyu5QiNKptNlJ10qsfdsE4dLQ==","signatures":[{"sig":"MEQCIDaHzwni+JmwgnAwDNkgaEiOtMvblSRrjACHColpl/XYAiArMSQb15Up/aGE+nEDpDN3heG91VcwMSVAmGtUQTNpxg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33850491},"engines":{"node":">=18.x"},"gitHead":"5b455627669365757bc9a58767fdcfd6f5f0fbd8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-c68b882-202507311234.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-5b45562-202507311235.0_1753965403705_0.09434026243715965","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-55c639b-202507311306.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-55c639b-202507311306.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-55c639b-202507311306.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bbf4a975a36e3b15ca330b9465ec7a2f0105af43","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-55c639b-202507311306.0.tgz","fileCount":432,"integrity":"sha512-JuIZaPUlr2t7FgopnwyUmn9Zkz9KsY2VK/r/iE27lwsebik2y9iVaKrUqBKQj57bDLnceMFRGm8YdkyBMqeQhg==","signatures":[{"sig":"MEUCIG+/nTKnz8dxSWezhfVr5TOhMhaKVSr0h1fb+1T8eoXvAiEAtwARBHq1gNEoa5CGb0nagW24Zy3Pon8etvE6fAPtiLI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33850491},"engines":{"node":">=18.x"},"gitHead":"55c639b4880d26d6d11b14c5068d396b833d811b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-c68b882-202507311234.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-55c639b-202507311306.0_1753967272316_0.43909295376144164","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-a175185-202508011032.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-a175185-202508011032.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-a175185-202508011032.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"383e39b36e44f75928713ac2a9d686a06002b68b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-a175185-202508011032.0.tgz","fileCount":432,"integrity":"sha512-gWdSlSLOagHwl6CitATLo+N578wbx8Vk4WrUriszxoDcEGs96otnS6QiJ4LG6rOLJN7v195yAqbr264GGZYdDQ==","signatures":[{"sig":"MEQCIAHdwGGSG7/9oT2e1I2kfifLCfEkvmsfFsvcBdXLwK7nAiA3mPuqB2oEjmHN5dpA6j8HPysGNW8cxiURHhnVXbVISA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33850514},"engines":{"node":">=18.x"},"gitHead":"a1751855b0c7e681fa4cb1f56d1e27e0381a8478","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-c68b882-202507311234.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-a175185-202508011032.0_1754044441616_0.8949316652787664","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-3c84376-202508011332.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-3c84376-202508011332.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-3c84376-202508011332.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e9b157fd26b47ebd71b1c920174bf6a82b98f050","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-3c84376-202508011332.0.tgz","fileCount":432,"integrity":"sha512-QhK4aF+W9iEDt10v2q8sL5CABC3Ef9N0f7r5WtOZ6fDCFD6zj+CVguM3VD52vw/lrl3YiqH9bQ7HRCMPycK9sQ==","signatures":[{"sig":"MEQCIDJ2yAvtLiFqiN2AClq2i1wUE1YjHTIa+SoUlvlM1ED/AiBcSddBeq2dlQ0QzeNIUfa0sigDPHXtE3ahyx6dh7tVUA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33850541},"engines":{"node":">=18.x"},"gitHead":"3c8437604c11dc937d3005d015ebb8a4d412c8f2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-c68b882-202508011331.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-3c84376-202508011332.0_1754055258539_0.9343729877687412","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-98a10bc-202508011415.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-98a10bc-202508011415.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-98a10bc-202508011415.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b1f6d8850fc598c3f88fa249d39eb10e2de3c750","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-98a10bc-202508011415.0.tgz","fileCount":432,"integrity":"sha512-bKUX5ZJs8OUP7JbTfYMScyQklATKpeNmrWauocjlWASefp1FOoxnoEOXc2TIiAakdkXql9ZOpemixCiCpdbuLQ==","signatures":[{"sig":"MEQCIHP0otuyVM3fYJAV6MmwOTJ4+idFGkH8RB13eMgzHfmKAiAbRvHhp37XVd8S7Lbkvpd57oY/agm2SFu27obREj8pbw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33850543},"engines":{"node":">=18.x"},"gitHead":"98a10bc03eea8ab5a6b25455d8036d3ad1d8ce5c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-c68b882-202508011331.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-98a10bc-202508011415.0_1754057837867_0.025189244628905927","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-8066506-202508011456.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-8066506-202508011456.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-8066506-202508011456.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"baa797657d8cdb46d80cbc0df360d846921a2d9b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-8066506-202508011456.0.tgz","fileCount":432,"integrity":"sha512-l0ujxLy4LNPjBNrr19i51TzOgBpyAGvqMj9B/NICfKQgZCQmLIpoLd7tGjtHR+IOYLe9AFI7vZpSqCHQ+hgL5w==","signatures":[{"sig":"MEYCIQCx6zGnGbP0/0tktR26FYkMDku3ppqwI8pJp99isPiVmgIhAKhbfy1D+Hmuvu/bUNIbYVxJMJ51MFDlzjV/c5YkXGLd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33850531},"engines":{"node":">=18.x"},"gitHead":"806650629f1a5681840024f38aec0138a20dceb4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-c68b882-202508011331.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-8066506-202508011456.0_1754060304006_0.945277649805137","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-5202ed0-202508041029.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-5202ed0-202508041029.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-5202ed0-202508041029.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8da1b2a17f27f74467e9a0c8fe3de0aaa1fc3eaa","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-5202ed0-202508041029.0.tgz","fileCount":432,"integrity":"sha512-BsBu8PxKcV58bp2vV9GjLYYoUodrHZWp5CASYzqE7KU7ifkxAD5glex/BhKSSo5vFxDGUj0ccH/nSkVTHgzLTQ==","signatures":[{"sig":"MEUCIC1OVUWPfHMnGrfL0wes6w2zoQco7HopIdm4cMPGHm2kAiEArp996DRlwQ4WqwtdLRrxvCT5FKQfGWVXIitYCmwOvDM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33850400},"engines":{"node":">=18.x"},"gitHead":"5202ed0ea9c8f32a89a349f991601c38af690553","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-c68b882-202508011331.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-5202ed0-202508041029.0_1754303451403_0.31826907074834665","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-75887e5-202508070739.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-75887e5-202508070739.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-75887e5-202508070739.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b5b561d8859b599653dea0f55d11e09071dc0150","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-75887e5-202508070739.0.tgz","fileCount":432,"integrity":"sha512-C1jPIE31ofmdkDP5x1gw2Qy5lOBQUGMfFfaYOKDVFoJhxfKK56D1sSLutEPaSmdeRQnMwmpRnpWh9G+H7c7yaA==","signatures":[{"sig":"MEUCIQDcltwfMAGlGkWTgVXKUahK/hYykEHQ6wm79wVkw46mUAIgWYxXXXrHtfR8UNts2Uidsftn2RaBUIBWQ3UC3GkbeRg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33854234},"engines":{"node":">=18.x"},"gitHead":"75887e545f5674aed77b174d5fe3a477def37512","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-c68b882-202508070739.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-75887e5-202508070739.0_1754552479833_0.8921901803783507","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-75887e5-202508070753.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-75887e5-202508070753.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-75887e5-202508070753.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"961b14c87b2a419ed1ed2e08415af109d824f55a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-75887e5-202508070753.0.tgz","fileCount":432,"integrity":"sha512-o4CQkTV9AXUQWTPNcqXcusXyAnc3bGl95/4yHEvGOyU7k76aTxZx1RMSjp1gnX7F9Kx89u5KkxCCHhAkER/rNg==","signatures":[{"sig":"MEUCIE7kaK3ICtGIiS69eSZjLB9vcypHTUQ6PdzFrakDiLlqAiEA6ejHuIk1XJGEK6BOJbDpKddjBOVSRAtdHVrQi8zM5DU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33854234},"engines":{"node":">=18.x"},"gitHead":"75887e545f5674aed77b174d5fe3a477def37512","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-c68b882-202508070739.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-75887e5-202508070753.0_1754553318429_0.20113486823285798","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-8099eda-202508081519.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-8099eda-202508081519.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-8099eda-202508081519.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"86eeab6fb7efad5b77f387fa854d05e56dc8526e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-8099eda-202508081519.0.tgz","fileCount":432,"integrity":"sha512-IvbDLJCPleSavQwS7E0CjrqEsyb3LfR2oAsSgiwiRezHDOP4iHmVFdBQppoKXqWyvTPnxBRm9Us3cQ9IvrG8mw==","signatures":[{"sig":"MEUCIQCzBs18/rn2/YbQAw3yCaJ683FRG7GBXrFM2AS0B4v6TAIgdUYN7hoYU3RpT+0T0jGIZNTNA1i6LREfGHFfndFjsG0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33854234},"engines":{"node":">=18.x"},"gitHead":"8099eda9dbdfc964f938a98c43753a2f06f8fb98","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-c68b882-202508070739.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-8099eda-202508081519.0_1754666432724_0.5535548588540005","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-8099eda-202508081534.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-8099eda-202508081534.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-8099eda-202508081534.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"036d880cd1b705c46e584700b5c2063f1b9290b9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-8099eda-202508081534.0.tgz","fileCount":432,"integrity":"sha512-y6B+axqoekQ5eo806x5bDBKPNhr4DO8ePaR+SRJXhrsMrrrwyygtHDozAcYclFZXJM1p4ybUP0FaYLC8K+lX0Q==","signatures":[{"sig":"MEUCIQCNKvOKhXVE17GSaTt/Q7YIuWfoABFQnXtbHoRyADUkYwIgQgRa67/oLoEKYL/K7zb7e3QN7Fb78MRJPmtAZcU4wsw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33854234},"engines":{"node":">=18.x"},"gitHead":"8099eda9dbdfc964f938a98c43753a2f06f8fb98","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-c68b882-202508070739.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-8099eda-202508081534.0_1754667380529_0.09170428539618669","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-7849fb0-202508081605.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-7849fb0-202508081605.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-7849fb0-202508081605.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fed006b9658567358812e96760f18cf5cba3c3f1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-7849fb0-202508081605.0.tgz","fileCount":432,"integrity":"sha512-gqJgQiZPg07xsz5wR3Rc9PibYeQdy645fesk2fEt887NUeco+Poyj3Qd9xYhYrzBigOYeOvp7Fxh5ViGS0v7hg==","signatures":[{"sig":"MEQCICTyP7Np4/2kpkKq+wtegAalDDiiSw6ZhHdNXvnVzqi7AiAm1u2pnC69+bkHqI4fOXKUDUI//W7TraX8bNImlaQrLQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33854160},"engines":{"node":">=18.x"},"gitHead":"7849fb09c5ae23f74a999a314e87ba5e7511917d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-c68b882-202508070739.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-7849fb0-202508081605.0_1754669243998_0.8513038156507979","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-7849fb0-202508111009.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-7849fb0-202508111009.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-7849fb0-202508111009.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2ea228e4c1165043c8b61fea4457f4e5be1256b1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-7849fb0-202508111009.0.tgz","fileCount":432,"integrity":"sha512-8EVg3uGdW18xRvRKPYhGnoApOcvVEUEAEoVXd1chRVZddEDDwtd3HDG5B1z0dGYn+tDSAu/79/HyqmVUbN/4wg==","signatures":[{"sig":"MEYCIQD08O3DybqCZYy+V4qbEtA5Lajtob1YdSaidM3rTGmSkgIhAMaFyWwZF0NfVxsk8W+d7oIdDK+ZUUYey2RiOZ2GRIR7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33854160},"engines":{"node":">=18.x"},"gitHead":"7849fb09c5ae23f74a999a314e87ba5e7511917d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-c68b882-202508111009.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-7849fb0-202508111009.0_1754907080616_0.6971963580750422","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-e4dba78-202508111038.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-e4dba78-202508111038.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-e4dba78-202508111038.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a94971bf6fe86d3abe68f481bab81d2d4ac5d791","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-e4dba78-202508111038.0.tgz","fileCount":432,"integrity":"sha512-hVRit0Um5zmgmHS2FGSw4O3RvbBgoeGkeP2dv5nidOi0YXTBeU8Og0sDmg6/AVh6aIDIS+soZ35bUmurrxFJZg==","signatures":[{"sig":"MEQCIDh9g+MNNWhgem3RMgzdrUc55k4iRsqRbx3L/qtUJECBAiAlRuYPAcMwIz/S5r5cTk4n/WvhslKc4H+FbGnNEqWONw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33855568},"engines":{"node":">=18.x"},"gitHead":"e4dba78ce729bc6213f8f702a318241eecb375ca","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-c68b882-202508111009.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-e4dba78-202508111038.0_1754908779071_0.9127355479627217","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-6eb28c6-202508111707.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-6eb28c6-202508111707.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-6eb28c6-202508111707.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fb38257c4b5689f7c9a66335c8c651ae2c1750e4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-6eb28c6-202508111707.0.tgz","fileCount":432,"integrity":"sha512-sDSvGaFDYpKdXxXYZfzUDo3sK0nJ4IzpEaNsB0k9S8c6w2L4Oz4NoQJG0srRRTq4sXTXSrHBnGOSzmzym/wfBQ==","signatures":[{"sig":"MEUCIA+XFnPq7GqgafYhToHz3SiWhbvvs8/fYB0aSfLvck15AiEA0tygL+NPwBn2iHO/xThIyUXJiUvsBrFbDIn0eEr7UrY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33856227},"engines":{"node":">=18.x"},"gitHead":"6eb28c6eea431ffe142bfb996ea6d716e1e64f57","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-c68b882-202508111009.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-6eb28c6-202508111707.0_1754932144979_0.22688219166596246","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-6eb28c6-202508120831.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-6eb28c6-202508120831.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-6eb28c6-202508120831.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7d6e7986f5620410aef8615c5da8c4c89f8ce154","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-6eb28c6-202508120831.0.tgz","fileCount":432,"integrity":"sha512-mFUu3yN6bVqtAHWQvZsNzIlweJw/NFP518mzW5voFzVnPomeSmha9oL7jYIPJw3j/gEQjqWssdW9TZDe6715bA==","signatures":[{"sig":"MEUCIF3A/XMzd9IrLhprWdRe7vDSAUjnXZZ0u01mWxiKZtEiAiEAgXqFK6Bi5WtAN2cMGcO9foWR+EV9YFRjlhdvqGMmeF4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33856227},"engines":{"node":">=18.x"},"gitHead":"6eb28c6eea431ffe142bfb996ea6d716e1e64f57","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-ba7b33e-202508120830.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-6eb28c6-202508120831.0_1754987552020_0.6070405497152209","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-655f93e-202508120839.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-655f93e-202508120839.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-655f93e-202508120839.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9efa43b20e8719d07d310e02aeb4d641d8e51f12","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-655f93e-202508120839.0.tgz","fileCount":432,"integrity":"sha512-lVQWoxhK9FlGUQwgadOoFxXeyyhf6LdwopXzLJAurT2RtsegpA0J3zMLnT9PHZeTD/eJig32peShpfJpPrpMhg==","signatures":[{"sig":"MEYCIQCCAc45Bs3lqIK1WC33sOgU6cfQ5mxf/mYYJzOjABSxhQIhAP8rEZIKbHrIWPOc+KgBZhsrRM0SqDTpqyejL+q+p77n","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33856227},"engines":{"node":">=18.x"},"gitHead":"655f93e7ed8eddcfb645d4f3353a8132c40ee432","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508120838.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-655f93e-202508120839.0_1754988061179_0.9106560882403252","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-655f93e-202508120845.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-655f93e-202508120845.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-655f93e-202508120845.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b05ce84ce76ebf78352b90488e04440865d13e99","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-655f93e-202508120845.0.tgz","fileCount":432,"integrity":"sha512-JxP+FKIk4/CZ1lDKh4IhcAh2wjaM1MkRxbSxzQRxxAkd/4ox/xmxbjG1jcXU/17WWMg2VH4F9xG5UOP2C0qP4A==","signatures":[{"sig":"MEQCIEJ2LHg8bYscRfrxOWNQgUC/sBWeRJwQ2952/Mgdg7kJAiAEx4F+Dmk9tUbWVijJDsNDCvF2Q6J/96/PrI3rdqTwbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33856227},"engines":{"node":">=18.x"},"gitHead":"655f93e7ed8eddcfb645d4f3353a8132c40ee432","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508120845.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-655f93e-202508120845.0_1754988445509_0.8339414565857248","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-036a461-202508121036.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-036a461-202508121036.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-036a461-202508121036.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b65d9360c6a5a31ef104cb27bef61fb37f34db76","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-036a461-202508121036.0.tgz","fileCount":432,"integrity":"sha512-EQjEila8komMJiSKNHu7Rr6kCHyLAxXeZt3sz1eOcZvifk2seQJyb+Ksthezm/myO+6z5Fr+xEcZ3LnGi2bCPA==","signatures":[{"sig":"MEUCIQChqVcxsPaEnHOZ+1oO940JP4EaDUTYRE1R3HjZwHgeUAIgRZDeb9fv/jJSdAVNz0aj0PA5Cy3PbGyn+0+76COJMEQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33856227},"engines":{"node":">=18.x"},"gitHead":"036a46109b9c508c52d157c6ef4bd24e0e20d0fd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508121035.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-036a461-202508121036.0_1754995073229_0.7932878338196272","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-f0e2f33-202508121103.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-f0e2f33-202508121103.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-f0e2f33-202508121103.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"163a47348d96e70bc777f53ddf5ed14fb19ac7e3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-f0e2f33-202508121103.0.tgz","fileCount":432,"integrity":"sha512-gj+xry2/yANtmWAcvtZK9vJLcLiXtg7k0MtygTiAQaUP0qfaMYrCAOECDdiTGQR3TvRCMWta1gh3pX/t9z01gA==","signatures":[{"sig":"MEUCIBQ8ALlAW6RDmiEeHiG/Hzcb1WAroOcIANPnffvPv9wRAiEAycA8qFdYPpBv9DbhKOgjhnA3HIcuJWYyNijjtGmyXTQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33869381},"engines":{"node":">=18.x"},"gitHead":"f0e2f3316b64c9ef339c95304f94c4ee67aaea5a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508121035.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-f0e2f33-202508121103.0_1754996710732_0.5451572726998979","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-781b512-202508131028.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-781b512-202508131028.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-781b512-202508131028.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cb6ce26ac1c803f6909b40ed0fcdf4af9f2d1a50","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-781b512-202508131028.0.tgz","fileCount":432,"integrity":"sha512-l3hesKOw4IooMVWOtPEgzjo/yh6BB6zcIam3KMg6tG99s9jvrKemJW8TssMhg7zrbQEKIqThLPrlN2uKTRlcVw==","signatures":[{"sig":"MEUCIQCqE6ks0meFjSH3yTYNcDlXPNs5HKS73fA4X3dDmKxF+QIgJdsC7ll+qZsLGSy4mzQHUA5v+x99ufOVqSxA7usrWH0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33869381},"engines":{"node":">=18.x"},"gitHead":"781b512bf1e0a8abc1e605f05a76fabd59249804","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508131027.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-781b512-202508131028.0_1755080994729_0.6579413123840865","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-2448555-202508141311.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-2448555-202508141311.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-2448555-202508141311.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"de410b253fa99a532fd02b17cef3a1fe9569a163","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-2448555-202508141311.0.tgz","fileCount":433,"integrity":"sha512-eFlh/qMeCd3XGsXh+E1jVvioKjKmKkdDscvpwwp3GNPewOdI86IS5B6B4wlVPi0AUha6lNN/2Ry+CNeEihzEwA==","signatures":[{"sig":"MEYCIQCqaUKX361kc43Dz3QkPa3wlVC3/iwKRuUgpNPCsVtToAIhAKK2uMPxErkCz3RvOgWrG+N7BsubTsytl5WWCMhFQZmy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33971957},"engines":{"node":">=18.x"},"gitHead":"24485554cf4019e9f394f53fbd7821c42503c39f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508131027.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-2448555-202508141311.0_1755177198878_0.6555019980313277","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-2448555-202508141327.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-2448555-202508141327.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-2448555-202508141327.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f279033aafb1bb5f4706a261a0340d008756fabc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-2448555-202508141327.0.tgz","fileCount":433,"integrity":"sha512-HNy03J2f5rCB86OglFuzHrwTALMAvg9AFY8vty2Saw9pXoogkJESGztg4o4GKcX3eSKe4zNkzDPv7WWDSpNQIw==","signatures":[{"sig":"MEUCIEiXUs12XyvLrrmyLRe9OvjUTkd4jxlQZf9P7lkj2VMHAiEAt8o5h28HrLAjacaUaVramyW/yszT5sbwion7iNObzpo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33971957},"engines":{"node":">=18.x"},"gitHead":"24485554cf4019e9f394f53fbd7821c42503c39f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508131027.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-2448555-202508141327.0_1755178152996_0.9494712170522897","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-dcaa76b-202508151240.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-dcaa76b-202508151240.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-dcaa76b-202508151240.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6697c91bf0288bec363530898042d0b0100fb956","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-dcaa76b-202508151240.0.tgz","fileCount":433,"integrity":"sha512-K4YV0luFOHwaUYtZmfO40g+ELBTlLBFzmOjqqAjcQjWm8xi+YX35ySsLwv5o54GOMgN64i+m6j71GO8s+mxbCA==","signatures":[{"sig":"MEYCIQCt3xAbs3JPVNhCv2qGueLToumgrouWfGWNtzWNirOYDgIhAMrtM/xa59aR6OC8tq0HQb6LxOUwI9aMz7fZRFoPadXx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33972314},"engines":{"node":">=18.x"},"gitHead":"dcaa76bb882f40b96b129c1fb941e1be5a6f2069","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508131027.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-dcaa76b-202508151240.0_1755261744042_0.5508780942206655","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-cf47841-202508151701.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-cf47841-202508151701.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-cf47841-202508151701.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"14bdc7bd1e86e671b48f3e9adc41c9c715a459de","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-cf47841-202508151701.0.tgz","fileCount":433,"integrity":"sha512-CYQ54UzYyxvZ/OBG2Zjl3Rn07vfgr0NdSPSim+tgoLG7wy4kcXjisB/e6XowqK4m5nUZD+8eUnWg/WNaie/9mQ==","signatures":[{"sig":"MEUCIEDyABmv05QJ/5XO5z1zqdDh984kJThcXPc+hSt2KIu7AiEAsKIuEZ6gspdJnp45DJ0EAAIeShWjAlDMwzXe52J3at4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33980671},"engines":{"node":">=18.x"},"gitHead":"cf47841b6734df0c1141a8c0b22e8d5f338ef161","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508131027.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-cf47841-202508151701.0_1755277406906_0.13647329056781765","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-cf47841-202508180854.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-cf47841-202508180854.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-cf47841-202508180854.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5b0f4ff0a77931bdae8ee9f54ecf9d4a12d39cf8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-cf47841-202508180854.0.tgz","fileCount":433,"integrity":"sha512-1WXrEUyr+QkIoFrh8Nw8vtH3eVRi3l0xZaKUV38EkkdjVoxLHB7kEoLWvnsSYCSxmCRYBv7kuv1znpN5fZ7UIA==","signatures":[{"sig":"MEYCIQD9aVgk1i9M/h1Fylwie72s+Rni0LB2zWUcLQwEYUZBmgIhAI9PIA5IMDlf+/vOQ2IpJNdeYuaLQW7X3IMpC9VFUobR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33980671},"engines":{"node":">=18.x"},"gitHead":"cf47841b6734df0c1141a8c0b22e8d5f338ef161","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508180854.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-cf47841-202508180854.0_1755507394050_0.3890375995609745","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-7b9e3fd-202508180935.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-7b9e3fd-202508180935.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-7b9e3fd-202508180935.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5dd4ae6ddc94924844844ec0305552076516d322","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-7b9e3fd-202508180935.0.tgz","fileCount":434,"integrity":"sha512-/nRS/7fZcNpY5h5NhIYNnTb3Ny7xVm86Jz9VqPr/REtgsZpE+kNYf3sk6JUKuUrfliwnjQOF0mKQ0Cx0UEShTg==","signatures":[{"sig":"MEUCIGHfckUaWgTWeQy3dzEIWWR0hSUcjAVnX0MxaiEZaC6oAiEA9A0PDWOYIIfv6J4tlSrycscrE94sL4t5YDWawIFmbz0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34019909},"engines":{"node":">=18.x"},"gitHead":"7b9e3fde0f9e2e1ed937838d2d4580464855f307","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508180934.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-7b9e3fd-202508180935.0_1755509806798_0.5427552969744527","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-7b9e3fd-202508180950.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-7b9e3fd-202508180950.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-7b9e3fd-202508180950.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ab74bb5740cf1addfe906b002dacd5b5dfbd96bf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-7b9e3fd-202508180950.0.tgz","fileCount":434,"integrity":"sha512-pHAfwxyNh6R/Mdk2jUa51BGiRepWq74GoIR+fUdwnrwUE3BSOpOL+Z8uqpetFyvRhIsIqW5Zr+1JtyL6Hfq9Qg==","signatures":[{"sig":"MEUCIQCqDKLtwdaOCy3jR73vi9DZXPVUivt7x1mQoMtczGzhzgIgOKoN+6dF8wLW3oPIqgZ9wCBIfofWEQrR+2J3JHJsyU4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34019909},"engines":{"node":">=18.x"},"gitHead":"7b9e3fde0f9e2e1ed937838d2d4580464855f307","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508180949.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-7b9e3fd-202508180950.0_1755510697854_0.28619934115832146","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-cc936e6-202508181030.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-cc936e6-202508181030.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-cc936e6-202508181030.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ec00570e3b43fd4df2fa73bab9786767e70a3ea8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-cc936e6-202508181030.0.tgz","fileCount":434,"integrity":"sha512-YoxLstD32gTqNxvO/UR3TcW/t1xXvz00MN6SR0xUcw2+D0hfutRs7Ru+os8i9ML+yj0yJZMIBATICRufR/skXw==","signatures":[{"sig":"MEYCIQCKWuaVJXeZ9jHGg/Mt+jrYhdtTiUTqVIYwfOZUUnhFLwIhAPLaJwWkIOhGqbqmR3b4I+ozehcFuy1L5h+tfiKf+1LC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34064716},"engines":{"node":">=18.x"},"gitHead":"cc936e628cdfd25d0dea1155653d29ffd1d2f077","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508180949.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-cc936e6-202508181030.0_1755513108546_0.11995702593355939","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-cc936e6-202508190631.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-cc936e6-202508190631.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-cc936e6-202508190631.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1986c6508e9d21bbd44772cad32ff15296776eff","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-cc936e6-202508190631.0.tgz","fileCount":434,"integrity":"sha512-ISPBarRQyyLz16C9gjh7nxE9N3G3oOjkE5dUlqpcvTcwmKINhfrPjlbSKXlJEWFSVd4m0mWwvcxziQxYIehDdg==","signatures":[{"sig":"MEUCIQCebEi2v0GQtYteaYo5t6nfPGC2gg+cz3ZYPEFAKeGIQgIgf0hX+PMYdGB2jMBHjymm+SOpALvegM5UM5XimHlvcTI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34064716},"engines":{"node":">=18.x"},"gitHead":"cc936e628cdfd25d0dea1155653d29ffd1d2f077","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508190631.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-cc936e6-202508190631.0_1755585207489_0.38824724082010054","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-0f7b91c-202508190932.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-0f7b91c-202508190932.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-0f7b91c-202508190932.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d5d032490c8705a87b7d4a2511328bf85d69b756","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-0f7b91c-202508190932.0.tgz","fileCount":434,"integrity":"sha512-9E1aVRupEkOlsw8tkCtykBVutw4SnW3wQB63y83iwHGcLGqxwdRQqpAdOgDdIjOEtZ2yJT9NQu+rxg28mv8epg==","signatures":[{"sig":"MEUCIQDxG9ZfjjJODzshKSdACKpfZ+VZ2DkqlrCAOrHE9Y+0nQIgf0JgqZgmEEnUdwZCV+APHF2FP09FSMM89HefAjDGvoY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34103119},"engines":{"node":">=18.x"},"gitHead":"0f7b91c6145b10b2e8f5a71f40c8a0065e0a6bb5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508190631.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-0f7b91c-202508190932.0_1755596071323_0.2132645628820704","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-2b294a0-202508191006.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-2b294a0-202508191006.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-2b294a0-202508191006.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5d1866a7d5daae0059fc206cee7c83486e1feb8e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-2b294a0-202508191006.0.tgz","fileCount":435,"integrity":"sha512-Yq1BwpINRG2P5w8/QPjKNKYArG2BVqDba7qQUcIy9EB4OMEpflk9KEg4Zb5qRlht0aQ+TndUmgyWB1nuyUYuJA==","signatures":[{"sig":"MEYCIQCvXMHagqiYcciWe+tEfDPKUe23+0EiuqTF/+y85Lx4FwIhAL9a/LO6IbZlDctZ9cuHInVtbuDnvlUmHMare4nw5nQZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34146489},"engines":{"node":">=18.x"},"gitHead":"2b294a0eb333e9c31ab5d4888ee5e1c589173f9b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508190631.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-2b294a0-202508191006.0_1755598070044_0.5351803131381705","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-06c5245-202508191045.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-06c5245-202508191045.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-06c5245-202508191045.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1848ee850709c3a06c8672d571afeb0305234f36","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-06c5245-202508191045.0.tgz","fileCount":435,"integrity":"sha512-fz29B8h33Rb6hof5keOIc1K64M32CWPBVIuLu+WNT7yqfVSWiCQk7mdNXVV7GlhXaYdpeq5rHJF672LD5t5B0A==","signatures":[{"sig":"MEUCIHsmGSqut/ozLL3WGQ/30nMTMS7qo66xG2ZHIfsvZs48AiEAmt3nM7pDYxzpyo+sVVaQMV7XXvm2qUi3YF9MO6dL5+M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34146489},"engines":{"node":">=18.x"},"gitHead":"06c524507693cbd9a01a48b2567211487f314c1d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508190631.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-06c5245-202508191045.0_1755600406496_0.7939513476193785","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-ce50c29-202508192000.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-ce50c29-202508192000.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-ce50c29-202508192000.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5aaffb1a7c7f322b31bf29f59d0164f363364e8a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-ce50c29-202508192000.0.tgz","fileCount":435,"integrity":"sha512-Ooq6T5Ur7xvfkFeo8AGITRdP0ogO48EVopU9ijoAv5i9DoBV8U3nScTWyKqdT0+z8QKY0iHoAqzPgwxVEyWT+Q==","signatures":[{"sig":"MEUCIQDlJTxnrK/b4gCEeUvzsxMPHD2zM7e0tRaAFlettsxexwIgTEmmnvlOwW3A0JNtP9i94V/yXk7mApBpMsO4iTo+fT0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34146783},"engines":{"node":">=18.x"},"gitHead":"ce50c298aafb6de43c1514de9e87449802a723c4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508190631.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-ce50c29-202508192000.0_1755633757246_0.6375258011308802","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-0b2024a-202508211607.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-0b2024a-202508211607.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-0b2024a-202508211607.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9269dffd5a430bb3b729188dc9b1dd08676e247c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-0b2024a-202508211607.0.tgz","fileCount":435,"integrity":"sha512-XeUx7c470r4ynsJ5aJ2Vvbhpn4q656QPNsacP8xT1u3w9+6NLKkeXZy3EAUZTVmXYyXj3PWGTJVe5T6ytHjmlA==","signatures":[{"sig":"MEQCIGRMPskDzg88K/mNz8JIA4bNIe2lRM3E++htnL4SUMkuAiBIuyjn9rrJtezfj4gRwfnegHuBOVLcU1BHJ1PJE4VOJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34146767},"engines":{"node":">=18.x"},"gitHead":"0b2024ad38cd0282a81052907dbbe252fb91aee7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508190631.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-0b2024a-202508211607.0_1755792550596_0.1844955176930294","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-dbe6360-202508221526.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-dbe6360-202508221526.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-dbe6360-202508221526.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dd41c2d397db6ded7c335d02bd9fa7e0a2f8b632","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-dbe6360-202508221526.0.tgz","fileCount":435,"integrity":"sha512-vAsiVm/iw11vfsK89+kYjm6zS4R7fYfSmNjEsVJK59Y4oLBN5jRpMMSyLCZJBwD0UBnFb8R391mlz7uaC5XEyQ==","signatures":[{"sig":"MEYCIQDyPXF/dkdAXb2gY59OTeDaaSP0kBte64H/kQ1w61Ji9QIhAMYT4ePCHrJHzSYufrrSQNuqvoTn9EUmZfbirItF16+u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34153209},"engines":{"node":">=18.x"},"gitHead":"dbe63604422ce283544421c41b30580e2cdb86b5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508190631.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-dbe6360-202508221526.0_1755876468292_0.83283624548667","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-5bdfff8-202508260938.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-5bdfff8-202508260938.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-5bdfff8-202508260938.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4b0a29dbe4df554eeea27a7bda570e0b229abf2c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-5bdfff8-202508260938.0.tgz","fileCount":435,"integrity":"sha512-NyXxB0NWga0UcIsheL0VdHGByYyXM27KNShCYWRc6BRAMRUP3EMNDpYX3Yb9oTvLUjYnG+NpA+AGAd6Xgm2y9Q==","signatures":[{"sig":"MEUCIQCClEeNU9sol3ylkXeBfOIjhg3Oo0U01X81dw9Jntd8dAIgSzgqGHiz9FsftqgsKu374OX8S1U5YDdDyBtvdjd8wFY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34161692},"engines":{"node":">=18.x"},"gitHead":"5bdfff83cd9a6733bbd62773274015f7cef39e6c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508190631.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-5bdfff8-202508260938.0_1756201199991_0.7059669540075728","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-3b616b1-202508261021.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-3b616b1-202508261021.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-3b616b1-202508261021.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1555cf1ba41fcec657fe3125638c9b61521df824","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-3b616b1-202508261021.0.tgz","fileCount":436,"integrity":"sha512-vyHvCdgSCCsrlglanxCezSkd50uW6723eBdp0neGAcx1KWLOnF93Sn7ZWvF2deA46hr+XLcHFyjpExJcggCMDA==","signatures":[{"sig":"MEYCIQCZCDcI8eWnG8BxS3axIglEHpjuuCvUvb91r/Yx6pUEeAIhAKDXeuoU9zH3iGawXfFnJfRPGNKM2/aygPlRiGcBuhV0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34179531},"engines":{"node":">=18.x"},"gitHead":"3b616b18fe013f523b08abb734bdafc5fdba8005","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508190631.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-3b616b1-202508261021.0_1756203786627_0.007312300611922451","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-3b616b1-202508261035.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-3b616b1-202508261035.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-3b616b1-202508261035.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9db16aa6b1965b28385d860348f78e3abd8a43ef","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-3b616b1-202508261035.0.tgz","fileCount":436,"integrity":"sha512-CzalcL+WFrBhybEDyBxKqFWGKXiGP5yVL5mRIJQlvECIqcD/+G/zpP03Zz75jEzShN63RKqiG5i+0UYbsvrZhQ==","signatures":[{"sig":"MEQCIDqPVGBifxoUn3rUbd//W5+F+mMMekS1yzY86J5uWUO0AiBvqKqeRo50FOPSs+Oy0qM3UV5gX62ZO0WqdOQ7OY4Y2Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34179531},"engines":{"node":">=18.x"},"gitHead":"3b616b18fe013f523b08abb734bdafc5fdba8005","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508190631.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-3b616b1-202508261035.0_1756204607503_0.1348893496946888","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-85614fe-202508261423.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-85614fe-202508261423.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-85614fe-202508261423.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c04a9a843c9a06ddd9aa8ff274dd8b59598f80d7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-85614fe-202508261423.0.tgz","fileCount":437,"integrity":"sha512-JXaU00GCJuZlDOtxfwNfPS9LYuWsQ9Q6fVEk+PJXHMr8TqSgVj8nUubjLktTLOyTvLsp/LkrMK/beZd445/XFA==","signatures":[{"sig":"MEUCIFr8GkQGX3cCjzMG7sLtgGjxlfq1pBvZTQz046swjDVTAiEAsB51xrlPwIm7EjLbj1aLs7Jq8r//p9A1u47MtzaoS68=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34186085},"engines":{"node":">=18.x"},"gitHead":"85614fe778b0dbc4ba2ec86ba7271595f91053ce","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508190631.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-85614fe-202508261423.0_1756218334942_0.7570654619766373","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-85614fe-202508270930.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-85614fe-202508270930.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-85614fe-202508270930.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"667ab3ec93be32b1aa9df183fcef5b400fd57a9a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-85614fe-202508270930.0.tgz","fileCount":437,"integrity":"sha512-GQfwGoPvkUhWfQSrq5XbpnV04aQ6jl6QocUJ39FIGxtnx0L6+7DmXmEe4Wc6gaTNXXj+2FmlcxTIOPiPkqmo3Q==","signatures":[{"sig":"MEUCIHeWoqvxNrgsy71zox6RKjuB7ibH1znPaHGrUHkok9TtAiEAh4GEatq4OVx52xEDay7B0eNYNiUGIC3BSsHDl59DcDg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34186085},"engines":{"node":">=18.x"},"gitHead":"85614fe778b0dbc4ba2ec86ba7271595f91053ce","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508270929.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-85614fe-202508270930.0_1756287116022_0.7234150155689725","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-222a7d0-202508271306.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-222a7d0-202508271306.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-222a7d0-202508271306.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b83cc35f124faeed2b2fe8cddcd3d178702d760b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-222a7d0-202508271306.0.tgz","fileCount":437,"integrity":"sha512-Df2k47h4TL3ETgEs6bzYEIAdAt48J1QTFVED49fB8Pc2/o+ZiKkFdE7PXzHVp61hVIlw//5zxMVvNOPyMSB0Ig==","signatures":[{"sig":"MEUCIQCqaujP0/YLsrIHWR6f18DWKV/l58tHeQcAmJe7g9ScwgIgXZBUz33c9ebajaWKcfjF3LU84HtxP/QfTaTJAEP9jWk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34185675},"engines":{"node":">=18.x"},"gitHead":"222a7d0a2aaca16918fc0a871c0082efed20a474","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508270929.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-222a7d0-202508271306.0_1756300094054_0.422955683978014","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-222a7d0-202508271322.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-222a7d0-202508271322.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-222a7d0-202508271322.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d64e645fe754922ac1e3fd9ae37a3e6403f8bf82","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-222a7d0-202508271322.0.tgz","fileCount":437,"integrity":"sha512-QbDzkAWMFnKWeSQ7f4Lp96RcnJcER8xRxdEnPwhQyOCr3e2dK9ZoKLm7kq6WIQlF/JsQRzr5x1A2FfMpWdzxgw==","signatures":[{"sig":"MEUCIQCgZ2eSRKHlj53BfpbZIEBw1Winj8vV3UVG28QRUYkw4AIgeb4li+s5dHZl4sy7ayUlP9oFvOa19b01X3naRQ9Srio=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34185675},"engines":{"node":">=18.x"},"gitHead":"222a7d0a2aaca16918fc0a871c0082efed20a474","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508270929.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-222a7d0-202508271322.0_1756301052106_0.7307845074264594","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-0a50a04-202508271642.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-0a50a04-202508271642.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-0a50a04-202508271642.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"42e8c3275318cefc8eec6196e2e6222bb3958618","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-0a50a04-202508271642.0.tgz","fileCount":439,"integrity":"sha512-6hKf6khiqOL1XKD2RkoaMZVIqPjTayFG2zRx2EL8r5pKkm45RqqpcRZI3DfRBaw9OQb7BGWONFHbafiQSpUBwA==","signatures":[{"sig":"MEUCIQCiDgRlDAe/nsifsx18dabMV4FwNaWuE+IwmLs+TXGcFAIgO0373PnQNXlTI0NcGKZXTFyeOtUffwR+asLjvT2dJ5A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34200351},"engines":{"node":">=18.x"},"gitHead":"0a50a04d92719a75d2a9354eacb64943e4375faf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508270929.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-0a50a04-202508271642.0_1756313061138_0.7770648567313552","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-1b95a8d-202508280832.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-1b95a8d-202508280832.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-1b95a8d-202508280832.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f76a0e42bd076b32739f642823934a73d1103c53","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-1b95a8d-202508280832.0.tgz","fileCount":439,"integrity":"sha512-MPPY08N4v+mhuinyhMNs1HEe9GCktWDzKSYURkl2p3fpoZgaEtzB+9PkApFjQnbzS0lHrGu5F0g2+HNpKFurVQ==","signatures":[{"sig":"MEYCIQDfPxNqIFxsuWI9eSCDXfFj1r3TZYNDCbOZtlCXI7l5sQIhAOgRHWgCWFAUWvV87hejrX6+jB1BPhM0mOpfry1Yalc5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34213894},"engines":{"node":">=18.x"},"gitHead":"1b95a8d1eea3b689cd1a61029a24a484ce9941df","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508270929.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-1b95a8d-202508280832.0_1756370054444_0.28176679281359895","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-1b95a8d-202508280851.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-1b95a8d-202508280851.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-1b95a8d-202508280851.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"83436b8679c250cd045b5157e7255d0cc3f9b460","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-1b95a8d-202508280851.0.tgz","fileCount":439,"integrity":"sha512-9ZHRVdmvmMvGSAqOnqlES2IrONCbPbDD9iTb+mxDiqO2XvTA6b3tEOdUzJp7Q+Yfkg0gmpw9FmjBLwN0A8UsXQ==","signatures":[{"sig":"MEQCIA+PKIJpnz6F3UANcF6Bk7U1yZZc4VMi2kDKHOq2hFNZAiAi6Y2yO60VQrXRBMnT3KCughfpF//wUCMuUqLnN1C1ng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34213894},"engines":{"node":">=18.x"},"gitHead":"1b95a8d1eea3b689cd1a61029a24a484ce9941df","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508280850.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-1b95a8d-202508280851.0_1756371160606_0.17103359527051465","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-1b95a8d-202508280915.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-1b95a8d-202508280915.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-1b95a8d-202508280915.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9ef4d939bc6f74616128b1183d2d0720082f7652","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-1b95a8d-202508280915.0.tgz","fileCount":439,"integrity":"sha512-nDiQrawo3OYkDSyvmdyExdSMQhC/Nh9/iWyk7qJbwaz2iXL1ctqLv3xqZpJ4l+CIU7ngK8GKlOY5eG67Mqx8oQ==","signatures":[{"sig":"MEYCIQDg/oHt0SVyg566ZHdizPY8UqlyqxCi1ikVGawGJ+Ht7AIhAJnYj1NAsF2x/Plvn0c/NgsEd38wNl2s3eltb+x6nH4C","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34213894},"engines":{"node":">=18.x"},"gitHead":"1b95a8d1eea3b689cd1a61029a24a484ce9941df","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508280915.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-1b95a8d-202508280915.0_1756372644357_0.16497138876435113","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-1b95a8d-202508280928.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-1b95a8d-202508280928.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-1b95a8d-202508280928.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"548653a16c12451f485d719c45326617bb4c9cd8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-1b95a8d-202508280928.0.tgz","fileCount":439,"integrity":"sha512-2K/fQRNN3/HjqXWyez1AUmuTJ0llgGcnJU7lieO78tcCEzaj+18+juuVaTqOqgAgHIYjVNcYcy/VVckOZOwg6w==","signatures":[{"sig":"MEQCIDKE/lSjD12quUW7WcQA86m0Nj1ltNbnGO3HxeUVSDmxAiAeSYOVkYVmOE0ZkIJoBe+34cvqjrdHJzltShdDytX7Qg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34213894},"engines":{"node":">=18.x"},"gitHead":"1b95a8d1eea3b689cd1a61029a24a484ce9941df","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.20.1-06e2084-202508280928.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-1b95a8d-202508280928.0_1756373437621_0.9663103559508053","host":"s3://npm-registry-packages-npm-production"}},"2.20.1-1b95a8d-202508280933.0":{"name":"@flowfuse/flowfuse","version":"2.20.1-1b95a8d-202508280933.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.20.1-1b95a8d-202508280933.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2d6437d1a651c95dc665b4195aa50a37d0fa3e1b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.20.1-1b95a8d-202508280933.0.tgz","fileCount":439,"integrity":"sha512-hNOR5gSQUd6gqL32WBf/iqUq7FefkZRvfTQxkgd/mDZxR4UEtOKXpuSW7y6nakc5S8kXzz/AJKKGdWbewupR+Q==","signatures":[{"sig":"MEQCIAhNNimtmyTgH98X+L7SPStzNLD7vcSjosAvFaHEfQdSAiA91vYLINrGTdzhx84dqNCoVePPkK+BUXtA0/lh+fljZw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34213894},"engines":{"node":">=18.x"},"gitHead":"1b95a8d1eea3b689cd1a61029a24a484ce9941df","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.1-1e5f143-202508280932.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.20.1-1b95a8d-202508280933.0_1756373693037_0.38479904864914616","host":"s3://npm-registry-packages-npm-production"}},"2.21.1-74995fc-202508280946.0":{"name":"@flowfuse/flowfuse","version":"2.21.1-74995fc-202508280946.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.1-74995fc-202508280946.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bb6afb3bcebbca9534200f647e33cb23c21373fc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.1-74995fc-202508280946.0.tgz","fileCount":439,"integrity":"sha512-qlZaYoPhBrhfhx8ptIJATaI8sMBhapnytSOeISWDBIWkxYfsTbQyOms3hQeR76TK1Y5x3t+sRylNT73LYyDAyA==","signatures":[{"sig":"MEUCIQCKHDTFZit6CXGMhTXGlKs6EEiuJ9D+zqx4EXT3iHmrpwIgc+LkHK5xW4Uii5pTFG/DB7C9yrSGXy2mIYk4mzRiX2k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34278791},"engines":{"node":">=18.x"},"gitHead":"74995fc646fc4288c5fc89e900498c24164a1cd0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.1-1e5f143-202508280932.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.1-74995fc-202508280946.0_1756374474293_0.9839982791392847","host":"s3://npm-registry-packages-npm-production"}},"2.21.0":{"name":"@flowfuse/flowfuse","version":"2.21.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"89e7258ffd9eb66a4caef9d6934b23cd85fd8d90","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.0.tgz","fileCount":439,"integrity":"sha512-XcY52w5PJcwDYQVesobLQwZogEZgoOfaPbG7uuOfl24TeEvoq31G8Ho4UD5AUHDGl4qjHGNaI++TuaCGcpdRmQ==","signatures":[{"sig":"MEUCIQCwnSSDAjoWz2gSAty9kLSEZkEzW1EG4dltovhurPYMHwIge9xTFb6N6GTP/9njpoNEddgVLahsdC0uaRxfR40J68A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34275610},"engines":{"node":">=18.x"},"gitHead":"74995fc646fc4288c5fc89e900498c24164a1cd0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.21.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.0_1756374489569_0.8827792070645424","host":"s3://npm-registry-packages-npm-production"}},"2.21.1-74995fc-202508281002.0":{"name":"@flowfuse/flowfuse","version":"2.21.1-74995fc-202508281002.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.1-74995fc-202508281002.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cc5c8770e762fdcb0bb6328dfd17d94b67f3d1d5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.1-74995fc-202508281002.0.tgz","fileCount":439,"integrity":"sha512-Wua8XKOgyZz6Om6fE/Xf00LLegojVc/Dx9dA7GPOD0prEB2EfhyTgo58pLMTVWhMLwFPW0XOwNMlQ7/Y/g/jUw==","signatures":[{"sig":"MEYCIQDTc7lLfKBPUCU8v8Sr8PHwDduESsNkqDz5xTjjhuTJjQIhALOGLYkKOPV+8jyQiGyYkTCi2R1FEVvnkl55gWKwarCb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34278791},"engines":{"node":">=18.x"},"gitHead":"74995fc646fc4288c5fc89e900498c24164a1cd0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.1-1e5f143-202508280932.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.1-74995fc-202508281002.0_1756375436196_0.9619052113418296","host":"s3://npm-registry-packages-npm-production"}},"2.21.1-74995fc-202508281121.0":{"name":"@flowfuse/flowfuse","version":"2.21.1-74995fc-202508281121.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.1-74995fc-202508281121.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3071cad384ab24595b0266cf1334a24d0b0206b8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.1-74995fc-202508281121.0.tgz","fileCount":439,"integrity":"sha512-sUL/6q97pmWBjO+HHUYkrv6pxIeOrqHXTndWosDVBT7HN4ShMmCWvBBloPwKvXD+1yP6zQykwFXscvJZFQUSxA==","signatures":[{"sig":"MEUCIQDQP89UB6GxBBit700i4U0D7HJlBBesjGxhOKb9avwAZQIgXKvoBdFKGOZn4nulpSgCSS6sLXjtyrn0/PilGCo5xR8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34278791},"engines":{"node":">=18.x"},"gitHead":"74995fc646fc4288c5fc89e900498c24164a1cd0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.1-1e5f143-202508281121.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.1-74995fc-202508281121.0_1756380201010_0.8007740875757368","host":"s3://npm-registry-packages-npm-production"}},"2.21.1-74995fc-202508281145.0":{"name":"@flowfuse/flowfuse","version":"2.21.1-74995fc-202508281145.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.1-74995fc-202508281145.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9f8d55dbd3b6d9d9370d9fd138a8205f711a2cfb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.1-74995fc-202508281145.0.tgz","fileCount":439,"integrity":"sha512-X23CPDSmjG6Llrk8BLPjxoT8FoYmmNj4Et59ZIET0WkbMH7cSzll25TMXeWYZeHFZJ/nLWAnymaTomu7qSf5MA==","signatures":[{"sig":"MEYCIQCPPa0qK2qjfutoYeKgjy5xENlruqnvHTFjHAladec5TwIhAJbsaVT0evnT0Gu2lL83nOc+iATKT0HwN5uqTamMmbUC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34278791},"engines":{"node":">=18.x"},"gitHead":"74995fc646fc4288c5fc89e900498c24164a1cd0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.1-1e5f143-202508281144.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.1-74995fc-202508281145.0_1756381616188_0.8638125139282702","host":"s3://npm-registry-packages-npm-production"}},"2.21.1-74995fc-202508281157.0":{"name":"@flowfuse/flowfuse","version":"2.21.1-74995fc-202508281157.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.1-74995fc-202508281157.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"71ad270fcbf09d6c49c6dbb6f2f80c0f44064d9b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.1-74995fc-202508281157.0.tgz","fileCount":439,"integrity":"sha512-iyVVTTH272kjC8ylaItWPQ00RHXzWeZ5y28TAkpbBCI2/KCui23780XosUJS5KAU06DzH1j1y2UUvFavCyIhTA==","signatures":[{"sig":"MEYCIQCuPdr+4PpIHaKzO9jrCLXTxmRvIaxhTDFZ8xoQNmQP9AIhANjBVolP+3l/DAjFetbjs6oXXpiIl931Z5VJcfQMCLgX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34278791},"engines":{"node":">=18.x"},"gitHead":"74995fc646fc4288c5fc89e900498c24164a1cd0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.1-1e5f143-202508281156.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.1-74995fc-202508281157.0_1756382319884_0.3785909330824113","host":"s3://npm-registry-packages-npm-production"}},"2.21.1-74995fc-202508281158.0":{"name":"@flowfuse/flowfuse","version":"2.21.1-74995fc-202508281158.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.1-74995fc-202508281158.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7d56eba19e20195b6d9e4d6c5ffc4d1c3da10540","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.1-74995fc-202508281158.0.tgz","fileCount":439,"integrity":"sha512-53s2ZJysd2bOkYJcKYpoMmiCy3n+l02re/uT0CtrS5EtSXNu4X6FNoipni8/BxhsJNoZtbUZ52qZFosKyVOasA==","signatures":[{"sig":"MEUCIQDJKnASZ+vJX8HGxqdsBWyq/7Yi9XJJkll6fRdGyONaaAIgcBJcrygNn56/kuzLkc/qc71ECVJ1xsMxh94Yx1FCczs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34278791},"engines":{"node":">=18.x"},"gitHead":"74995fc646fc4288c5fc89e900498c24164a1cd0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.2-ffd4ae6-202508281158.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.1-74995fc-202508281158.0_1756382431368_0.030015202898761917","host":"s3://npm-registry-packages-npm-production"}},"2.21.1":{"name":"@flowfuse/flowfuse","version":"2.21.1","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.1","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cf74e84fcd422ef1c5524b0374ab8b38a2eded7b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.1.tgz","fileCount":439,"integrity":"sha512-GEf5P9MOSpbDTVCON9dITZudwtQkRNSJ1Qm5hNasPuOlibSYQWinCp4oMkQ2oZ11jz/POj/hyanKT26r/ebhww==","signatures":[{"sig":"MEYCIQCL0Xsp5amX53/F3Qx17FN7R+YB6oYB093m86/V9mETqwIhAK2azVVqDMoV64pePrOVknA6e3bAgHuTV+/qA40Ey+A/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34275633},"engines":{"node":">=18.x"},"gitHead":"1c2137a949c8a5650e7fcb64ca8a42dfb73d8120","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.21.1","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.1_1756382849243_0.8731599143993727","host":"s3://npm-registry-packages-npm-production"}},"2.21.2-1c2137a-202508281221.0":{"name":"@flowfuse/flowfuse","version":"2.21.2-1c2137a-202508281221.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.2-1c2137a-202508281221.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"08a1e8ecae0af007134a73cefdb8c592a93682cb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.2-1c2137a-202508281221.0.tgz","fileCount":439,"integrity":"sha512-5N6+ofdm49DLB5zv41agd8426BiUvVnYEPD7UzxdjCm+M9p5cdWmvVEI1jOUmVDT1nUvgXzBnR7Tdf3y0Tnl7Q==","signatures":[{"sig":"MEUCIQDDBKotVby503q1ijOwkZjqz6h82b8QBSKycWThYJ3TqgIgHFv9dldEnme/nKRqdVLCOtRGs5m/9Anqw+3/A1CT/XE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34278814},"engines":{"node":">=18.x"},"gitHead":"1c2137a949c8a5650e7fcb64ca8a42dfb73d8120","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.2-ffd4ae6-202508281158.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.2-1c2137a-202508281221.0_1756383803562_0.2447462933124922","host":"s3://npm-registry-packages-npm-production"}},"2.21.2-318892b-202508291018.0":{"name":"@flowfuse/flowfuse","version":"2.21.2-318892b-202508291018.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.2-318892b-202508291018.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e4041c813af46e0d9a9a2c821cf21a1adfbfc226","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.2-318892b-202508291018.0.tgz","fileCount":439,"integrity":"sha512-vJ3vZeauJ0Fy3oTBpkU0q/H4BNO6DeCKas2R92ZZqLO1D7KS4ZC+Vzyx01nSN6a24iE6KjUH6WizdBaT3jZn/Q==","signatures":[{"sig":"MEUCIQDlpQ1SFiLLcEJaxQfK5341jSD/ET+ti+2zcAsiO4oPlgIgQGAFQxFkL3q80vSKyGtT/95fDiKRvPoUcfG5QJYQJw0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34278467},"engines":{"node":">=18.x"},"gitHead":"318892b6875c8108ebc55fcbfb01988cc4d880c1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.2-ffd4ae6-202508281158.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.2-318892b-202508291018.0_1756462826370_0.7039161376565652","host":"s3://npm-registry-packages-npm-production"}},"2.21.2-6fe4d6d-202508291507.0":{"name":"@flowfuse/flowfuse","version":"2.21.2-6fe4d6d-202508291507.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.2-6fe4d6d-202508291507.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b83ba569dbb0d6655fb0fd068ea662874dc4cec5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.2-6fe4d6d-202508291507.0.tgz","fileCount":439,"integrity":"sha512-yE/n5/eKS/8bvfreQ5enXUtFWXYKa9ZLCY671WoLtsbTgwbyCqhm8+/kp1SA4hsybNqDMfIonGdXR5xlSbhTBw==","signatures":[{"sig":"MEUCIQDLEW2DAMpgWMUF7tX6qouvSEWkMJdaGkZftIWt/7WY9gIgDEbVAmIUEZA852EGLGKUWBSgUBWi3hIvMigTbKOnEFE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34278912},"engines":{"node":">=18.x"},"gitHead":"6fe4d6dceb37789434d4bf2b841c853821375701","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.2-ffd4ae6-202508281158.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.2-6fe4d6d-202508291507.0_1756480192472_0.2625182499356815","host":"s3://npm-registry-packages-npm-production"}},"2.21.2-6fe4d6d-202509010918.0":{"name":"@flowfuse/flowfuse","version":"2.21.2-6fe4d6d-202509010918.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.2-6fe4d6d-202509010918.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"062cd1358206dd1790ae7d20760e0177116bb064","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.2-6fe4d6d-202509010918.0.tgz","fileCount":439,"integrity":"sha512-SZGj2ypgNRl8MXS+IKisF1Ruqn3BDHwFAUNA3Kv2NvQwMkALAlsOFAT4VA7LNMva4l7+cUf9oTsqH8IeFpyCRg==","signatures":[{"sig":"MEQCIBO3dtz3NgwPw8ihHEqFxhiS8MmYt71FyLHr25mMdJmOAiBKXmGvTMQyQZ/qiSnpWkRWfL9ryUisf0Q9jL8p/ybeIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34278912},"engines":{"node":">=18.x"},"gitHead":"6fe4d6dceb37789434d4bf2b841c853821375701","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.2-ffd4ae6-202509010917.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.2-6fe4d6d-202509010918.0_1756718387898_0.6223092612607626","host":"s3://npm-registry-packages-npm-production"}},"2.21.2-fccb7b2-202509040916.0":{"name":"@flowfuse/flowfuse","version":"2.21.2-fccb7b2-202509040916.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.2-fccb7b2-202509040916.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f27e51cf153556f8011f3e6558237c985975cf8a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.2-fccb7b2-202509040916.0.tgz","fileCount":439,"integrity":"sha512-vfLzSxZhne4Y0afvraG2ef/U3audMAtamv2O4xCPCnqcAhsc90bJZt352mUH6uJuEXenj//WZPkkwqhQmimtGQ==","signatures":[{"sig":"MEYCIQCBWqZw1InzhDy4KaFpBuZ+x4ze5CurinIDprC/41Gy7gIhAPCQon4fCjSaP8d9BaR2CcWOuU6EwkZtV7n4qKEB8GTV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34279888},"engines":{"node":">=18.x"},"gitHead":"fccb7b28d5aa4ce7869f50bef42c469755aa7a49","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.2-ffd4ae6-202509010917.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.2-fccb7b2-202509040916.0_1756977467630_0.6685494210661418","host":"s3://npm-registry-packages-npm-production"}},"2.21.2-fccb7b2-202509041432.0":{"name":"@flowfuse/flowfuse","version":"2.21.2-fccb7b2-202509041432.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.2-fccb7b2-202509041432.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3b02c4cbd0081c853ef86180bb61cb1da37a3faf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.2-fccb7b2-202509041432.0.tgz","fileCount":439,"integrity":"sha512-2LonsUFcVu/BmOyzpMjpaE3F870aCrt1OjjP/xeoRkcbPcxRxm9UYNrjQbXFVgsQ20ED3M7yHRrwztsWwpcnJg==","signatures":[{"sig":"MEQCIGmp93+uCS73xC4RKGDuDwwA1NFa2QSnC0IQP1w/ljeYAiAbXf2ULF8e0QozZLwhwxsNZbtgRBa8ZWYl4Oto4jZE+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34279888},"engines":{"node":">=18.x"},"gitHead":"fccb7b28d5aa4ce7869f50bef42c469755aa7a49","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.2-ffd4ae6-202509041431.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.2-fccb7b2-202509041432.0_1756996424691_0.024133651875573703","host":"s3://npm-registry-packages-npm-production"}},"2.21.2-4b1bccf-202509041502.0":{"name":"@flowfuse/flowfuse","version":"2.21.2-4b1bccf-202509041502.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.2-4b1bccf-202509041502.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c0eeafc30c68630619c2da49f98ef0143aab2290","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.2-4b1bccf-202509041502.0.tgz","fileCount":439,"integrity":"sha512-aglTT622jsOJ44zd0eC3RWc++CrlRMJldQEPd3BSHFzMjVkfqgJILGPJ6weZ+2GDm1N7CtDxSzYsWvdLTsXV0A==","signatures":[{"sig":"MEUCIQDsY62fFl3UmAw0O4vdKx4ztiSOI97kRIdCHZrsGDzcGwIgELlgGqWSAbWMLyqW1Dax3Z2AJs8zjfqPzgc/iGpt14M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34288057},"engines":{"node":">=18.x"},"gitHead":"4b1bccfa5c066bdd61f1dc756244603a3cf1b0e7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.2-ffd4ae6-202509041431.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.2-4b1bccf-202509041502.0_1756998247897_0.5999239239490488","host":"s3://npm-registry-packages-npm-production"}},"2.21.2-f8d1394-202509051153.0":{"name":"@flowfuse/flowfuse","version":"2.21.2-f8d1394-202509051153.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.2-f8d1394-202509051153.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1dd0f1c17787b10f95b9b3405a44cd4d854bdf49","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.2-f8d1394-202509051153.0.tgz","fileCount":439,"integrity":"sha512-wBktA4B9z7IdKf5EKQh9TxpJWxD48hmZyn2ZOIEO5seWQDp7lLwlb7HWqQ5dikV0D8ib7V4dI746DChcafT+oA==","signatures":[{"sig":"MEYCIQCcU69ffXcGN1WVgfR6SLtuZuE/eGnBy5MicOSILFbUGgIhANaxUNBzbT0PNxd+93TaXrxeS7QOm7PvS2XKLSciTRsX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34288237},"engines":{"node":">=18.x"},"gitHead":"f8d139401de67a0aa5b0911f1aef30ef89ed3e48","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.2-ffd4ae6-202509041431.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.2-f8d1394-202509051153.0_1757073314861_0.5352529692772923","host":"s3://npm-registry-packages-npm-production"}},"2.21.2-f8d1394-202509051331.0":{"name":"@flowfuse/flowfuse","version":"2.21.2-f8d1394-202509051331.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.2-f8d1394-202509051331.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4f31d3a193919e8981fb7e62fa20baecc68b133f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.2-f8d1394-202509051331.0.tgz","fileCount":439,"integrity":"sha512-JrdVV6pJzQQTlVooiLBN2BgGkcIFYHVA/CBgrD93nL26j7a5psJEjXi3PWtWk9G4ytv8oLET/nPmmkdQSrJ7gw==","signatures":[{"sig":"MEQCICDTVo9mrpgGcobYBhm35n7Ayh/IZCdbOetO3NS2YqVMAiBRyv8WaejyrEWuGHITG9Duty0O4LgVT0obPQFFQPmxMA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34288237},"engines":{"node":">=18.x"},"gitHead":"f8d139401de67a0aa5b0911f1aef30ef89ed3e48","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.2-ffd4ae6-202509051331.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.2-f8d1394-202509051331.0_1757079207095_0.6835104391858875","host":"s3://npm-registry-packages-npm-production"}},"2.21.2-f8d1394-202509051342.0":{"name":"@flowfuse/flowfuse","version":"2.21.2-f8d1394-202509051342.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.2-f8d1394-202509051342.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d401a741bf0ad7a3d8821e5dbbd113430a1fca58","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.2-f8d1394-202509051342.0.tgz","fileCount":439,"integrity":"sha512-Zj2VMsERyGgYIk2lPzsKhRQ6eIHmRPcXv4RXJMyF1UKOyVW1C4U5yQDo/WffzlSxxkSqkk7k8BdZSKUUI8xcPg==","signatures":[{"sig":"MEQCIBYq3eV4nbI9t7GtjdzYej7NXzRkjQafWfBqi/Omsm+bAiAwakNcfcx3fAVxhamn4feQ5Sl6be5gF2FlVDBvxNo1oA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34288237},"engines":{"node":">=18.x"},"gitHead":"f8d139401de67a0aa5b0911f1aef30ef89ed3e48","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.2-ffd4ae6-202509051341.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.2-f8d1394-202509051342.0_1757079859938_0.5885407893513417","host":"s3://npm-registry-packages-npm-production"}},"2.21.2-51a783b-202509080758.0":{"name":"@flowfuse/flowfuse","version":"2.21.2-51a783b-202509080758.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.2-51a783b-202509080758.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9d0b40a75a4c95eb22e32b5546c447ae4d1294b8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.2-51a783b-202509080758.0.tgz","fileCount":439,"integrity":"sha512-zyKvZCpDlgKsT1uFTxHcx4WzwdCmZ8/od5yqfF+YichXFBMVRJWIeXNnOrayThbka6aW2jzZMPq/Gha74bdeeA==","signatures":[{"sig":"MEYCIQC6UGphL4l9Brf5F4z9Jx2+RkoByOz7uBkZPwce4CmO7AIhAMljXXwBXCFFBxwW09+KGC/bogYCUi/gmEbrKqlivITB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34288237},"engines":{"node":">=18.x"},"gitHead":"51a783b253589c513b3e8035f8c943eb831cc984","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.2-ffd4ae6-202509080757.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.2-51a783b-202509080758.0_1757318417929_0.16127583397782197","host":"s3://npm-registry-packages-npm-production"}},"2.21.2-c501a90-202509081118.0":{"name":"@flowfuse/flowfuse","version":"2.21.2-c501a90-202509081118.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.2-c501a90-202509081118.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bf597a4a4f668f7a9ac6b483d6f7e64230275228","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.2-c501a90-202509081118.0.tgz","fileCount":439,"integrity":"sha512-8jR+EKitt7dbh7kkUm1Yn4FsoGAxskZmctEAIMzUwB/Zy7W40iGM8K7OPIEz/MAiOAMSKvZlw1yCBYSA4dLT/w==","signatures":[{"sig":"MEQCIBpUkKVfkWlcMXnO/r/Vv+S6HK59hpcWfkXIbgGkzuC5AiB30GvyvmLL5C5dabWNCrbZ+e/lGia54iLutzVPJrxkdg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34297670},"engines":{"node":">=18.x"},"gitHead":"c501a90ad5e9140729423ba40ab1287b43a2dd67","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.2-ffd4ae6-202509080757.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.2-c501a90-202509081118.0_1757330423453_0.42769011255196654","host":"s3://npm-registry-packages-npm-production"}},"2.21.2-7d4e041-202509081306.0":{"name":"@flowfuse/flowfuse","version":"2.21.2-7d4e041-202509081306.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.2-7d4e041-202509081306.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7f955ffce17a006351bba0ddcd1ff9bd1ee794f3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.2-7d4e041-202509081306.0.tgz","fileCount":440,"integrity":"sha512-wAx+TvWDWsYRhd+dwdla1f2PavFYfWZ+uQHinuR9RGkvBtM58H2wZmrd4jzfxVpUZeuG/PFSAN3yqnWelIfRaA==","signatures":[{"sig":"MEUCIQCiIniqqbm5HsNGro0rRPBzRs4FqGzOg9xErnI028s21wIgU0UU9qlzzKpqy66cMUMaoAad+ZCbZqFo8PRW301p/oE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34298715},"engines":{"node":">=18.x"},"gitHead":"7d4e0419c70e441816e75092f4b14d269fad9bb7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.2-ffd4ae6-202509080757.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.2-7d4e041-202509081306.0_1757336901244_0.2656164684497506","host":"s3://npm-registry-packages-npm-production"}},"2.21.2-7d4e041-202509081323.0":{"name":"@flowfuse/flowfuse","version":"2.21.2-7d4e041-202509081323.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.2-7d4e041-202509081323.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d4f03af28a501f8899a2ee13181cc80671166bbe","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.2-7d4e041-202509081323.0.tgz","fileCount":440,"integrity":"sha512-5sndkvzwOWm+Bmyj99NgGMAf94adj8XiHH+iLsA5uC7sNPSEVbz/depuy1z+Ni+o6C1X/ac3we/dPzev1zLzBg==","signatures":[{"sig":"MEUCIQCq7Jcrd+3chKMrlpbDSEdTQr08lCvgq1TFGfRyMQMQqQIgWLdq+a+i17/ljNLwMiIYhfktGHFgixKkGQad+DVXRY0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34298715},"engines":{"node":">=18.x"},"gitHead":"7d4e0419c70e441816e75092f4b14d269fad9bb7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.2-64581d1-202509081322.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.2-7d4e041-202509081323.0_1757337910172_0.5296783136787293","host":"s3://npm-registry-packages-npm-production"}},"2.21.2-53c3bd2-202509081421.0":{"name":"@flowfuse/flowfuse","version":"2.21.2-53c3bd2-202509081421.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.2-53c3bd2-202509081421.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"93c24562e55ff1ed61e4b0c5b1cd12f3e8cd8ba6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.2-53c3bd2-202509081421.0.tgz","fileCount":440,"integrity":"sha512-tS///PIwgl2Z2Djy4ulR4OiHnGxGY6iNYNU8qBXSvrcICY6bspU9XjqxInqFV7vL3sQzyEv3BEKxX+Wv3TuZxg==","signatures":[{"sig":"MEYCIQCUYsPg6IAA+NhJQPQU+PFRe/Jc6+3Rf8n4gn3dbQ+13QIhAMAiurmJBFWvenV5NyIOUKjS58pf570qB9kK9ob2pIXa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34426659},"engines":{"node":">=18.x"},"gitHead":"53c3bd200cb22bfc42c92d9ebedaad8442846c6e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.2-64581d1-202509081322.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.2-53c3bd2-202509081421.0_1757341410895_0.767143778209493","host":"s3://npm-registry-packages-npm-production"}},"2.21.2-2577346-202509082050.0":{"name":"@flowfuse/flowfuse","version":"2.21.2-2577346-202509082050.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.2-2577346-202509082050.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"96f798cf689c9636cb779d8248caa1ceb5fa8fd2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.2-2577346-202509082050.0.tgz","fileCount":440,"integrity":"sha512-Ffv6jMi87lymD4k4KVNnqJTlxU6h0l8u2FqpM7bUEEs9tNEE6yGLbelCwvTIUsGCCxNRC3McGu41YhaPMpAsmg==","signatures":[{"sig":"MEUCIBpOSfmOtAUjO7eGBy7RR9o9vYfe9m66DLM6f7X5Z5hRAiEA2ajfG4I6tUyc+9CPVO/LSNwD3KLQmf9Ky72/Z2SW+hQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34426659},"engines":{"node":">=18.x"},"gitHead":"2577346c59f22e2db0692dec7e174f4b199c77f5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.2-64581d1-202509082049.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.2-2577346-202509082050.0_1757364718502_0.5892282145062047","host":"s3://npm-registry-packages-npm-production"}},"2.21.2-0ac0bd2-202509090854.0":{"name":"@flowfuse/flowfuse","version":"2.21.2-0ac0bd2-202509090854.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.2-0ac0bd2-202509090854.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c669fc92796e8da66b6b977c906bdcbdd56f258e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.2-0ac0bd2-202509090854.0.tgz","fileCount":440,"integrity":"sha512-6exWxj5QnQA+AaPXVbkTuSFh+kr/tlYhta36RGgI/QYggLSCSF5gI90qvSnuw8RqhpzA9PYvoFPNvEn32ynyag==","signatures":[{"sig":"MEQCIBv/zc3+nelohU7jyZ2OGnMz3rGt+ATBNPeHlwiIOTuhAiABe8pW0yqoh1UnQqhwUguwPTaA6XDHVPDI3Jb5bFMeSQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34422667},"engines":{"node":">=18.x"},"gitHead":"0ac0bd2f27ef964b4f5e35b163ac463542199754","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.4","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.2-64581d1-202509082049.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.2-0ac0bd2-202509090854.0_1757408177480_0.8123874641618074","host":"s3://npm-registry-packages-npm-production"}},"2.21.2-070bd7e-202509091645.0":{"name":"@flowfuse/flowfuse","version":"2.21.2-070bd7e-202509091645.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.2-070bd7e-202509091645.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"07781a6ba7ed1714853426f6619b9bd40a50e7f5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.2-070bd7e-202509091645.0.tgz","fileCount":440,"integrity":"sha512-EoHNub6L0mdF/GRUysODX8gmYHFQk5ZLPgMo61mYxKuoZwhQsSVd4kgMxS2TaCHWZr54W/VlrHr8boFmeJY8Bw==","signatures":[{"sig":"MEUCIQDolkGnlWkTYySI/ify3K995pis21+uHI6W2WxVhJX2swIgW81dtjIVq3dg6ZH+9g0q0bMGdZhWk+RiFU1bPHv+VH4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34423591},"engines":{"node":">=18.x"},"gitHead":"070bd7ef6f831ac158d7a8dce18666f26b4de11a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.2-64581d1-202509082049.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.2-070bd7e-202509091645.0_1757436447544_0.6990964563419948","host":"s3://npm-registry-packages-npm-production"}},"2.21.2-070bd7e-202509091734.0":{"name":"@flowfuse/flowfuse","version":"2.21.2-070bd7e-202509091734.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.2-070bd7e-202509091734.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5b00b20efd2a4a62afa05a88c75042dee4c5500b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.2-070bd7e-202509091734.0.tgz","fileCount":440,"integrity":"sha512-XFIBUbO2fIQILVHHdYz1JBLhxiNKKo7Zh6KqdEKaLtKl1N0lEvUymGmLQ6xLaKDSm5UAH0gxzN5cWEcPB3u4Qw==","signatures":[{"sig":"MEUCIQDwx/xc/716rhobgNMo7pgO+dr/gWyi3FCEtWe1DQhE7AIgaS7nD96Ix1Gj93B95VRX/K6pmbzefLjRSgbTOAIsYbc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34423591},"engines":{"node":">=18.x"},"gitHead":"070bd7ef6f831ac158d7a8dce18666f26b4de11a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.2-64581d1-202509091733.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.2-070bd7e-202509091734.0_1757439392209_0.026835742543428465","host":"s3://npm-registry-packages-npm-production"}},"2.21.2-070bd7e-202509100833.0":{"name":"@flowfuse/flowfuse","version":"2.21.2-070bd7e-202509100833.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.2-070bd7e-202509100833.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8c70921e1a3e0dd33fa05676f673ee92a52f73a3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.2-070bd7e-202509100833.0.tgz","fileCount":440,"integrity":"sha512-EUCuGS+/zt0yHLLDhQrkX1q6skiv/1y5e7PpGFa2XGKUYx/k8RzqvY1CW9B6Lk1MjtDFpAy0AUla0ZAmOy/AZw==","signatures":[{"sig":"MEYCIQD5qZvQ1/JyskbJYxZ+kMeMO1/QvRoE5asHo56RtI87RwIhAPTykUaWrWpNV1LO4R86srRtFHDmK5XRRc4rkQksBzIA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34423591},"engines":{"node":">=18.x"},"gitHead":"070bd7ef6f831ac158d7a8dce18666f26b4de11a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-273cb2e-202509100833.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.2-070bd7e-202509100833.0_1757493333953_0.8519945588130224","host":"s3://npm-registry-packages-npm-production"}},"2.21.2":{"name":"@flowfuse/flowfuse","version":"2.21.2","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.2","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ba85e791a115306ec2c4464cecc883e22e06f4e2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.2.tgz","fileCount":440,"integrity":"sha512-CAVeSlChVvzyBi5mdgpepKawDmRjDHUlEilS4ipfmg36ckkVcijtENUQzOpHY43jBZ6y7W571q/snRNZwnT2kg==","signatures":[{"sig":"MEUCIQCTZIcAZola+5KfiHPaXi+Nqsepp4ZgWa9V3wT+icUrwQIgcpsUjzgUFS3mxa4HNIMhbi/uYfAHgBCwsvhulwzy9sw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34421549},"engines":{"node":">=18.x"},"gitHead":"20001f31e59188bec5b9a48c3ef102b5366f1c7d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.21.2","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.2_1757493633589_0.7181929118176613","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-20001f3-202509100854.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-20001f3-202509100854.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-20001f3-202509100854.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"807f1b59f5e862dc9023cc6070d7cd4cd4f222a6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-20001f3-202509100854.0.tgz","fileCount":440,"integrity":"sha512-JjB3Qqff2dh24GDzQZFG/IywF/VcCkC8sGAcsYgySjkjBQnwPdiakyX7svz200mDZiGVt5LrPe9BAz7XaoL5+Q==","signatures":[{"sig":"MEQCIDhwUQon3gSUrQ8FfrhAf46uaapzX7EbURyuWz1fFoOTAiAlBvvpGa2C8dLIIEtLNMKhCqUAJdl1kAukpP3lhYrFUQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34424730},"engines":{"node":">=18.x"},"gitHead":"20001f31e59188bec5b9a48c3ef102b5366f1c7d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-273cb2e-202509100833.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-20001f3-202509100854.0_1757494568578_0.0029580856396047572","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-379c3fd-202509101328.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-379c3fd-202509101328.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-379c3fd-202509101328.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ac780663c2fe99d09e4dff3cc80a1230b94dc961","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-379c3fd-202509101328.0.tgz","fileCount":440,"integrity":"sha512-OGMnVWbnpKlrfuL/hhmHm0sXFHuPPQKYkRfHIaOCooKRYhS63JVH3xu7MnuYERwSV3b1oiyfnU9OLr27RxobRQ==","signatures":[{"sig":"MEQCIEmfxG2qKQ5HYLH/1RwViHy8skc0TaO5wVzw0yNS5mMnAiBGbSXgD1D/+M1rZctOabCghEh8GmhI35KpPoYqd/GhBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34434003},"engines":{"node":">=18.x"},"gitHead":"379c3fd4ac5e6146ebfb53c32600956ae1bddce3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-273cb2e-202509100833.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-379c3fd-202509101328.0_1757511020432_0.37532366047891697","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-16abcfa-202509110742.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-16abcfa-202509110742.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-16abcfa-202509110742.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"01cb889dffa131cc442842e0cefc80814f01d39b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-16abcfa-202509110742.0.tgz","fileCount":440,"integrity":"sha512-RpL+i7PDCYQJRlSaU0jaOoQF8S3lQGb723htvVJCiEXRIHMd6siV8h8QOIFrqzOIVhtSW1ibd8FX098qP9mwQw==","signatures":[{"sig":"MEYCIQDnzAz4s1PB5ppQ9+WQg0Q+ZfXxz6hbxi0qNun8nEssZAIhAKCDbOPxFuBYDrwSxhJP/Px+XZ3Gj/QmJAj9NJmPOTlI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34466498},"engines":{"node":">=18.x"},"gitHead":"16abcfa230a022237b506fe7afb1acfa382e968a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-273cb2e-202509100833.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-16abcfa-202509110742.0_1757576626925_0.41714453994926814","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-16abcfa-202509110757.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-16abcfa-202509110757.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-16abcfa-202509110757.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e24e5dce753902c3f20d3ea84af7e5b9ccbca6d7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-16abcfa-202509110757.0.tgz","fileCount":440,"integrity":"sha512-DcPyvP20PpNjKH8+ZDqjJhvqGX/04+PKqt48d5AEQ576lqzBNy/I/V39myrTauuJOhKOndmIo7YGgmMQSumVLQ==","signatures":[{"sig":"MEUCIQCwi/EOEQPMpPH6JjQDozUK9skvf1a8HoUe/u/lY4pqpAIgFknsNWzJUAiPOAVmS0t7vAzPzI0Wab9njFnGWgMep3Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34466498},"engines":{"node":">=18.x"},"gitHead":"16abcfa230a022237b506fe7afb1acfa382e968a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-273cb2e-202509100833.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-16abcfa-202509110757.0_1757577549225_0.39866593950060936","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-9c5771c-202509111356.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-9c5771c-202509111356.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-9c5771c-202509111356.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c48e64c30424806976f3672db554c3c8c1fb2c99","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-9c5771c-202509111356.0.tgz","fileCount":440,"integrity":"sha512-iuL56sHJE/yoMTLY0guMhv9BXhK1z/DFk4tUSvaKc4IYZuhJcOodXgtdHRdVupbFNuUzhC/tykIBBfFIXXFhwA==","signatures":[{"sig":"MEUCIH8MtEkjYPiYUaT+7YCTCpSjU6UW0GurjuCDbACn5pAlAiEAiotGmu6u+nyujcP0r0vcHb+FWiOr5hXUXd/OmcL6RwQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34475214},"engines":{"node":">=18.x"},"gitHead":"9c5771cd2bf8be993103c0928f11c9cc627fc8d3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-273cb2e-202509100833.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-9c5771c-202509111356.0_1757599080789_0.5010783513275441","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-33800f4-202509120900.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-33800f4-202509120900.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-33800f4-202509120900.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"19abcee7b938107acd8ff8e048d26706211bf8d3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-33800f4-202509120900.0.tgz","fileCount":440,"integrity":"sha512-VVFhCsVzJJDTl1cnFuoW1jOrGU0gcB0nqevSesNAoUZs+m9qQYKtvBuatFZMtNIr98AOQj3L1aW+xOGe78zOZw==","signatures":[{"sig":"MEYCIQC93gaCpIOBAhH4WtEoDn50cSd6ZYRy/YH47A8CFhSRnAIhALqSmg4LiA07vlf/mzGUtENKmcYZ8yF3hiyAp9kClrSn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34475210},"engines":{"node":">=18.x"},"gitHead":"33800f4f2dc6c8ac1f69d4ed46345d8f78354831","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-273cb2e-202509100833.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-33800f4-202509120900.0_1757667708238_0.3638041892751156","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-33800f4-202509150741.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-33800f4-202509150741.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-33800f4-202509150741.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a61e5c4aa8d713495f85c888f8ead4fc73404086","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-33800f4-202509150741.0.tgz","fileCount":440,"integrity":"sha512-E9XeUI7YMXgG8I5wnlqbQ05IQfxXIfELqM+EIi1oD8PC5rxrQ6LCDpgTQCklq0/WMNDzTEaN00fj2Q7ZCBMPDw==","signatures":[{"sig":"MEUCIQCilOv98Z/twhJrWrXLwY8J/66XdIbEyT9uY1NW2CyK/wIgI9UDDGKyb6gEKvq6Vw4bPFNRqPNcQUcLvQSq9zPYzCA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34475210},"engines":{"node":">=18.x"},"gitHead":"33800f4f2dc6c8ac1f69d4ed46345d8f78354831","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-273cb2e-202509150740.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-33800f4-202509150741.0_1757922183291_0.41784241642011954","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-5cbc9a0-202509151100.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-5cbc9a0-202509151100.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-5cbc9a0-202509151100.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"07ba66efb2e66531bfc0bf93fbf22618aec8c1f7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-5cbc9a0-202509151100.0.tgz","fileCount":440,"integrity":"sha512-Kkdc8Eb2as+rVQGIve28SsIq2s/HSIBwY7QDvW0WvIpiRV9mY92iVfEhAdS6BzbRTMNMOBEDo4bPq0sQ239mcA==","signatures":[{"sig":"MEUCIA9CDOVM7WqlLUJM5PgB9hIsDRbABiPv08KA9KIis4BxAiEA1Pi6lh4IJFEYa/GS7VI6F9jsrrMuPW3qRbEbK5b3+vo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34482102},"engines":{"node":">=18.x"},"gitHead":"5cbc9a0ee03c632d86ee7d8bc534d905efbef097","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-273cb2e-202509150740.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-5cbc9a0-202509151100.0_1757934121743_0.670876469538731","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-5cbc9a0-202509151342.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-5cbc9a0-202509151342.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-5cbc9a0-202509151342.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9bb76474b5d7d6862181e7ddffcb7d62f96ce110","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-5cbc9a0-202509151342.0.tgz","fileCount":440,"integrity":"sha512-DAKaZkU9uBbBJ9EaBLiHjusZhKvxp1th4VD+t9N7k80OPwJIpZRSsd2riutvEl0abICLo6VEm7TQ0ky16e+EXQ==","signatures":[{"sig":"MEYCIQDSracSmMl5d1xS9pR3BZTeYq4I6QA6Rps4JhI6XkHdWgIhALVpD0Mng2JLW6US5khfJmEzPc8dq8w7zFDj2zAIoQhE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34482102},"engines":{"node":">=18.x"},"gitHead":"5cbc9a0ee03c632d86ee7d8bc534d905efbef097","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-273cb2e-202509151342.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-5cbc9a0-202509151342.0_1757943883048_0.7019492180199798","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-5cbc9a0-202509151352.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-5cbc9a0-202509151352.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-5cbc9a0-202509151352.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"805f060cb16b1ee7f7c799466a189b8e2e69a51a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-5cbc9a0-202509151352.0.tgz","fileCount":440,"integrity":"sha512-GMBXAmgFoFcf7A4n4JtAlojy67H7EQ5gZb28tfoYBdDczJJdmGN6oAUiXFgaPG2b8GQBFq5NgOJsvl1aQSLBaQ==","signatures":[{"sig":"MEUCIQC6udDCfTrQ9un5ceNSuZww61ahk1UsgIwO1+A2NR7GDAIgEhWfuPhWgobW1e8Ph3X5rWXmM6HBc5eyaMZKIo9E8bs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34482102},"engines":{"node":">=18.x"},"gitHead":"5cbc9a0ee03c632d86ee7d8bc534d905efbef097","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-88488c1-202509151351.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-5cbc9a0-202509151352.0_1757944449296_0.5316950052114913","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-5cbc9a0-202509160529.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-5cbc9a0-202509160529.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-5cbc9a0-202509160529.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a456d1c96bf649247ee9298183acd2f42cc8af29","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-5cbc9a0-202509160529.0.tgz","fileCount":440,"integrity":"sha512-eqdjKlzHvZB9Otsgb76jj6Cp4CT1y/Gsd/4LXmj5WolpdGuiT9PlKBMBShu+rw8abBFFjk9+K7Aq2zcHVZiqkA==","signatures":[{"sig":"MEQCIH1VCzqgULMXK7rozudhMksJ0nkn2ETvWoRf6LClBeMDAiAHCUAUF81dSum201feJGGBdRmPWrNjIWrPa9s6IymoMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34482102},"engines":{"node":">=18.x"},"gitHead":"5cbc9a0ee03c632d86ee7d8bc534d905efbef097","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-88488c1-202509160528.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-5cbc9a0-202509160529.0_1758000677006_0.060020631252491574","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-0a557bb-202509160927.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-0a557bb-202509160927.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-0a557bb-202509160927.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2c890fe6e412f5ff6b2d10d7af4ac766b3b061e1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-0a557bb-202509160927.0.tgz","fileCount":440,"integrity":"sha512-7e5Kkc7uUq5k9Jxx/N6iY3wwLSGOqDZ2FCdQvg/c9q46sObR0W3njUP4gqeTEN7bISi5lXxUG9DW7zfJl9Bghw==","signatures":[{"sig":"MEUCIQDOp92unWj2gT8L99ynhFQasBd+DZt7VwWgn2TKNd5h3wIgez0/uR41KF1YfYNlw/0Ke9qpRqBBaPGB08b+yPKVp3M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34482102},"engines":{"node":">=18.x"},"gitHead":"0a557bb63bc1713fcc7bd2fcdceb5ad1c7df7d87","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-88488c1-202509160528.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-0a557bb-202509160927.0_1758014975545_0.8394219036619688","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-0a557bb-202509161024.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-0a557bb-202509161024.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-0a557bb-202509161024.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"45c956ae71d93ce73debac7690cf456ba35f929e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-0a557bb-202509161024.0.tgz","fileCount":440,"integrity":"sha512-/9Lj+BWhrdFdfeSNyPl651BR1x1VKYygAVK0qeJOaFBXrqJkPaashQDiLbyln2DJ0ocXavmkj7XxkQNlUAHGAw==","signatures":[{"sig":"MEUCIQDEHZ6QZowuzRjxab6nx/9VpmNcpC+3OTxy5oTyimdMngIgdmEi26YPnhFa1uDbd64JCDoRpSCQp4HVH96Fnc9JqGc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34482102},"engines":{"node":">=18.x"},"gitHead":"0a557bb63bc1713fcc7bd2fcdceb5ad1c7df7d87","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-88488c1-202509161023.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-0a557bb-202509161024.0_1758018370956_0.02421708842203074","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-8907175-202509161053.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-8907175-202509161053.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-8907175-202509161053.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"df2c476e506fa4fbb8cd996d8f27ba0ff5e28589","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-8907175-202509161053.0.tgz","fileCount":440,"integrity":"sha512-EJAc82o5vuVKBLHFx/W6VG0kEkFMZESvu9JolCwf6RTrmVt+ugJac8FNmagdBB+OdfYOwqr73dNonlK4frHPmg==","signatures":[{"sig":"MEMCICqrTnSfHZhjAekZoXpyMsm4USdYGOWb3YG2L1D2IIs2Ah8T667NjRBAR1SHEd73+C5DEIUjxuvaPpfy3S3yTOOG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34482775},"engines":{"node":">=18.x"},"gitHead":"8907175b320d60ee43b8adcd39ae9fc0e75412be","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-88488c1-202509161023.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-8907175-202509161053.0_1758020086844_0.4977860348444816","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-904b9c6-202509170801.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-904b9c6-202509170801.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-904b9c6-202509170801.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"46848731b82718da53511c0faef97b66cd6fae95","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-904b9c6-202509170801.0.tgz","fileCount":440,"integrity":"sha512-inwysHJ8Q/pSxC9WR4aXywdwBYpjMwk4LgWE4/lUmm+oRjvj1W+KKB2ndrf21OggD0Bi5UppEukxBXyEB20XLg==","signatures":[{"sig":"MEQCIDNiAqFC97KFTAK9RjL+3vdS/oARg2TroZ/5ijaou9baAiA0uWBD2PQg2VBlXrdiBFuL5NhyINIpuDwo6JfsemxBBQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34483505},"engines":{"node":">=18.x"},"gitHead":"904b9c6a0a98c58d9414c8e2020a7a2df17e163e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-88488c1-202509161023.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-904b9c6-202509170801.0_1758096200472_0.5523540797014508","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-989eae8-202509190923.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-989eae8-202509190923.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-989eae8-202509190923.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d34678f065ca72f95dfab32a0320b14a8b13fbd5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-989eae8-202509190923.0.tgz","fileCount":440,"integrity":"sha512-nE7EENkG1HoSqZLBnfm2SS7/kCCuVuaHyMadAPAJxdMk+aN/8bCXBXDSluUvrSDb5R9crw3HFjc/VPZykchdYg==","signatures":[{"sig":"MEYCIQCbg+jIQfTPo9XeuBOsw14qvPkP4wASM0thqTCiZLM0DAIhAKV83VF5IBW4y84zAyPo4PVElF8/kH4NjMeniXbginTV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34496718},"engines":{"node":">=18.x"},"gitHead":"989eae8030ccc139bc036d4a06f63e2dc1a59b5c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-88488c1-202509161023.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-989eae8-202509190923.0_1758273883752_0.6557652309461888","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-93a2df7-202509191511.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-93a2df7-202509191511.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-93a2df7-202509191511.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"749e25d70b0f7160e163d9ea2bc60ad37537b969","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-93a2df7-202509191511.0.tgz","fileCount":440,"integrity":"sha512-7kCbEwfBYgbNe6hiUh4ZbgFIfHcrOfKP9ZpJUBpzevlFyIBOMxl7KETSzWUR87fQ1Qs64BzJgiGVNN2GxbPWeg==","signatures":[{"sig":"MEYCIQDiQ/yelavAVjr+M7pvN8jSi/Lh7HGBCmCehQAU//4EJgIhAJs2YSFhqAqmSbNiQBsHRppvtBZjQoTWd23EiUyCv10f","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34565871},"engines":{"node":">=18.x"},"gitHead":"93a2df720fca3fe995070ab9533e09235e0a6823","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-88488c1-202509161023.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-93a2df7-202509191511.0_1758294764360_0.19502712698829394","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-93a2df7-202509220523.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-93a2df7-202509220523.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-93a2df7-202509220523.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"26a91893cf6313bc028e0ba427ab8bc1c867b283","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-93a2df7-202509220523.0.tgz","fileCount":440,"integrity":"sha512-QLEX1ctcQVpgrkdiNIo/p44PHfRLushpwFHVMoQNNkN4HG6I0Q5O5071DORMoC3Q3J4GeSphQkSGWO+stUmv4A==","signatures":[{"sig":"MEUCIQDF1zrytGr4gV9o2r/HeMWzzBipV67R3VUVLKUdgB9sdgIgODPHeNc0b95BFuFP6q/0mhtBy0H+NbJPn2ZYnlM6ExE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34565871},"engines":{"node":">=18.x"},"gitHead":"93a2df720fca3fe995070ab9533e09235e0a6823","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-88488c1-202509220522.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-93a2df7-202509220523.0_1758518711799_0.9365396630617195","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-93a2df7-202509220856.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-93a2df7-202509220856.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-93a2df7-202509220856.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a55df38596d5a911a8a3b47a1bdfeb9068f654f7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-93a2df7-202509220856.0.tgz","fileCount":440,"integrity":"sha512-QyIddly4O5m9UGF8nBu4xLi0wZ6gzoohzB+veLfje/9wVAblJs6ku09CLQ8oNhUirM8nDW6gm56UPq2W27keqQ==","signatures":[{"sig":"MEUCIGeT7/7egqOd9B2/619DKKEbLnMitDwZu4bOAgwdpQG0AiEA0ow3GLNfzzElW8tRFM2vXRW/AG54cV+azbKwzkdQ2RU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34565871},"engines":{"node":">=18.x"},"gitHead":"93a2df720fca3fe995070ab9533e09235e0a6823","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-ac8fbdb-202509220856.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-93a2df7-202509220856.0_1758531517665_0.6294876381564012","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-beb462c-202509221051.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-beb462c-202509221051.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-beb462c-202509221051.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"59786af36bdd676b7d9005f7b32942510677a928","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-beb462c-202509221051.0.tgz","fileCount":442,"integrity":"sha512-QslGGuATWdUajKF6p0tsEnLrul2Xz5iIDD4pNe4DaofTdFv1NhLRdL7QWnR9RIolmudn64EACsBeqWFGnHwb6g==","signatures":[{"sig":"MEUCICgNDMcUIPgagoDTxlPz52jtY8KaIDpo5sDahxxtMUeUAiEA+FSqww8Y3w9VVNqsLC1gWwq984kREhXxe1YqgjlwZe0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34589594},"engines":{"node":">=18.x"},"gitHead":"beb462c7da70f77b448e513f4dd933426a2cde56","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-ac8fbdb-202509220856.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-beb462c-202509221051.0_1758538485215_0.2641754142152981","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-beb462c-202509221215.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-beb462c-202509221215.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-beb462c-202509221215.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ebd1e6936a1b52660f77e2bec0ff572f710408ce","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-beb462c-202509221215.0.tgz","fileCount":442,"integrity":"sha512-wbGNoHOYDqLpkHQonnU8eDl8ThoqPi2mwMAZOyT140l4X1n3bFuBkVPTiEKzxuLP6FR3rIREeDiXZocNQpop1w==","signatures":[{"sig":"MEUCIQDCalfk8R57+FMIA4jnIevwwFYEk7V6EGtKDgC1SOhbTAIgAWJ3kViBWxp7jMWzcenGQ+dkVPi2iZR8JEYnJlJqTDg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34589594},"engines":{"node":">=18.x"},"gitHead":"beb462c7da70f77b448e513f4dd933426a2cde56","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-c306fa4-202509221214.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-beb462c-202509221215.0_1758543417880_0.9490610969583344","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-beb462c-202509221217.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-beb462c-202509221217.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-beb462c-202509221217.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dde53b2e5c094fbea54840bf18703e2786b529ee","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-beb462c-202509221217.0.tgz","fileCount":442,"integrity":"sha512-VNEeitAso6hOHIJVP1Viv/w1Q17+sqBI6MNBX448z1HF+qICHhUAr+hylIgPpwuT9qpN0ZVnwLWyyjkzWeguDQ==","signatures":[{"sig":"MEQCIBG1xoWT3QRC5mONE1yE6mg8yhjSr3Qe1h1yw4oVTHKBAiAsdjCNh3L0KbGHnssCC5SY/JcogcpJaVr+5XnIGl1r6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34589594},"engines":{"node":">=18.x"},"gitHead":"beb462c7da70f77b448e513f4dd933426a2cde56","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-c306fa4-202509221217.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-beb462c-202509221217.0_1758543563555_0.9811564668300274","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-1407081-202509221351.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-1407081-202509221351.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-1407081-202509221351.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ea129f89b4f73c97af591436b39f584c0e3b0872","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-1407081-202509221351.0.tgz","fileCount":442,"integrity":"sha512-Y5l0HHax9vd3OyH/E6tBn+fbK0jRR0yZnlW//XyZCj8NJsEZVmWfKJI8ERLI+msi3XSwm8O97d+yhcc7XHVs8w==","signatures":[{"sig":"MEUCIC3R1C2MPIT6lGZyRfLVDS1rGbMbsITDb1CniMYivp+VAiEA+MHalG1KHIQVWW9LTKiCy4fKsVJYpOnslTuxLnViKpU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34589910},"engines":{"node":">=18.x"},"gitHead":"1407081502e17a5c7ce020c1c3f538d493ceecff","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-c306fa4-202509221217.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-1407081-202509221351.0_1758549211407_0.707548176211606","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-1407081-202509221419.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-1407081-202509221419.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-1407081-202509221419.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"178df4fb210fc49165b852fcc24a1b899b6ccf1d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-1407081-202509221419.0.tgz","fileCount":442,"integrity":"sha512-IJfnsnBNRSLSfL1WOF/kETZWLPeDPFalK9XcNvU7qKY7yJv4mrngNHVDhHzS2WzrGG1XonjNWspI4GfU7iJU+Q==","signatures":[{"sig":"MEQCIBC3nf0eTAYPNidZh8RaT66Kou8lOgq+wjtVX4w5vR9mAiAHoupRL7Yq3lS/C44Dx6hnv1XVkbsUFS5TTIiQm66xgg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34589910},"engines":{"node":">=18.x"},"gitHead":"1407081502e17a5c7ce020c1c3f538d493ceecff","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-c306fa4-202509221418.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-1407081-202509221419.0_1758550871350_0.8387565517560209","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-ceb8765-202509230520.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-ceb8765-202509230520.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-ceb8765-202509230520.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"428aad49a206dbd888a4d1381bce5ffc8b3a6d08","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-ceb8765-202509230520.0.tgz","fileCount":442,"integrity":"sha512-DTDZq1J2NFNVKRKYiplH6Go0M+KUWnfSnazZFrtPE5t8FCjm1tbarh1Men0nX/z3IygUc234fha+9jKZPfmWJA==","signatures":[{"sig":"MEUCIHTWillo0sj4S0OiL2fHDaQ4fU0tCR8EbgS+kzzKfhGdAiEApxukOWEU4NolZIAeYi3JYe88KSVCVHQGKSmc7WIjsJI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34589910},"engines":{"node":">=18.x"},"gitHead":"ceb876546e568b62bf8115c5bb4b8b90f3f9e1f0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-c306fa4-202509230520.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-ceb8765-202509230520.0_1758604955722_0.739937120865062","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-62564ff-202509250930.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-62564ff-202509250930.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-62564ff-202509250930.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"212b552914b59ca1a37450592af94763b3343df6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-62564ff-202509250930.0.tgz","fileCount":443,"integrity":"sha512-1YZxZewVuddB0KdHhIK6R9Q1u9CXJdt2wcL3U1VdwtIYOP3mRoxrPhA+Rs6BWwi39OIj1DfLbfDiv0i5G5cM5w==","signatures":[{"sig":"MEYCIQCTQoIcucAs2ZyiyXnWm9sumNl8GiX3NW2Y+Jc9jgGjegIhAIqpyeOU36aw5OzTcG6mjPijKa5xj20+0jT2i+tncyjG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34593923},"engines":{"node":">=18.x"},"gitHead":"62564ffcd4caec9cf0223c5a6cf34f363609a43b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-c306fa4-202509250929.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-62564ff-202509250930.0_1758792735757_0.20646011071198456","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-62564ff-202509250944.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-62564ff-202509250944.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-62564ff-202509250944.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e743211c9848f4976f045b133ef3d2cedd52761e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-62564ff-202509250944.0.tgz","fileCount":443,"integrity":"sha512-WrPjxBSyBIY1XE/h7/YHa9WYsOW3vgUCZXWOI/cLQFaNL1QEsMtQVsENX53sm2wvrLNEpOy5p0yFu27vamhQhQ==","signatures":[{"sig":"MEYCIQCidY825vf0UMswVrnj3JGys1ClajMhT3SK0ISgcen1EAIhAPZHczT/vXF31orx5U3ruPglQGJHNu/K6VBgj4gBvZl9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34593923},"engines":{"node":">=18.x"},"gitHead":"62564ffcd4caec9cf0223c5a6cf34f363609a43b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-c306fa4-202509250929.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-62564ff-202509250944.0_1758793547492_0.14734042942695025","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-62564ff-202509250948.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-62564ff-202509250948.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-62564ff-202509250948.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4e1e7d3b04817b3edd1a6768febae9eccf6fcb40","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-62564ff-202509250948.0.tgz","fileCount":443,"integrity":"sha512-RJoftHTjW3oqHCzbedKzWM8bxWhBfbrU/SfKQMtZnEYhhmydQPuQ+1TIRFKv3Xm69kFc2ouulfcExWj/jzghlw==","signatures":[{"sig":"MEUCIHYW2hNtm4veCgY91XnoXzBW0hi2WQJbjPyBOmrryXEcAiEA9cOSQiWmJsU41jsnSPqzJl/RENoZgeS3eRgZ5ulMLaA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34593923},"engines":{"node":">=18.x"},"gitHead":"62564ffcd4caec9cf0223c5a6cf34f363609a43b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.21.3-c306fa4-202509250948.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-62564ff-202509250948.0_1758793853465_0.6821155088547106","host":"s3://npm-registry-packages-npm-production"}},"2.21.3-62564ff-202509250951.0":{"name":"@flowfuse/flowfuse","version":"2.21.3-62564ff-202509250951.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.21.3-62564ff-202509250951.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"68f4ad6b7bfc6d0473eb11671941bc2964d81f06","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.21.3-62564ff-202509250951.0.tgz","fileCount":443,"integrity":"sha512-sDIz3gcCu52SKBOn0NdqXFyTi59ppuJXZqlSS/2gVcq9931ws63QYmpyhfFnFi7CZp7paIraFFvlDaUf1ug56w==","signatures":[{"sig":"MEUCIQDFO3zesA5V8zYJI9Tfj1qyWzQdrtKma4/lQGiBW/3qHQIgfwOCxJ+1xoBLUSeRuI7y4jDZ1UcyLvP72WufMksOxxI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34593923},"engines":{"node":">=18.x"},"gitHead":"62564ffcd4caec9cf0223c5a6cf34f363609a43b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.1-d3c8213-202509250950.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.21.3-62564ff-202509250951.0_1758793999141_0.3633587765458075","host":"s3://npm-registry-packages-npm-production"}},"2.22.0":{"name":"@flowfuse/flowfuse","version":"2.22.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8270ac6b384a87f50c8c9506824a7b5ebc0ba3b8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.0.tgz","fileCount":443,"integrity":"sha512-vrrA69GGGfhi3/zUCqBUUzg5r04LwlVW/lhJhXc5AJetC8GMezWE275zwZeLq8kshqS8fW+cVeYMyzJUW0k71g==","signatures":[{"sig":"MEUCICqlewk194ZmjvebjAA2BBpiIUvBQrMdhjr80ht2rcO4AiEAjrwoOuwpZPch4REdIhsW4ef7y1rNKL1R5EvAJ18+cqA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34592134},"engines":{"node":">=18.x"},"gitHead":"d6410be6cea6b7c7163db6f83b83bae2e0552227","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.22.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.0_1758794299506_0.2931391028899841","host":"s3://npm-registry-packages-npm-production"}},"2.22.1-d6410be-202509251013.0":{"name":"@flowfuse/flowfuse","version":"2.22.1-d6410be-202509251013.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.1-d6410be-202509251013.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dc0594a8519df38552c94ec795ef80139a7eec8a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.1-d6410be-202509251013.0.tgz","fileCount":443,"integrity":"sha512-0L5WgaNR7QQx6BlyUJlJLCbjd54ifgQniBEghBrEaStp94VWO5+mJZXi1lcdfofwGLzLHChqc2x1pbtbbuYEwQ==","signatures":[{"sig":"MEYCIQCCqsErK+2JkLcJmOMfLPSaT3GdzBFAazexbDTW9X0xsgIhAPqBN4W8gBnS+O10cpewYoVix/m0Bg0fR66j5MJKn2Ng","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34595315},"engines":{"node":">=18.x"},"gitHead":"d6410be6cea6b7c7163db6f83b83bae2e0552227","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.1-d3c8213-202509250950.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.1-d6410be-202509251013.0_1758795292329_0.7300878031842266","host":"s3://npm-registry-packages-npm-production"}},"2.22.1-c5c726d-202509260955.0":{"name":"@flowfuse/flowfuse","version":"2.22.1-c5c726d-202509260955.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.1-c5c726d-202509260955.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"db2814da7c17d3e550890baf78e5eb89d7f82748","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.1-c5c726d-202509260955.0.tgz","fileCount":443,"integrity":"sha512-CjBVKHAyQPPMWn4PuacjUjJsYpOl5t8yOWgltA0HpMMioGmE08F8q2t1XpH8JDSzHHyd6SEyQvQIq4Pld4QJVg==","signatures":[{"sig":"MEUCIBYzwvYtAKufEhvO5cn8uodVMMpN0cu1m4v0VXVjGlSXAiEApJFhzo2ufjEaEpJ1BxMgm6wWZbw0mnX32abcsYdLBjA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34596051},"engines":{"node":">=18.x"},"gitHead":"c5c726dc844173c827911b6b9412bb743d297a3c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.1-d3c8213-202509250950.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.1-c5c726d-202509260955.0_1758880617107_0.36715444532596564","host":"s3://npm-registry-packages-npm-production"}},"2.22.1-24d60c3-202509261032.0":{"name":"@flowfuse/flowfuse","version":"2.22.1-24d60c3-202509261032.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.1-24d60c3-202509261032.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"aea444ae8951961eb457fb59f6f59c0c26e8c37d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.1-24d60c3-202509261032.0.tgz","fileCount":443,"integrity":"sha512-lknCHVqvaAMaVq7oxKkakKJR9SC4siezY5vzoYAs9EiqqZaWamV+B/B0gt7L3cxal2nTZEaT88oTEIESrYSzlw==","signatures":[{"sig":"MEYCIQCBi1RXOcM71HMHjYTRTR1f4lcAlw3CRH//4Vlzpyi7hgIhAL4A2rK/Fs0bkEdUmQxVwnuPt8J9Lbn/aLlWCGYK9bwl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34622960},"engines":{"node":">=18.x"},"gitHead":"24d60c3f91bc7db5a186840e0449812a88dff992","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.1-d3c8213-202509250950.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.1-24d60c3-202509261032.0_1758882880155_0.7185636439139544","host":"s3://npm-registry-packages-npm-production"}},"2.22.1-24d60c3-202509261048.0":{"name":"@flowfuse/flowfuse","version":"2.22.1-24d60c3-202509261048.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.1-24d60c3-202509261048.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9204d50dc7dd76b51c10cd52d0d70d26c8abf612","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.1-24d60c3-202509261048.0.tgz","fileCount":443,"integrity":"sha512-ZAnVahtNupp40b1aWmxeXpt25uRxEHqaFOxZQz8+ataBhBY48jQKulwevUuwWqJOlJhAAPSk92L6TtvnPZcHkA==","signatures":[{"sig":"MEUCIDIwHWqEOuRapCdInTnthduGlXEWig0WPhF+5HdbdbJcAiEA9ie1EoVkFygt+xZtuOkxBgOxSaWRG62n4soa1lFpJ8o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34622960},"engines":{"node":">=18.x"},"gitHead":"24d60c3f91bc7db5a186840e0449812a88dff992","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.1-d3c8213-202509250950.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.1-24d60c3-202509261048.0_1758883833849_0.04757273698700781","host":"s3://npm-registry-packages-npm-production"}},"2.22.1-4e745e4-202509290622.0":{"name":"@flowfuse/flowfuse","version":"2.22.1-4e745e4-202509290622.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.1-4e745e4-202509290622.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fc953257c78539e0a12a6e6e6ab6c65f089b6991","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.1-4e745e4-202509290622.0.tgz","fileCount":443,"integrity":"sha512-rVT1pMlVKuUrPkhwByEwlY/TuxaMUfnJdBi5+unTFbVIpI7AqxImRmz7srJJAEc/zjgiHO9A1+JB8H8u0gAUMQ==","signatures":[{"sig":"MEUCIQCKbUI5QYV8n+vwXrMZlWG83LFT5ES0tATljNFAMhXjiQIgXpf/9bzplep2r12hNaSGaANiUvmgCfyEpk3V7PESMWU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34622960},"engines":{"node":">=18.x"},"gitHead":"4e745e4c3f3981de5dc9c540a127389962277b1f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.1-d3c8213-202509290621.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.1-4e745e4-202509290622.0_1759127044924_0.4239106639563017","host":"s3://npm-registry-packages-npm-production"}},"2.22.1-35a5708-202509290915.0":{"name":"@flowfuse/flowfuse","version":"2.22.1-35a5708-202509290915.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.1-35a5708-202509290915.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ddc59f0edea38ecc0825497821da1aa066fe639e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.1-35a5708-202509290915.0.tgz","fileCount":443,"integrity":"sha512-ekZYgcdH0DtqsMK0ltsL1dG6Fz94rFoeLTdfcpqcD5UD5cF/KYsOuRlGjAhSP7rVwA5UoC8aY70X+F8+LJ4OCw==","signatures":[{"sig":"MEQCIANEqtrVKmd9RoPKNyMOFfIfquoV9nkPMWD0l/57piX2AiA5Xbw7e6Tbh6o/AT0fWGPSsAcHHSU+aZKmd1NF/138mA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34622960},"engines":{"node":">=18.x"},"gitHead":"35a5708e517cdd826a589019f27040f7b7213479","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.1-d3c8213-202509290621.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.1-35a5708-202509290915.0_1759137455498_0.27480788666479405","host":"s3://npm-registry-packages-npm-production"}},"2.22.1-35a5708-202509291349.0":{"name":"@flowfuse/flowfuse","version":"2.22.1-35a5708-202509291349.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.1-35a5708-202509291349.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"455156845b751e3d27ce8359a71e319372c4d814","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.1-35a5708-202509291349.0.tgz","fileCount":443,"integrity":"sha512-b5UoRS7cEQUErYPmzS9+dI1F+XwcMtkL+/B3+e2/ORnaEYFn7f1kZb43Fx+v/5kFd2yIKR+jkYVu8vjgcV8lkw==","signatures":[{"sig":"MEUCIQDThD7VVeMVjbYnf6nsYYS0rJcWPq+GXeuuu8MYkG9SnQIgVYcCX528BlIfDWT9bRPrXt8yhriphPIl2OFmjCKgoD0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34622960},"engines":{"node":">=18.x"},"gitHead":"35a5708e517cdd826a589019f27040f7b7213479","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.1-d3c8213-202509291347.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.1-35a5708-202509291349.0_1759153845328_0.7482446480272487","host":"s3://npm-registry-packages-npm-production"}},"2.22.1-2ba3929-202509291724.0":{"name":"@flowfuse/flowfuse","version":"2.22.1-2ba3929-202509291724.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.1-2ba3929-202509291724.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b64f08ebbb8885c75d458cf6dcd6e6585104454d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.1-2ba3929-202509291724.0.tgz","fileCount":443,"integrity":"sha512-Ec3pa8sf7fTr3oVVSfv32bvU9voG9n8xYhMBVTbE0vJwZWnuAO6xAl7StFqv/1rO2Kg3gq3Y5shbewCxS4Y79A==","signatures":[{"sig":"MEUCIGNMYfnfHOxbwxuLKyy52kyl7uQjVV6/ZUa/Chx+1iKvAiEA1pw6eFb7ZnrjHqJHVg1cDBZmG32f/43XkVXOjP6zsXw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34629315},"engines":{"node":">=18.x"},"gitHead":"2ba3929f4f70496fee67eb40c0606e28a6d46680","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.1-22fee29-202509291723.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.1-2ba3929-202509291724.0_1759166795810_0.4108347835094772","host":"s3://npm-registry-packages-npm-production"}},"2.22.1-1432fd0-202509300801.0":{"name":"@flowfuse/flowfuse","version":"2.22.1-1432fd0-202509300801.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.1-1432fd0-202509300801.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d2c8408be9dc0b006e700bfd0d307e34e0c5cac2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.1-1432fd0-202509300801.0.tgz","fileCount":443,"integrity":"sha512-dlGHFEjClhsO2s6dhtQhRbzsEeJGNXCihAq5peBS61K1R8eyTbPV8HBrDIVB154LnUUi3M4c3Q7hA/ldNKbHeg==","signatures":[{"sig":"MEUCIQCuvm6o6NwX0rbYzBCw6KFLmPPfN0fNiOoO8w+dZgi/3AIgYaMgKry2NojB0TgrcsPIalclww9yLN5gaUVNdznEyVA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34648448},"engines":{"node":">=18.x"},"gitHead":"1432fd0f3b2eab50223056f944bf5c5d25464663","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.1-22fee29-202509291723.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.1-1432fd0-202509300801.0_1759219389430_0.8521922549554137","host":"s3://npm-registry-packages-npm-production"}},"2.22.1-1432fd0-202509300818.0":{"name":"@flowfuse/flowfuse","version":"2.22.1-1432fd0-202509300818.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.1-1432fd0-202509300818.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1a394e52270349ef509d2bb52c00dacf8021b0ae","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.1-1432fd0-202509300818.0.tgz","fileCount":443,"integrity":"sha512-qUTJhCK2eNYI2Uwqifcv+IvBEd4Aq4yaHe+sb4Q9Oc1Zw/o7aB5LugvOxW4wP2r3Qg4GcwrWwL2DUo/jYmJWMA==","signatures":[{"sig":"MEQCIHltu36z98GbYFajPQpBcBbZaqOweeMP9uI2/ONnlADNAiBjfk3pVh6nR2bKXlMdmTU6Crk0zhkspCQV8/werm0ReQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34648448},"engines":{"node":">=18.x"},"gitHead":"1432fd0f3b2eab50223056f944bf5c5d25464663","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.1-22fee29-202509300817.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.1-1432fd0-202509300818.0_1759220386437_0.12482665685265815","host":"s3://npm-registry-packages-npm-production"}},"2.22.1-e0f5220-202510011131.0":{"name":"@flowfuse/flowfuse","version":"2.22.1-e0f5220-202510011131.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.1-e0f5220-202510011131.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"88a7c50cb503f11b9bbc2dd96992a8dd6b0d5d11","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.1-e0f5220-202510011131.0.tgz","fileCount":443,"integrity":"sha512-sMozSbTd7BBHJ4xV86pMCrbCMeUR4fe2u5Acvbk9vvMdDQjknQWIRZL3ZwtihXfle4081GDbXpyMILv1AxLa6Q==","signatures":[{"sig":"MEUCIQCTzkLoO/tt+u8xiN/qYNEtnPqEdPb5w3USeoahEQtm3QIgan7hWXi/GyhbC8scyixVoq3KXo1dtyfuRxM/iDmcM9o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34648676},"engines":{"node":">=18.x"},"gitHead":"e0f52204ef8b0a53f3f35b410697596ac95d9513","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.1-22fee29-202509300817.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.1-e0f5220-202510011131.0_1759318363997_0.632121774438738","host":"s3://npm-registry-packages-npm-production"}},"2.22.1-2248673-202510011202.0":{"name":"@flowfuse/flowfuse","version":"2.22.1-2248673-202510011202.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.1-2248673-202510011202.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"06c635b82b83e7f108315e0220f0d2aef738df8d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.1-2248673-202510011202.0.tgz","fileCount":443,"integrity":"sha512-SdwRRzOLQExer4C5HNEUv/BvRj3hjq3CITBx3DmBlwBu6BFt/zwZ3rznT6yIfaEnh7bL045JBET8rO+PSJ/57A==","signatures":[{"sig":"MEUCIQD6P0VNoG5dATyJzYVUSs2eWjDHRAilNXL/U3DY+OVSfQIgcp5vtPyTkcoJusJy86Drz+pFX5pGHV2iWnQzRsoqeM4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34654870},"engines":{"node":">=18.x"},"gitHead":"2248673f90a0936208fd503850a1b238fcb3cf75","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.1-22fee29-202509300817.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.1-2248673-202510011202.0_1759320235274_0.2463079378060875","host":"s3://npm-registry-packages-npm-production"}},"2.22.1-a03f01a-202510071255.0":{"name":"@flowfuse/flowfuse","version":"2.22.1-a03f01a-202510071255.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.1-a03f01a-202510071255.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"942c02f865eb4814021f33dfd2f3752144c3f740","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.1-a03f01a-202510071255.0.tgz","fileCount":444,"integrity":"sha512-pdsdm7+TMFFfGOJ0c5CvAKjo6cLZ4B5gP5WLsLZkobWvKahtrPwYMqyPnFr2Le2jAADkDg6Dwqdq9Mg4BKhMRg==","signatures":[{"sig":"MEUCIEnJ612Klcsffmwm81VHEVckmP1U967oAu8xDLQxdV6rAiEAlJKi7WT9DymweydUOEExia/eJzLrHoDKVCfH9GnRjeo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34926291},"engines":{"node":">=18.x"},"gitHead":"a03f01aecf5dd2ef28663ba1d7d5e0e6d1c12d90","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.1-22fee29-202509300817.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.1-a03f01a-202510071255.0_1759841829181_0.8123640508374383","host":"s3://npm-registry-packages-npm-production"}},"2.22.1-4d412ea-202510080931.0":{"name":"@flowfuse/flowfuse","version":"2.22.1-4d412ea-202510080931.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.1-4d412ea-202510080931.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"088f0bea93f965b28c531cbc360880e3147b70ac","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.1-4d412ea-202510080931.0.tgz","fileCount":444,"integrity":"sha512-dllEX5xsCYo/rqVQ9nERwQAA7rsVTzAsISaYkzWrRqxNmeMvjch0wd75xuQ+o9YH7DE7ETvkFKMw1uV48WTmjw==","signatures":[{"sig":"MEUCIQDf59JoG7z5PWCCjgG8VvUfV5FIv4xNh6FkwEuQL1QsfQIgFz3lBlY5v0RHHL+SsUf7EnoUtWuWVqt0Yn1wHuKdxGo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34966316},"engines":{"node":">=18.x"},"gitHead":"4d412ea4a8e79acd550fc35ded39a22f74754586","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.1-22fee29-202509300817.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.1-4d412ea-202510080931.0_1759915970165_0.2301333228556095","host":"s3://npm-registry-packages-npm-production"}},"2.22.1-b8e2af2-202510081105.0":{"name":"@flowfuse/flowfuse","version":"2.22.1-b8e2af2-202510081105.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.1-b8e2af2-202510081105.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"09de7dc3efddf37d3d521c4ca6721886faf62f31","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.1-b8e2af2-202510081105.0.tgz","fileCount":445,"integrity":"sha512-Z6fTgpEHLpo6UTkAAuFIpVzgqzQxiGJDvVgXsP+uQgGqRVFHUSZVUwXmaKfJgP0q8rbJE3IxALldscXIayLqkw==","signatures":[{"sig":"MEUCIFwwioI+59+9TTuXeTiBwsoAcKWVEh9aRq9Vxas1HockAiEAxzpeKGvM/iBgMo/38CeCop0muneVcjweGNf2KbJbZXI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34968234},"engines":{"node":">=18.x"},"gitHead":"b8e2af2f6af7350b2d5d3b5c724fd01745d2a101","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.1-22fee29-202509300817.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.1-b8e2af2-202510081105.0_1759921646427_0.19811542969998497","host":"s3://npm-registry-packages-npm-production"}},"2.22.1-f3680d8-202510081450.0":{"name":"@flowfuse/flowfuse","version":"2.22.1-f3680d8-202510081450.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.1-f3680d8-202510081450.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a85e8d257ad3365bad997e9ee01e28ab6cd6c162","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.1-f3680d8-202510081450.0.tgz","fileCount":445,"integrity":"sha512-hX7fCGhbL/a5/hEMEnC79a9bPzi9dqhOEeJ67KFEVwIasg/FVB9bfbKWoQMNsI7kn/0yMRXN5B2ElKbbEJvWEQ==","signatures":[{"sig":"MEYCIQCpH3b2MpQ7IDAZVCtnmAMBreArj6S+3QEUdp3RqqoP1wIhANVqlMHiBGgbla1S5VDVWPU/qTaXj0lIFwD1Rs/X78Kp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34976091},"engines":{"node":">=18.x"},"gitHead":"f3680d837dd477406b25e3fb43af1fa647a7cae6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.1-22fee29-202509300817.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.1-f3680d8-202510081450.0_1759935138557_0.43948974475013647","host":"s3://npm-registry-packages-npm-production"}},"2.22.1-f3680d8-202510081510.0":{"name":"@flowfuse/flowfuse","version":"2.22.1-f3680d8-202510081510.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.1-f3680d8-202510081510.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4fba796425eb96c2545f2cae4b686e95193e03a4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.1-f3680d8-202510081510.0.tgz","fileCount":445,"integrity":"sha512-bY3MGOhlEkiz7QFLtSRfvz834lkwGNqx+fjIfMr3cTSW4VFqou8kiFH8jXPIcsbVmwkjn1IwlIGQw3z64wlVrA==","signatures":[{"sig":"MEQCIGGD4N3eAP1RNXjOtFE/sU3iUAINGDAW0NAgk6UhjcBUAiBKEcNgZ1rqXBhb0eof71cPSlVPqdp3D/BZJothkDSz0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34976091},"engines":{"node":">=18.x"},"gitHead":"f3680d837dd477406b25e3fb43af1fa647a7cae6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.1-22fee29-202509300817.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.1-f3680d8-202510081510.0_1759936357734_0.7158737901717462","host":"s3://npm-registry-packages-npm-production"}},"2.22.1-8b1f95c-202510100812.0":{"name":"@flowfuse/flowfuse","version":"2.22.1-8b1f95c-202510100812.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.1-8b1f95c-202510100812.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0bb7421da9c06ca1a6aa0cd1132e84be36cef573","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.1-8b1f95c-202510100812.0.tgz","fileCount":445,"integrity":"sha512-pgzu4TA9cMXejXR1H1lxEpyWgeaG6wOtB8uk1wjhlO6Aw8Mppk9ouW1gmEJCEUCtOQmnHLkaVJe1tL4wiexTjQ==","signatures":[{"sig":"MEYCIQCyA3if1SaQZubjcUHY7HA6Fg96zpKOoWiaEjsLwTzQ3QIhAJDUTvt0l8tVIMmqMGALacTx4NJXcN/hj7dn02YIAeLc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34996279},"engines":{"node":">=18.x"},"gitHead":"8b1f95c8314b7e00dab86b232e55a62076b4e9e2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.1-22fee29-202509300817.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.1-8b1f95c-202510100812.0_1760084069197_0.06971566380790462","host":"s3://npm-registry-packages-npm-production"}},"2.22.1-b1021e3-202510100815.0":{"name":"@flowfuse/flowfuse","version":"2.22.1-b1021e3-202510100815.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.1-b1021e3-202510100815.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ecd8af77acc74ac28680c1cfaedb7420e771cfd4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.1-b1021e3-202510100815.0.tgz","fileCount":445,"integrity":"sha512-vX/omHgu6+fE+O1IalghJYbOPm7kpSt1645w6l8qn+pbkfqapBLeFELyCPZj/6jSkbhYXClJTRBEukjJIL1KJw==","signatures":[{"sig":"MEUCIBdIm6zns24C4mtBBUwpRxey2mrAvPs4A4D3BwZwz4rCAiEAu4lSjffkMUNynPkVoUhGDKD/nLuMp2C726fxRfD8A/A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34999607},"engines":{"node":">=18.x"},"gitHead":"b1021e39c80045620685effaba79aa913d33f63f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.1-22fee29-202509300817.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.1-b1021e3-202510100815.0_1760084209663_0.7370545693409407","host":"s3://npm-registry-packages-npm-production"}},"2.22.1-b1021e3-202510100835.0":{"name":"@flowfuse/flowfuse","version":"2.22.1-b1021e3-202510100835.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.1-b1021e3-202510100835.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fce081fe0acd8b9ccd6b1b0d6499b59baebe83ce","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.1-b1021e3-202510100835.0.tgz","fileCount":445,"integrity":"sha512-Z/0klD9sHVvWcIlyTJPCNAgql93bv9vqnb88I0lHRlthmnt6V7vXBM+TIC8TjZ3AOjPejYMHIFB6HF+1LL6e5g==","signatures":[{"sig":"MEUCIDco4wiMoiT0UaKSFOKRzA6NGbwAAvBrxsBU/vvd+1RJAiEAw0b3npD8fDZGDWBVOqeps0HS/OiZHoaMXj2EtMmbpv4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34999607},"engines":{"node":">=18.x"},"gitHead":"b1021e39c80045620685effaba79aa913d33f63f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.1-22fee29-202509300817.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.1-b1021e3-202510100835.0_1760085451706_0.7266772456576882","host":"s3://npm-registry-packages-npm-production"}},"2.22.1-6bec3e2-202510101003.0":{"name":"@flowfuse/flowfuse","version":"2.22.1-6bec3e2-202510101003.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.1-6bec3e2-202510101003.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"acba0ed5c755e71e648fde14f344861972d15eb7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.1-6bec3e2-202510101003.0.tgz","fileCount":445,"integrity":"sha512-RKOzTM5RZebZXE1QyATUC7oAis/o1wBvNo+wgUouz5KzTct/Wws8kHIRW7mSrIBB70iWo1eM4FcxyW1IfEJufw==","signatures":[{"sig":"MEQCIAgfbyHQyDwbY7CSwA+EwF5SuqJoUdWje7F9PycqKQz0AiA1VYcADW8/qdmRa/SskL03fcmORmQtoQau8Q7jVUv9oQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35001343},"engines":{"node":">=18.x"},"gitHead":"6bec3e25542242cd1f9374e406afb9b8fb1544fb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.1-22fee29-202509300817.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.1-6bec3e2-202510101003.0_1760090735911_0.5747709949797384","host":"s3://npm-registry-packages-npm-production"}},"2.22.1-6fff9bf-202510140813.0":{"name":"@flowfuse/flowfuse","version":"2.22.1-6fff9bf-202510140813.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.1-6fff9bf-202510140813.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"62a2f24fc7422a9f7c02692e3db7eef7a42be0c7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.1-6fff9bf-202510140813.0.tgz","fileCount":445,"integrity":"sha512-ugybesnG0hzz84h+edECLVXTMH6tlmTmifGXv2whpQmoNwbNlFrvI+36ndQHbYH8sDrSp9nJmSFdWmY4U865VQ==","signatures":[{"sig":"MEQCIEqhCKELc+x+qg+iJZOVWAvOzig3hHz4kKJEvq8IJ2JqAiBiwTPUD+qNrxV5ljhON+d0EXK0GuAnaY5qfr1sxCtBRg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35001640},"engines":{"node":">=18.x"},"gitHead":"6fff9bf7ec4410a96aaf23fd564b6d0bfb13baa3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.1-22fee29-202509300817.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.1-6fff9bf-202510140813.0_1760429718079_0.9211700329261883","host":"s3://npm-registry-packages-npm-production"}},"2.22.1-6fff9bf-202510141216.0":{"name":"@flowfuse/flowfuse","version":"2.22.1-6fff9bf-202510141216.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.1-6fff9bf-202510141216.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fb19864af3a476d2611fe05264c1c77aec02854c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.1-6fff9bf-202510141216.0.tgz","fileCount":445,"integrity":"sha512-G6MrkYAmGcDk/JFI0iDM3KV/f1e+7EJtudOEjDjZsAmvXPNi0K6yImW/DU77arw/Yx8xQ2NgmGy4T882MdOqfA==","signatures":[{"sig":"MEYCIQCieoFjkqV+br1bMtrzNJcXaSYZwLDY4YtUWvWHRDM8FgIhAIGo/plGh2Ra9mExqtrwO0zL/OlMSuvKaXzZoElxs0sm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35001640},"engines":{"node":">=18.x"},"gitHead":"6fff9bf7ec4410a96aaf23fd564b6d0bfb13baa3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.1-22fee29-202510141215.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.1-6fff9bf-202510141216.0_1760444284792_0.8571539346523165","host":"s3://npm-registry-packages-npm-production"}},"2.22.1-6fff9bf-202510141225.0":{"name":"@flowfuse/flowfuse","version":"2.22.1-6fff9bf-202510141225.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.1-6fff9bf-202510141225.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"12d2deb1af4d195c0e532e53c288642ed6702a6a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.1-6fff9bf-202510141225.0.tgz","fileCount":445,"integrity":"sha512-LRjX22Q0hurRI3lq5V1UmsVisq/+ybzDHUvDARFsq3ztMtpSQeGUCzdHFPUL9AYJy0aNkt65QUNVHW+WiPvGyA==","signatures":[{"sig":"MEUCICxywqEgFQBd87uQWTkiSGnswlwZdAjlfdAZc8IO9LAPAiEAvg27cObSa6sHffJc8/8zsUbaPHCg/HzhXW8sNt2GWuo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35001640},"engines":{"node":">=18.x"},"gitHead":"6fff9bf7ec4410a96aaf23fd564b6d0bfb13baa3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-60aa65d-202510141224.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.1-6fff9bf-202510141225.0_1760444805432_0.512548619676594","host":"s3://npm-registry-packages-npm-production"}},"2.22.1":{"name":"@flowfuse/flowfuse","version":"2.22.1","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.1","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"40ca7cc7af19400cc7bb558255f50516d7aa49ef","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.1.tgz","fileCount":445,"integrity":"sha512-ifE62gT0PFji3qpa5MROhU0dKCINFcAtebqxJeSis5dilAxt9XOzHhQbREzkylXM4uA3y7I4hV0Txgyxt8dqkw==","signatures":[{"sig":"MEUCIDzTDIQuylJbmfkveWE0iXlNozBU6ibKRWd374BigMzdAiEAqQiOfP85m2VZcxmk8OlKTvmfuZr9dpoYoLYur6p+zTk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35000454},"engines":{"node":">=18.x"},"gitHead":"2501a09e30719f15d643a6938894ad4fef45dcce","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.22.1","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.1_1760445362662_0.35152549995248483","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-abd054c-202510141239.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-abd054c-202510141239.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-abd054c-202510141239.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9ed0e195a05d8598dffb38a632414ac378d90e6d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-abd054c-202510141239.0.tgz","fileCount":445,"integrity":"sha512-VoqVdyN8lQtVTqqjX53YM3qDd/He7R954XLFESIB7AUOniw266IIjALQMgrluYHCdEGWJuDGKbQDpvjadmObPQ==","signatures":[{"sig":"MEYCIQDfnttrv0NonGBdzfX9Vc+Mi35GWzMiEB198fUwoigbaQIhAIjk9B5urAVOgZ9PH709CDSszHXs4ufKAqCGJJz8kymQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35004494},"engines":{"node":">=18.x"},"gitHead":"abd054cd1e439b4f7fa290698931765eed1e73a5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-60aa65d-202510141224.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-abd054c-202510141239.0_1760445649300_0.6484296316389055","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-abd054c-202510141258.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-abd054c-202510141258.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-abd054c-202510141258.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0cc2e6033a6229acb7dff1fd89ad50eb37966ab9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-abd054c-202510141258.0.tgz","fileCount":445,"integrity":"sha512-OhUgOo9cLW+gqgujYdeRlGRUF+MdAdcINGn0O9CIMhRqqIudlUrIJe8uyDuONJO12kI++muJkvSZItcxdIvm9A==","signatures":[{"sig":"MEUCIC4rwB1IIzBl3Iy5FtrLLnVwKLiq61eycvC3x3r1XTKVAiEA0y4LwfcpVGCxGClCvFNeLhy6LS7odH+2VkwUPTnaCPc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35004494},"engines":{"node":">=18.x"},"gitHead":"abd054cd1e439b4f7fa290698931765eed1e73a5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-60aa65d-202510141224.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-abd054c-202510141258.0_1760446807936_0.03611203943649466","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-9bc8ebc-202510161008.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-9bc8ebc-202510161008.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-9bc8ebc-202510161008.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a18c7bba794d31545ef6895252d4a3333e89756e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-9bc8ebc-202510161008.0.tgz","fileCount":445,"integrity":"sha512-roHotFGLgypp2DUX2Ff2Z7a6F+zYSEOEir8gc36N0BWx44WaAEbH6XJ9QXc2w5+i7XB+xr0+VkEM72oXe/k02Q==","signatures":[{"sig":"MEYCIQCoyiYfo/ZQWxKN2TGs/L3QyVjhegP32IVSd8iAj21RoAIhAPyYGoOAQtBzItKxXv0QywuU1CYWKjfwmDqsmiBpLWaV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35005974},"engines":{"node":">=18.x"},"gitHead":"9bc8ebc27acfd35784c052219482d18c84cb089a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-60aa65d-202510141224.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-9bc8ebc-202510161008.0_1760609391744_0.46444877454487155","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-f5a397c-202510161035.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-f5a397c-202510161035.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-f5a397c-202510161035.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2daa2acf7458ad53f806df435fffef8312fe3cca","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-f5a397c-202510161035.0.tgz","fileCount":445,"integrity":"sha512-r7NNJ5Vb1Bn6myLnGcVIXDflDrDdCLt3xX1QsSVr9YOdDYF/Zn26F2xaK7i1SmTmtSDk2dV53rAPxDw5SX68UQ==","signatures":[{"sig":"MEQCIAvjp8X6gfUCgZJr/6AhlMzCXXK7Knp815ANhEyb/7o6AiBWh3vi8YFY4mGm/sUTyZkY5uZN3UIKMSKSgH8rrky03g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35008450},"engines":{"node":">=18.x"},"gitHead":"f5a397c9f6f9726bcf5e0cdc4a410b801ca0d7ce","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-60aa65d-202510141224.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-f5a397c-202510161035.0_1760611037714_0.9145211733366263","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-f5a397c-202510161055.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-f5a397c-202510161055.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-f5a397c-202510161055.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3f2b777c45ed5499ceecff7bef8b0a778579af6b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-f5a397c-202510161055.0.tgz","fileCount":445,"integrity":"sha512-vRAEbA1EPq5eDB6W7KIPoJOl+qULzwzzK6wvzXLwk8UyqSVLbsNIRetMaepvfjgVvjWw7O+kVAJ5egIZ0mQNcQ==","signatures":[{"sig":"MEQCIE3CkpuYPtpvnZ6qHEtMPCKciZfE2kQwYP5lscRJNwJtAiBFf3e0InS/xknsfdUQHeB3KC2tGhKVM3YKPPSZgQBuPg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35008450},"engines":{"node":">=18.x"},"gitHead":"f5a397c9f6f9726bcf5e0cdc4a410b801ca0d7ce","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-60aa65d-202510141224.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-f5a397c-202510161055.0_1760612241755_0.6998155235428136","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-550189c-202510171024.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-550189c-202510171024.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-550189c-202510171024.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a50e504a403aaa8d7093662d3ee9e7e04e726d42","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-550189c-202510171024.0.tgz","fileCount":445,"integrity":"sha512-KtHomtdfjX4JUexBeYKxrTFgrMrGe4KsvgZWRRp3sxTgTeUROPTTTCsY5rmbWnKD4lL+z2sX92Jy1XfGB5dE2A==","signatures":[{"sig":"MEQCIGec7gBmJ9BSsZJ88eoaQvJdqKZucbfbdgpMdyWHtgq/AiBq5wrCRgM9vZCatXCNsoUCXyaQ5T73+57SXNHxgT9fVw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35009581},"engines":{"node":">=18.x"},"gitHead":"550189c120170e28c77ce7abae3471df0f841837","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-60aa65d-202510141224.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-550189c-202510171024.0_1760696755254_0.9333524395691328","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-9cfa66d-202510201315.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-9cfa66d-202510201315.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-9cfa66d-202510201315.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"751afc61e01b7bb47a48855825c31867c995e602","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-9cfa66d-202510201315.0.tgz","fileCount":445,"integrity":"sha512-lyuYz1E7uvZ+HWeXOcxHDQemmCNAb1sgeHV3LSRr0NJypkUPxRSaFywXFMGiiGJDGF0QJfwlEyIC3x+VH99HPg==","signatures":[{"sig":"MEYCIQCq5DtXE1I5yw7ZtBANEwEjGhG7MqbWhmCFBy9gtQ6nlAIhAP4z0whtog6R4KG99wWnOoZebNv6IfgFQjz3tutKPJSn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35027825},"engines":{"node":">=18.x"},"gitHead":"9cfa66d48055be75aaf567093d7d774939f93aa9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-0a7240c-202510201315.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-9cfa66d-202510201315.0_1760966261607_0.5687582838729313","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-9cfa66d-202510201318.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-9cfa66d-202510201318.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-9cfa66d-202510201318.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ae1ee27960ade4c92ae3e9dafa1bff9798f68fe3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-9cfa66d-202510201318.0.tgz","fileCount":445,"integrity":"sha512-vLSXsdKEbL/L67UbRtGR5dHEkbAsKb+bTnrVuj/sF863hx4QhWv1KkuRZt5t//JGSTc1StwhEYZt82JDLV5KLw==","signatures":[{"sig":"MEQCIF/L8DMCKpl5HvhnX4RGL8X5OvHidy8wO6RePlRWEFVHAiAFaN4ppW5rLCu6Ke9Sgv7r8uCRfj1YW5PAuUMxEdFndQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35027825},"engines":{"node":">=18.x"},"gitHead":"9cfa66d48055be75aaf567093d7d774939f93aa9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.4.1","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-0a7240c-202510201318.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-9cfa66d-202510201318.0_1760966430172_0.6465381977152755","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-e124181-202510201707.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-e124181-202510201707.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-e124181-202510201707.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ecc11a37f059e73f1f01587ddbd2fa476944b29e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-e124181-202510201707.0.tgz","fileCount":445,"integrity":"sha512-+8PpADL/CmmXlIEzCB+xwc7n3xS1mVR+c+JUFiqueKpVdvSjvC/kNlEUSDc6PpNYAD1dvAeH8G9sdMubGYa2ZA==","signatures":[{"sig":"MEQCIFoH0DAmrr2yNUEuy4jBfkxCNQZ3EuOqMDXFU0ueRt0PAiB7VRYKFCxtyK6f4VM9BCrfCtE/lHyLkaxoaStbgcnwxg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35063089},"engines":{"node":">=18.x"},"gitHead":"e124181ad00a70a8a710d4e2d6077ea88b504448","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-0a7240c-202510201318.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-e124181-202510201707.0_1760980131133_0.7397569811143525","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-0ea75f5-202510210922.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-0ea75f5-202510210922.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-0ea75f5-202510210922.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"abc3ee7402738897ea6ae32b872c12b9a1504a74","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-0ea75f5-202510210922.0.tgz","fileCount":445,"integrity":"sha512-VflkYGyAjC6BrbuFazKgs93xdCOu9euQdhAW1EN74jPbisRcRA+bipGh0FipGI5sb/EyOk5C4XQmvBPjyFtCKQ==","signatures":[{"sig":"MEUCIBJ0HJqV6EiZL1881Fn74IUkRwlcMKqsVfQgZyaV4k3qAiEA2gPlppC/aDEw5CZ+IeZdTFm+A4uej2ua2rW70aS90ps=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35063089},"engines":{"node":">=18.x"},"gitHead":"0ea75f5749982f2d08939ec8deb1999649d2844a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-0a7240c-202510201318.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-0ea75f5-202510210922.0_1761038664648_0.4559276421700227","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-0ea75f5-202510211107.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-0ea75f5-202510211107.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-0ea75f5-202510211107.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7b4f0fe3e440dfa3327fc91da3ff436cbe0465ac","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-0ea75f5-202510211107.0.tgz","fileCount":445,"integrity":"sha512-28E16XhO7LMLENsDbQV260yQ3BLpn6va/4hk7TRxAb16aVC50dEn5sCNYLkED03CjOwgyEfQtbe4kOkdXAjFuw==","signatures":[{"sig":"MEUCIQCLIL/uBNju7awOCk84QOuJV0nJKDRcZAJf9pzEb6TCJgIgFSXihhCJoFuSn/iG9dzuLvvuIwH6YW0W8HlfLVcDs2Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35063089},"engines":{"node":">=18.x"},"gitHead":"0ea75f5749982f2d08939ec8deb1999649d2844a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-0a7240c-202510211106.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-0ea75f5-202510211107.0_1761044934876_0.6023501770433648","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-5e2d5e5-202510211225.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-5e2d5e5-202510211225.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-5e2d5e5-202510211225.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7f279bf4b495f3faeac5e923dec590dd095195d6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-5e2d5e5-202510211225.0.tgz","fileCount":445,"integrity":"sha512-tcjtfJ2c6W0JanhJccyLjuxrzGAfpG1ERX7Kv3/Kncobm2YsyIFV3iMTyannOhmLegUBfhe4pw+sfaQaKSCsEQ==","signatures":[{"sig":"MEQCIC3Hfjg5+RUOCd6pOITrQKl3vJo4hMbx/bYKnZk70zd6AiAxx7L4sKSduQQBlpWK10gEN/tAAUiIrgA7loVjW50bgg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35064901},"engines":{"node":">=18.x"},"gitHead":"5e2d5e5e865050731eecfc467cdef9a32b187a87","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-0a7240c-202510211106.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-5e2d5e5-202510211225.0_1761049638129_0.4614951073547908","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-889d875-202510211305.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-889d875-202510211305.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-889d875-202510211305.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ba6fe59a76436e90bdb81af01f1c595bc6c4cb90","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-889d875-202510211305.0.tgz","fileCount":445,"integrity":"sha512-rCR3CQAz/CwmqfbJv2sT7Vo27tQjxnQR4BuuMNtakC8H+Dg7k3/uDTmSlGGcPCQ82qnMMZjhciJeOXibcySKEQ==","signatures":[{"sig":"MEQCIBjWuEA0S+f6BTGlHl9ffnhxaJnQkdj9mU9UcaylA9n9AiB9UmzjFTFDYB19QTEpyN7MKhsW0Q0Y6BRGo5Prceuqvw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35186179},"engines":{"node":">=18.x"},"gitHead":"889d87532aff6c1bf7c6784181363c5e3e2f0031","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-0a7240c-202510211106.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-889d875-202510211305.0_1761052012937_0.8924434028726989","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-329adac-202510211417.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-329adac-202510211417.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-329adac-202510211417.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"037476d19ebc2399984372df3cb78c6edd336bce","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-329adac-202510211417.0.tgz","fileCount":445,"integrity":"sha512-Pg1/Qc5J0gf0PcIq4BOo8+pMLFvzO9euha8u+WG/8olj1p4xKxuFl8kczf7yoeeDVrTRiHbKjENky0kisWUGXQ==","signatures":[{"sig":"MEUCIGB6D7OROLzrujkO84cFWoEHum+FxRZeYzCGM5ReQ/eVAiEAse9KWF5Q/qLKKuWsR6Z1hCZFMA6Rjv5+Rhti5pyYn5g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35249795},"engines":{"node":">=18.x"},"gitHead":"329adacf19793b45f14b4a69dd7ec750372a622f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-0a7240c-202510211106.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-329adac-202510211417.0_1761056344100_0.8853305742546675","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-1b13a0b-202510211518.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-1b13a0b-202510211518.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-1b13a0b-202510211518.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0a99811470a6b77559eb731b33ba5536051f05aa","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-1b13a0b-202510211518.0.tgz","fileCount":445,"integrity":"sha512-vQul9QJOT5xPqew9fnJbN8yjQwU7Rym4Q3XVeuGjU9MGfwdEzdc/MHruWabvN/bAyJGQur15MwvPMg/Z8bu6QQ==","signatures":[{"sig":"MEUCIEa2MoTodEunEUKn/FTRoeChJq/p6p7Wpll/e9SHS8FSAiEAi/527JsVY1enUB/yL3a25+3LdB6fRjHbratmOE7gs5I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35249983},"engines":{"node":">=18.x"},"gitHead":"1b13a0b34ac2626a0e4afd6cabda89847dd772a2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-0a7240c-202510211106.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-1b13a0b-202510211518.0_1761060001160_0.8582259402204695","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-1b13a0b-202510211539.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-1b13a0b-202510211539.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-1b13a0b-202510211539.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"54a2e34ae6d103d29f5bfc7c01a64d7636ddfe90","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-1b13a0b-202510211539.0.tgz","fileCount":445,"integrity":"sha512-Jy2YOjCmpg9fNqjj3uqy8LOX6GW/M8iQCHw2UqV4OECIHI0rKArBZ4iHZDMY2X1URVtmDgyTESlTIVmmCZ24QA==","signatures":[{"sig":"MEUCIQCaoTJxChRC3JIAzt4HzeuaISDxMTEudZROehBZElrqSwIgfQ4fEqWHgXXyV0kx7jy6qyIfJb0YW7JzhouetQSN9ho=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35249983},"engines":{"node":">=18.x"},"gitHead":"1b13a0b34ac2626a0e4afd6cabda89847dd772a2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-0a7240c-202510211106.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-1b13a0b-202510211539.0_1761061244261_0.8273281460355848","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-1b13a0b-202510221045.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-1b13a0b-202510221045.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-1b13a0b-202510221045.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dbedc966e445d9ed2b19da4716ae7c71bce700c8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-1b13a0b-202510221045.0.tgz","fileCount":445,"integrity":"sha512-Dds/zWCkFktFWzVZxbTEpOGcaQOR+lKTFs1ly1mH8QRy5SLEI9on1k1ealKA10JCr5i5f1VqLgd1R1uKrOQO1g==","signatures":[{"sig":"MEUCIQCPiNtkry/yTH0akKKgrt0IxFbinHgxVDoU5Ias8lVKtAIgak4LOHLrPWn4/huQgHJB7IFkGo0H1Fd4/zNtXY33Zjw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35249983},"engines":{"node":">=18.x"},"gitHead":"1b13a0b34ac2626a0e4afd6cabda89847dd772a2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-0a7240c-202510221044.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-1b13a0b-202510221045.0_1761130026617_0.06219532093748259","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-1b13a0b-202510221122.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-1b13a0b-202510221122.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-1b13a0b-202510221122.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"12824bd1c1ffc523c6759a3d33af006d3e132234","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-1b13a0b-202510221122.0.tgz","fileCount":445,"integrity":"sha512-/AdIfpmPr4GWwofL+6qKoByD5QMqr8w73wE/0e4+Ntel4tuH54BgDeI+tJosebR7OknCvrQnhprRDbIQY16wDQ==","signatures":[{"sig":"MEUCICjUVfEfboExUv0sYDcnRfRdD3VFPW4j9xmJQEVtar+2AiEAtHGa2KJopcALhdMrMa9cYxXzKFMDoL/LpmLeVFleOKU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35249983},"engines":{"node":">=18.x"},"gitHead":"1b13a0b34ac2626a0e4afd6cabda89847dd772a2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-0a7240c-202510221121.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-1b13a0b-202510221122.0_1761132239609_0.488728620009685","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-0680b99-202510221548.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-0680b99-202510221548.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-0680b99-202510221548.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"03d13a33e92c49d65e178e6ed50d7d439c632177","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-0680b99-202510221548.0.tgz","fileCount":445,"integrity":"sha512-UPRw1wUOgKfzmMx5SOzXPVbe3eDWXYgeQZM2b6Zm1sutVGc8kvf8z8Y79qUPyXejE6e8Hy3LtVWrav2MuNoYAg==","signatures":[{"sig":"MEQCIHeKELIgzZ/3Df4nvoHCfDywKageFdrviP5kowMtFl30AiBCDB9A+LyYuOr594F0r0N8roZ0qg5KDO1siVcXUJ/igg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35249983},"engines":{"node":">=18.x"},"gitHead":"0680b9961086a70ab2f32bbdc2ed0e1625010fd3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-0a7240c-202510221547.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-0680b99-202510221548.0_1761148221288_0.20479740704637606","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-0680b99-202510221648.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-0680b99-202510221648.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-0680b99-202510221648.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6d33d832fc2c9042e5a6e8031e26c8a6b2fe10f6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-0680b99-202510221648.0.tgz","fileCount":445,"integrity":"sha512-RaqVlhCoWhOkQEIyqJDRaHLTTtYL1EwiLQdMFjJ1CxSg7LVSzZRw8AfLGyRvmNWf2MXw3a9gVT/yjC+M9HeJZQ==","signatures":[{"sig":"MEQCIHy2Vd3saY1JYkAe2zc+BbBTMJV0PNFgBkle7JE7APs5AiA8uqsccTYmSI1IbozKA4PYz640YprNCXHUud8eaKVSGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35249983},"engines":{"node":">=18.x"},"gitHead":"0680b9961086a70ab2f32bbdc2ed0e1625010fd3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-0a7240c-202510221647.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-0680b99-202510221648.0_1761151814452_0.08566654098235604","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-0680b99-202510230818.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-0680b99-202510230818.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-0680b99-202510230818.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"58859bb42cc23b9ba19a087b67cf7c92c11d01af","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-0680b99-202510230818.0.tgz","fileCount":445,"integrity":"sha512-VQIKEVQVYFQKJcJTWIPO/ASNkjzSzA97SVhfNhEShngKHuOtrc2xTT+XWmuAawsEFleK0DzMVOT4MEPePcGd6g==","signatures":[{"sig":"MEYCIQCz2fo9zkd/JfBoXhuv9StMRb1KquY3Qo39PcUpxt6tNAIhAPzYSf28lA4zT/Z/NLVJIpbXn0ahXHoIFCiqi7x8Uu6c","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35249983},"engines":{"node":">=18.x"},"gitHead":"0680b9961086a70ab2f32bbdc2ed0e1625010fd3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-0a7240c-202510230817.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-0680b99-202510230818.0_1761207608463_0.39234517909017974","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-b918914-202510230849.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-b918914-202510230849.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-b918914-202510230849.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4c6dd28b7c8b367a87cb5b15929c5ce882729bea","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-b918914-202510230849.0.tgz","fileCount":448,"integrity":"sha512-zxqdZm/w8vABfvTJ1RQWxwADzXYFBw1iNE7MrrW4/t2VCye6ZBzY0hoxpHIiP529mietCGbqiUrZBn184KZnmA==","signatures":[{"sig":"MEQCIEO24Phwm6jjmFJeHlWz99yP2uqIlt+CJEZ7AYfemrFcAiAV8i0QRhwLfWyzmV6ADeASA+zRG8nvobotPyvG1NlXsA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35253856},"engines":{"node":">=18.x"},"gitHead":"b9189146e10f3e6af198a447ea5709a8b78d6685","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-958d1af-202510230848.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-b918914-202510230849.0_1761209444616_0.45551657651381494","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-b918914-202510230905.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-b918914-202510230905.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-b918914-202510230905.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7969e27b43386a9b66f816794b059bd310943dc2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-b918914-202510230905.0.tgz","fileCount":448,"integrity":"sha512-Cf5GZ+TDmkiq4OCAbBhxcjI7BxR6Lsu/F/TgPbC5h89q/nKSTfYKdQbtF+jUDK950DgLXV7tlXmNODRd411EXQ==","signatures":[{"sig":"MEYCIQDexeGka9Z1xqhRFBxU2cvFSpXbiceZ+xylTSAoP+QTXwIhAPpfM+bH+FDiL/drlzSBI6P1VZRPhVxNX+/G8AKGyYHh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35253856},"engines":{"node":">=18.x"},"gitHead":"b9189146e10f3e6af198a447ea5709a8b78d6685","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-958d1af-202510230848.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-b918914-202510230905.0_1761210416405_0.310436738164257","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-b918914-202510230929.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-b918914-202510230929.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-b918914-202510230929.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3847704d90441aa90de65f90fab47e5cc2a08af1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-b918914-202510230929.0.tgz","fileCount":448,"integrity":"sha512-qo62vEFCYdlAkUrYwAQkL++gn9aAuOaGEtiN+IdNE7E00zoQ/dJSn/gabelNIaIXDufc35ZhQbqPNuXZKi9oxg==","signatures":[{"sig":"MEUCIQCQ/RvREMiNME1Xpy+mSEhX6CtAE+DI1Oqk2jAcOXNkXAIgOh8PkQOdRlA0o0csVnAo9pTHRrXVcGIqDnyRgy/seFY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35253856},"engines":{"node":">=18.x"},"gitHead":"b9189146e10f3e6af198a447ea5709a8b78d6685","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-958d1af-202510230928.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-b918914-202510230929.0_1761211846069_0.18920495360858425","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-97e9b59-202510230935.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-97e9b59-202510230935.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-97e9b59-202510230935.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f7c94618acb216fb477bee470c3f1eb08eb689c4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-97e9b59-202510230935.0.tgz","fileCount":448,"integrity":"sha512-8U8yPrtg6mG2KJps/MrGKDa5AobK4aG2lzlA8+JTfkZBD7qYxviYls9908tMpHKQbA72RL0rT0YvsJ+hUTMWnQ==","signatures":[{"sig":"MEQCIH+nxXbDWOHo/sCN4Mx3KCv9YBTUzUTiMxA1VrMuEgtTAiAHIxoCrKhpe/pYCMY8wkvxL+Dy7edHq0zVg76MMHeoeA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35253856},"engines":{"node":">=18.x"},"gitHead":"97e9b59dd76fc9e1eb9eeb62a19566ea3dd8b628","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-958d1af-202510230934.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-97e9b59-202510230935.0_1761212246147_0.1453968471279612","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-97e9b59-202510230942.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-97e9b59-202510230942.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-97e9b59-202510230942.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"114862ccc131e533821ee619ab761264ef5d4f64","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-97e9b59-202510230942.0.tgz","fileCount":448,"integrity":"sha512-sfTHV9gCu/FrBe0QZxbZIeuMQDGZu3Ve7Ety17MM4lP05bs/8gl4xeaeAKCVfqmNbObo5fv9Xau5UtF4wEEwpQ==","signatures":[{"sig":"MEUCIQDYPtw3d/kblOPhxKcrqcsM+TBWyLi471+3BDdmi8S7EQIgXFnH5AgMzU78pSjO0l/DfMBcZ+UTIW+OA35Gs924hmw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35253856},"engines":{"node":">=18.x"},"gitHead":"97e9b59dd76fc9e1eb9eeb62a19566ea3dd8b628","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.22.2-958d1af-202510230940.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-97e9b59-202510230942.0_1761212624158_0.818085646928923","host":"s3://npm-registry-packages-npm-production"}},"2.22.2-97e9b59-202510230946.0":{"name":"@flowfuse/flowfuse","version":"2.22.2-97e9b59-202510230946.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.22.2-97e9b59-202510230946.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a7aae3575f4b02902cecc5c2d15ae43563c859dd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.22.2-97e9b59-202510230946.0.tgz","fileCount":448,"integrity":"sha512-2eM7L9yr/nroFwM3FodQvxFIlmgflNuSX6HUIzNmG5+criedZEceMZYKoKFeGfD2Bb7CwdVTI4qjm/zceKysIA==","signatures":[{"sig":"MEYCIQCi5lXDSWQoT1wPnpTxBg+jM8IYqFvTsE+hzeh1s9QJxgIhANQURO9pXz6KVZY4EJKS472d7NYl6fDsK4ra2dupxwZQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35253856},"engines":{"node":">=18.x"},"gitHead":"97e9b59dd76fc9e1eb9eeb62a19566ea3dd8b628","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.1-f0d1e5b-202510230945.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.22.2-97e9b59-202510230946.0_1761212866721_0.34140694291943796","host":"s3://npm-registry-packages-npm-production"}},"2.23.0":{"name":"@flowfuse/flowfuse","version":"2.23.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2ba34737950f0cbb40ac217f0b7fe8d715a4c19d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.0.tgz","fileCount":448,"integrity":"sha512-fOUvx52PGI4GAP8rCgaixFWLHglYXmmOu+0OlI5bi0LIfyuXMFxqJRDXSBhKmUxx1FcpebnR6FFgIlCnqUOXeA==","signatures":[{"sig":"MEYCIQCWqZRhX+AQG4f8DwVdf4AUSTQkdW+XiCWMSZP8aHcxQgIhAPpEfhqx6k6mAk0S5GOawi2GpAPmjiE4kbRiy0qnH68U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35251804},"engines":{"node":">=18.x"},"gitHead":"a51f3ceccd4d3d47d7736e6e82307f94171c2741","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.23.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.0_1761215370983_0.432719672542742","host":"s3://npm-registry-packages-npm-production"}},"2.23.1-a51f3ce-202510231046.0":{"name":"@flowfuse/flowfuse","version":"2.23.1-a51f3ce-202510231046.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.1-a51f3ce-202510231046.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"eea9cf6e7b24ed01a4c0acb086b5ba24542aae7b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.1-a51f3ce-202510231046.0.tgz","fileCount":448,"integrity":"sha512-iJbMHSU4W6lIrsaVbSn3IsTGKLwHWRCfOUiNpAJfLY4vaKjjxm3201+J/nglXdQva44qbBvPNaTPdmQmeVxVcw==","signatures":[{"sig":"MEQCIAuls2AhBQYuMRJsnnyrrCz/K202F7jvlgIYv/08nIlTAiAlIW1rYwyn/O0CL9dHfqVV0X0rfbMNwlhqF3b4c8baoQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35254985},"engines":{"node":">=18.x"},"gitHead":"a51f3ceccd4d3d47d7736e6e82307f94171c2741","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^6.9.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@aws-sdk/client-ses":"^3.352.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.1-f0d1e5b-202510230945.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.1-a51f3ce-202510231046.0_1761216495188_0.801061204885162","host":"s3://npm-registry-packages-npm-production"}},"2.23.1-8132588-202510241134.0":{"name":"@flowfuse/flowfuse","version":"2.23.1-8132588-202510241134.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.1-8132588-202510241134.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7fef1be8c0932785f6297cb8d7b6362b33827941","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.1-8132588-202510241134.0.tgz","fileCount":448,"integrity":"sha512-CWShfPJ94NgP67OHWezKO7T6SPkOPpmhttbEVttQGKFhOCxc+DwOID7HHtefTLC3Ix2SfnSyksH2cjcQKi0/Rg==","signatures":[{"sig":"MEYCIQDCIrJsfQ8gdAN1gYm4Wg2eHXxeGd/U79I/lWSkbKSFTgIhAMQja0R1kA3w1WpvmXGl00ZVnIgdbrRqBhVoH+aqKh1h","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35254840},"engines":{"node":">=18.x"},"gitHead":"81325882ee31fb309b22f3b006b4d9fab1d2ba37","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.1-f0d1e5b-202510230945.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.1-8132588-202510241134.0_1761305803756_0.8864929333162164","host":"s3://npm-registry-packages-npm-production"}},"2.23.1-83b336a-202510241214.0":{"name":"@flowfuse/flowfuse","version":"2.23.1-83b336a-202510241214.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.1-83b336a-202510241214.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a6dd8ec59026729ac3f43bf08caab22b8b722f69","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.1-83b336a-202510241214.0.tgz","fileCount":448,"integrity":"sha512-wlGVxvf/h7K3jw0BwPQMjX8lQ/BKbzQFwP6kHmAVh3ki4azmgjxXy6iG9nEbiCBOMqMyzcBMlhD/tu6Keid0Ag==","signatures":[{"sig":"MEYCIQClJy+fEUat/D3Aubud+VPXha1ujrFVmpWAGs3V0abO1QIhALMSlf0ARIgOoI2x0rd6BSjCgBOXIAvT8+G5cJ/zICWP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35267168},"engines":{"node":">=18.x"},"gitHead":"83b336a4ef93e6cd2115b5bd2edd6b1e44f10acd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.1-f0d1e5b-202510230945.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.1-83b336a-202510241214.0_1761308179142_0.2981855144087866","host":"s3://npm-registry-packages-npm-production"}},"2.23.1-83b336a-202510270720.0":{"name":"@flowfuse/flowfuse","version":"2.23.1-83b336a-202510270720.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.1-83b336a-202510270720.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a4a29ceffd27107461110540ebada313535b8f7b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.1-83b336a-202510270720.0.tgz","fileCount":448,"integrity":"sha512-v3FXoMLXBeIdmwcuXwqCttjGoqBWmXbPENuRS0j4cuJ2wJ9i7XXq2rWUgprQp4JMFnhxC2AKtnSXnutZUkRXvw==","signatures":[{"sig":"MEYCIQCnAdXeSWncdaXEurKpA6tSzbxKF1VvhqXKwMgpoIiQtgIhAPqqTyieQuAe4mFqceASU1Ac4KwZZ/m1a/nllWWIwu4E","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35267168},"engines":{"node":">=18.x"},"gitHead":"83b336a4ef93e6cd2115b5bd2edd6b1e44f10acd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.1-f0d1e5b-202510270720.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.1-83b336a-202510270720.0_1761549749721_0.3107131804461174","host":"s3://npm-registry-packages-npm-production"}},"2.23.1-83b336a-202510271033.0":{"name":"@flowfuse/flowfuse","version":"2.23.1-83b336a-202510271033.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.1-83b336a-202510271033.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3513c42b6733338bfdf22f42813818d6dd50abba","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.1-83b336a-202510271033.0.tgz","fileCount":448,"integrity":"sha512-UM8kk//G9iq5n28IcpIj0pePgM4/EzpYmGf0w1Kk1SIN3O8gH1Um8P8JPKMeNe1am3zSNzyT1jeLlPH0BRM5aQ==","signatures":[{"sig":"MEUCIQDpW4Y9PDfDYzi1o/aFp4P7u8yUjLvFS8ch+t26hgBuvwIgUmZgPtZ2nN6uDGo/KcQUMK3yJP88A2H1eW6DxV07efA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35267168},"engines":{"node":">=18.x"},"gitHead":"83b336a4ef93e6cd2115b5bd2edd6b1e44f10acd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.1-f0d1e5b-202510271032.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.1-83b336a-202510271033.0_1761561343832_0.20650436259346439","host":"s3://npm-registry-packages-npm-production"}},"2.23.1-83b336a-202510271036.0":{"name":"@flowfuse/flowfuse","version":"2.23.1-83b336a-202510271036.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.1-83b336a-202510271036.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"035a184e81b693171fa9bb2e2f01245a94d64bee","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.1-83b336a-202510271036.0.tgz","fileCount":448,"integrity":"sha512-H2bECVgMdpneDiA2/GBBYIvtIp+IONoPxCDmWG78Faed8BvFaaZyn0hJExzFWU1kpUaXslMR5M7MMEjgnQQ6Ig==","signatures":[{"sig":"MEQCIEvNdlEuFs5U/huRcsGrcJzOcVWNbJhvSEdZRRYmmd80AiBQosCTvVAyMG9GQUsh8ns5I1wMuw/AP4qmBRRGC16ULQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35267168},"engines":{"node":">=18.x"},"gitHead":"83b336a4ef93e6cd2115b5bd2edd6b1e44f10acd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-97bbd92-202510271035.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.1-83b336a-202510271036.0_1761561497287_0.4506034880725045","host":"s3://npm-registry-packages-npm-production"}},"2.23.1":{"name":"@flowfuse/flowfuse","version":"2.23.1","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.1","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9c1822fb91ed45c724c58be04c44321fd0985388","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.1.tgz","fileCount":448,"integrity":"sha512-J1nFqQRaQcLoGTkrWpCm0b5siD+0ZahO8hCVYk6BI1rjrwfOwKZ1eUli9rItDSH+/rKtnJMuevFMd0viEWDRCg==","signatures":[{"sig":"MEQCICiWFTDcgpnhQvQthFFArbbwVCw8bSs3rUlRZiYzkbtMAiA/ux/Zxp8LsvQyqYdxHHj+t6WIOUFyvF3X3UBjnwKiaA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35264193},"engines":{"node":">=18.x"},"gitHead":"57029a61647ebd4fa5757993e25a540bc6fa7e20","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.23.1","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.1_1761561879594_0.4711884800029633","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-57029a6-202510271102.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-57029a6-202510271102.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-57029a6-202510271102.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e42038d46824c04a55c331d42d3ee3e86869cccf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-57029a6-202510271102.0.tgz","fileCount":448,"integrity":"sha512-mmBaMS56nmgp8ihb28iCzip2io6qwx+rSD+dVnflZeE94ZTywA1hJWdn/SBKKvTux3UFFPqysnwnKRUHWJTMdw==","signatures":[{"sig":"MEQCICnS6NXROgEwznAb8eRtDvVjO6PwACFvgT7BP8dB6YJ4AiBUcPNEA9iPjbnGillbl/OD1we0bIVwMMhUa27BBT8AtQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35267374},"engines":{"node":">=18.x"},"gitHead":"57029a61647ebd4fa5757993e25a540bc6fa7e20","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-97bbd92-202510271035.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-57029a6-202510271102.0_1761563067781_0.8489543487464153","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-5ab091f-202510271150.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-5ab091f-202510271150.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-5ab091f-202510271150.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"47859706ed8ba93a0f6130a550077c041c9a61ab","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-5ab091f-202510271150.0.tgz","fileCount":448,"integrity":"sha512-/QNjFGMOdzoZXriOO3Sj+c9NBt3OBA8jie1nnN1JEWxdjkA3W+YiihjdtSzuAEjPZSElPR544IxVw4kO3x5n1w==","signatures":[{"sig":"MEUCIDzcRCYXw6fzv1fN8lftGKoEgwOqyl6FkWP3+uuqXRd0AiEAiq9l1q3v1dZImgVyjKRg8KYCq6GmLzlF3nKkWw3yD+k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35273139},"engines":{"node":">=18.x"},"gitHead":"5ab091f7823b8f3bdbd923650e7b8f31ba731108","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-97bbd92-202510271035.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-5ab091f-202510271150.0_1761565930142_0.809590568157116","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-5ab091f-202510271328.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-5ab091f-202510271328.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-5ab091f-202510271328.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6f49015db07adbacf11290ee8c4de3d6da58d6c6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-5ab091f-202510271328.0.tgz","fileCount":448,"integrity":"sha512-8HteI52vFZH+JCHiSr+a7gHudwqPbukR0Geq6uODCCMQViippsrbTtI44SOfFPgEfJqkaD6UiVFr3QA6NehSkQ==","signatures":[{"sig":"MEUCIQC/04I61dt+Nt7DfpgK8x+8Jpj5Unh90fnHgoR/ADgLEAIgEgh82PZT5vh3LObqwNP72Y1jZddi2uL2B/F53w/AyLg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35273139},"engines":{"node":">=18.x"},"gitHead":"5ab091f7823b8f3bdbd923650e7b8f31ba731108","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-97bbd92-202510271327.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-5ab091f-202510271328.0_1761571828314_0.04407631175674043","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-de93ca2-202510280701.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-de93ca2-202510280701.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-de93ca2-202510280701.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"322a5345cf88a1a04c776e67feb84277b77e64e4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-de93ca2-202510280701.0.tgz","fileCount":448,"integrity":"sha512-jFbMn+2UH9KXapzt6DwxUQnLUlG+lcPwCfHd3b8inXZu5sTdlwI8Ruwbs3pZ892HiaOmHLY8DM/fFQRQkHm28w==","signatures":[{"sig":"MEUCIAD7MAJwUH/nMJXa/SD5Cr/z8kNYCTu2GzYmllNfXK0VAiEA417Gf3LHydzqK0wwD10Qa47ihHLjqOWrDXvmyOs8qTg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35273175},"engines":{"node":">=18.x"},"gitHead":"de93ca2ca66096b476b389c6661871c0c1bd00fc","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202510280701.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-de93ca2-202510280701.0_1761635001073_0.09066541096681391","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-ab86c13-202510280911.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-ab86c13-202510280911.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-ab86c13-202510280911.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c2ddfe89db0f1f939819c410f4b48626a49c6604","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-ab86c13-202510280911.0.tgz","fileCount":448,"integrity":"sha512-PCqmBXlLS8FyVl1WVa2pN81F6lVSZwq652KN/D/YNzfRbADYW65LShlFLFjm0keW3LzznpTzFCjra0HH8NU0wQ==","signatures":[{"sig":"MEQCIEC9iEZyIMn9FVS8k8PMrqB5ogRXWqYj/SH5tmWqvETYAiBvnR3bGJq5B9BxjWiWidmjlUne0ShPUW7HiFqkWNVqnw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35314968},"engines":{"node":">=18.x"},"gitHead":"ab86c13c660c62b26a14808ff46b7c0fd349a73a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202510280701.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-ab86c13-202510280911.0_1761642797893_0.05817747878435919","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-ab86c13-202510280930.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-ab86c13-202510280930.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-ab86c13-202510280930.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"79f46b1e10e2b5870924768d3a1d649d68c9f704","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-ab86c13-202510280930.0.tgz","fileCount":448,"integrity":"sha512-wKuddKks8/TBLh25GxETL48A0Lwl8XlsRI41vI5d0FDB4zxvdKMPSIzVGjfA15Cfy6t3lOxbnh8vrDoaCyaTRg==","signatures":[{"sig":"MEUCIQCdWPpJ3SPTzNTSqwSqlzsA0JpOoAmsyK9L8uOBUtRhxQIgU/M+2Ee2rk6MSX6PYkgSA2zS73tviU0gqmx9DIph40M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35314968},"engines":{"node":">=18.x"},"gitHead":"ab86c13c660c62b26a14808ff46b7c0fd349a73a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202510280701.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-ab86c13-202510280930.0_1761643940390_0.6686558506477454","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-b1993d9-202510281046.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-b1993d9-202510281046.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-b1993d9-202510281046.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"68e10d19f158dbf1ad44ef52d4091c6bd90f5668","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-b1993d9-202510281046.0.tgz","fileCount":448,"integrity":"sha512-ZYfHcW+bQrbXn+fa0znAxj0mpLlm3s8aWuoRg9ls04gvhAmVB0sZjzmOy4DKlvNyzUBj5hygAuORjd/n6X9CJQ==","signatures":[{"sig":"MEQCICVN+D6FOBiYA7H1SSbw/L4oI0Cei4robsiCN+cECF+vAiAlSSoKQ2ChpAq1WEN5nGnwaFLnSAcMYHcgSS8A0j5nLg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35315074},"engines":{"node":">=18.x"},"gitHead":"b1993d933ef9a1468179ed06f4fd2872e1482cd6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202510280701.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-b1993d9-202510281046.0_1761648471217_0.0923925467656308","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-b1993d9-202510281105.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-b1993d9-202510281105.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-b1993d9-202510281105.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8265a316583dbb6d1bb97ca67dafe8c51c814ef2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-b1993d9-202510281105.0.tgz","fileCount":448,"integrity":"sha512-09B+HvticqcgXvjM/Xj69I6OWM76f3lAOpGlImyRRtU7cu2PgdWBcEE0k7wUTq2kOdY1+enj0YqlVueh/0hRog==","signatures":[{"sig":"MEUCIAMd3X0SEq+Fl5+Y+pcJvTM14hkI5iHSOurMVY0TGzDZAiEAl8/4D/ACZfqOX1JaN86sUu1i43CeE5fZrEspEwrzGF0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35315074},"engines":{"node":">=18.x"},"gitHead":"b1993d933ef9a1468179ed06f4fd2872e1482cd6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202510280701.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-b1993d9-202510281105.0_1761649611408_0.014899281274098675","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-3409cf0-202510281150.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-3409cf0-202510281150.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-3409cf0-202510281150.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7dd8700f2d1a731fd0f6dbcc164c0a25186af15f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-3409cf0-202510281150.0.tgz","fileCount":448,"integrity":"sha512-/XK5HF44Iz76ztCKSCO3m+/9M8kSNltxyf+CGXwRiIFV6ptWdzIhWWcG1qKsYcypwJvaKd9yHiOPp/YdvmmRbQ==","signatures":[{"sig":"MEQCIHAOC6q2akSkLqLJanzTW5jwmbNE9JmO9XWaAAfYyyieAiAj9EemnzJD3JVUYes2JJDEI9+laB8a54BJkTT+tFP2Qw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35317061},"engines":{"node":">=18.x"},"gitHead":"3409cf0fcbd3280e32ee5a5e9af4e876182d06ef","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202510280701.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-3409cf0-202510281150.0_1761652355959_0.4231116582780672","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-3409cf0-202510281644.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-3409cf0-202510281644.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-3409cf0-202510281644.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"30609f75fc77fc32341294cd16d1fb56104e9553","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-3409cf0-202510281644.0.tgz","fileCount":448,"integrity":"sha512-df9+J0Qw0ZnrKz6s+oFZrqo1AA3yESvGyf6PExIPVxvmkxW6oLQg7PA6PUPBBoO1lfuC304oW8doWI5SdZZ23w==","signatures":[{"sig":"MEYCIQCJvJ4drXv+LZpDTN25Lx18vUwC9FYNpKodH+Pm5Tbq1gIhAKRe3KStgt2VNmTPDJfUVbx70RCoDmSHPhbeoAE7sKrT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35317061},"engines":{"node":">=18.x"},"gitHead":"3409cf0fcbd3280e32ee5a5e9af4e876182d06ef","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202510281644.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-3409cf0-202510281644.0_1761669978713_0.5773927162000563","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-d593989-202510281705.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-d593989-202510281705.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-d593989-202510281705.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5bb086028a872b1b979010d182ff519534814460","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-d593989-202510281705.0.tgz","fileCount":448,"integrity":"sha512-RnbL34OFhT8/lX04VLTxJS+EeVA4VK1KJui3jztW4wnKrOqeaXORJvQngb0e8QCqjMTr3X8jCd/dgWuGHh5C7A==","signatures":[{"sig":"MEUCIDXXTyTLHqRgeCh9MsIwxHxoHFAU2u8viztoXGLfi/oOAiEAj1eUAkNpqXT6kCueNuXsWldsGrMlKsPS2naZsyI+egU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35317061},"engines":{"node":">=18.x"},"gitHead":"d593989d310221d0dc2ff179a5f5588f88a1d2d7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202510281644.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-d593989-202510281705.0_1761671259217_0.20311789435470806","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-3bb09e5-202510291150.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-3bb09e5-202510291150.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-3bb09e5-202510291150.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4637c965f989ea7ce7898565e006807dd58c7539","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-3bb09e5-202510291150.0.tgz","fileCount":448,"integrity":"sha512-pU7YnoMVOhIunMq7evSnh93Kms9FTWyOZPIZX2/hPcfvus05v/noZxjDA10xd9nM9wpMpJ+rPCICy9ls7LF8dA==","signatures":[{"sig":"MEQCIHkV1vphLVvl+bniy9dHBxgjkzENlQ7oxPpPW0uLrb0qAiBl6TrPe7PhwJppTwvuF1zfbgnhgXmryYVT/tSTySxniQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35317251},"engines":{"node":">=18.x"},"gitHead":"3bb09e5260181a5e87972edb731a513d05660644","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202510281644.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-3bb09e5-202510291150.0_1761738750212_0.5334956009278089","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-adfcf5f-202510291630.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-adfcf5f-202510291630.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-adfcf5f-202510291630.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6b800c8c32bbe8edc65e1dab183240301ace2ac7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-adfcf5f-202510291630.0.tgz","fileCount":448,"integrity":"sha512-XFV8+jN0ZwsQVKYegn+diZr7VBAN58q778CxISPRzSDFQMcVrjwAcsktAo1GKfFuGLQuoO4lgMjUSfuU7FPdXA==","signatures":[{"sig":"MEQCICpmgIYMJH7lk88hzK/9OlvNoVwTDsyZU++m6QQHUiYCAiA+lEFzXJORvREExHLd96Ixlx4qyJIhALg2ECpw5guosA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35371751},"engines":{"node":">=18.x"},"gitHead":"adfcf5fa0da8af50252577c06e296cb7873e9638","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202510281644.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-adfcf5f-202510291630.0_1761755504747_0.4837098184558648","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-597c467-202510301354.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-597c467-202510301354.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-597c467-202510301354.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1ff997b5c1f59ac64dfbcc0510e53be7ba312b70","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-597c467-202510301354.0.tgz","fileCount":448,"integrity":"sha512-MXKDomCf+wjJ4n9Y1I4J1DBLknQIn1SMAW9wBF3qiHml29mBi4Q+6LLX2KhzCoz5EH94AgZcEzOcpPOqobp2KA==","signatures":[{"sig":"MEUCIAkRNA6f6r1sptTgFgTJyA5Ge7ucIvi1OSy9sp7z31MhAiEAsmxTQLR/V+/TeLGWlobykEOEO9dLhR9Jj+z3PX5YaUE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35374954},"engines":{"node":">=18.x"},"gitHead":"597c4673266e8935fd6ff47dc5f95ee0296e2927","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202510281644.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-597c467-202510301354.0_1761832550501_0.6084352010810019","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-597c467-202510301413.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-597c467-202510301413.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-597c467-202510301413.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b7a9b25e2dcfcd3698a7936ec4f7308e39ec7850","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-597c467-202510301413.0.tgz","fileCount":448,"integrity":"sha512-wNf5HyuQWF4tYPbcCi5gfxUjUhoCwsdaI5dJPA2UwhV8QfKbEaSEGGMlnFdJ/AhEVFo0wVOVxxFNnaJxpiyS1A==","signatures":[{"sig":"MEUCIHiRgdLxFWRURvnvdouWH9fTcV6xoKDqLeZqHe3iAd0BAiEAtNocM/gnfGDa+5gKADqoqZ6wXoz1q5lJ+bS7ZjVef8c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35374954},"engines":{"node":">=18.x"},"gitHead":"597c4673266e8935fd6ff47dc5f95ee0296e2927","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202510281644.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-597c467-202510301413.0_1761833728316_0.05239101777343502","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-1a82d83-202510310952.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-1a82d83-202510310952.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-1a82d83-202510310952.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6e580b89dece6cb884c59571beb9541f8c5c27c8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-1a82d83-202510310952.0.tgz","fileCount":448,"integrity":"sha512-7V45cfR7efE/jD9GTzkrn9Nmj5rzyV1lSvWAOfHskRF/LHC+bpLkHq/DsLNkTXpqH7hb8k1WO1UUQNsOksXMmQ==","signatures":[{"sig":"MEUCIQDn6rddjhrYrRNX/H5XpM/oX/dvLSs3mOHa7j6v1Hlh3AIgbEshig23L3a0Tp6ZNXlfRbMefZ5AtU9b3gUKdrPptQc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35383552},"engines":{"node":">=18.x"},"gitHead":"1a82d83ddc7026c3722d6bb3bcf6d86039d5236e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202510281644.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-1a82d83-202510310952.0_1761904471034_0.9952238394937161","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-22aed33-202510311502.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-22aed33-202510311502.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-22aed33-202510311502.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"985eea1d77ab94400636111daea45e5e8949f053","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-22aed33-202510311502.0.tgz","fileCount":448,"integrity":"sha512-NnNhuoLK+VoZwBWQjFeCXfHzu3UplO/5qETfMwr/tleErgO1PnkEwnwh2Ewg4G7MdPzrN+yg9p94OzcoNqLRqA==","signatures":[{"sig":"MEYCIQChQbDL63aQlLvCvfPNBs5qclU1CL3kdrWJ7y1ocAQ/swIhAKVLAaFzqAXVtWdf+8yH4fnVdMGo5DvaSTScvT/Ahpda","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35383552},"engines":{"node":">=18.x"},"gitHead":"22aed336e4eedeb3d69b85e500c60d4f4d4ee9b0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202510311501.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-22aed33-202510311502.0_1761923047828_0.03390759785749031","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-22aed33-202510311600.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-22aed33-202510311600.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-22aed33-202510311600.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a0e7638602d8c0cf6e445ea73a8121ca93710316","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-22aed33-202510311600.0.tgz","fileCount":448,"integrity":"sha512-f9CMsq5ZoBdm5A1+NlmWs5GpHXmE6Yedvyfm5EFq2CpsFSQUYALqwvAaas3ylU5k5Y7vmrdasAM5KIUQeHB5vg==","signatures":[{"sig":"MEQCIC26dENJOn4mSoaR3N1Uq3VqXYYWNXbWFKPuvDyAuFMpAiANGd0fLz9PMiOo2nyQ7LG+6TGpWuZGgx10vWiXfrOP9g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35383552},"engines":{"node":">=18.x"},"gitHead":"22aed336e4eedeb3d69b85e500c60d4f4d4ee9b0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202510311559.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-22aed33-202510311600.0_1761926546481_0.23524884183835204","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-a5b4e61-202511031442.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-a5b4e61-202511031442.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-a5b4e61-202511031442.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6d0067b8e669a368c629992f9ed3d79f6f7f9820","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-a5b4e61-202511031442.0.tgz","fileCount":448,"integrity":"sha512-vecrgU+tfsr/+nb9k/6JfZvuqF0PClEjrTo/rgnhgRQcsOwkU1g5wvi81iaGlGxwNNlsmf7m+6s4CAR5hq6gBg==","signatures":[{"sig":"MEUCIQDbmBl3/0HdOqBLtt9ti6a87friaqbUTh8p+1dIO3C7gQIgVqmZvG7v7+9AgdDdpvYc+alw00ApIXgeI/V0iWKQ26c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35386003},"engines":{"node":">=18.x"},"gitHead":"a5b4e61a542741c54edaaadef0219166f486fa09","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202510311559.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-a5b4e61-202511031442.0_1762181027599_0.23221659253507498","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-b06203a-202511041039.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-b06203a-202511041039.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-b06203a-202511041039.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"032499e5a5ba1f9c37b87c09622e5eb271da77ee","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-b06203a-202511041039.0.tgz","fileCount":448,"integrity":"sha512-I2eWi2DD2tHqfvgSJAP1v7RBSahCKTourFhHSaw0hHfGjwV5/am5ua+CaDZpky81gG3uZ3U74gxxkY+z1vrTfw==","signatures":[{"sig":"MEQCIHhGZlezCsvfRQYiDKE0JxtGhfMeqtGXANvrq+qbF31rAiBF/YPc+mTQDpWLteaUyf8zloyTdeOtke/zkAfWSXSz7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35386536},"engines":{"node":">=18.x"},"gitHead":"b06203a277f696e0a905da155d5d41e43fb22957","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202510311559.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-b06203a-202511041039.0_1762252902214_0.9912547110785461","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-786b4d9-202511041136.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-786b4d9-202511041136.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-786b4d9-202511041136.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6b49a6cb722c1d82ccf430877aeb85d99b29e89c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-786b4d9-202511041136.0.tgz","fileCount":448,"integrity":"sha512-nEuGK2q4XV7F2SKjn2IiFxO/CwZQm0aGNIJPwld6uny6uflKo21k9NCCwoPoLRXCg9IkvOJLGVbfUUUWYRfGVQ==","signatures":[{"sig":"MEUCIDMgInVgjyrHJfYnt6SfL68dTbZeoYECUTMbG4LLKfMmAiEAnrj6t4TIMjG8T1gS6EAxklwaFpen7wweW0xdqE3+ax8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35387884},"engines":{"node":">=18.x"},"gitHead":"786b4d91dce758001ae3f47e90232cb9ba291463","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202510311559.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-786b4d9-202511041136.0_1762256297358_0.3372593390426468","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-d09a022-202511051005.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-d09a022-202511051005.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-d09a022-202511051005.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"47ec177c41d61bf8fe75645d28460d6936b21e01","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-d09a022-202511051005.0.tgz","fileCount":448,"integrity":"sha512-kzkrs7NlTAIrMMbwpxiYpCbmlTjudX3l6pTYTJ/Xn6l6hCy+Q7NbZ84HzAdbdyoPOrXVvHWpQb0BhSDVs7K1BQ==","signatures":[{"sig":"MEYCIQDLher29fC7meail38B3BjQu2Zxcyj3pmjhtMwI9au2PwIhAN/Au/ZPMF6HTUk7vk1WVxR27VLcoggUVPvHmyAMYTog","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35390077},"engines":{"node":">=18.x"},"gitHead":"d09a02288f0cb276eeed53c492e0359bb6af5e6d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202510311559.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-d09a022-202511051005.0_1762337230170_0.10798250293704004","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-f2eb59e-202511051100.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-f2eb59e-202511051100.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-f2eb59e-202511051100.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2b69e0cb380001271cab05dd03d1898803a9620c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-f2eb59e-202511051100.0.tgz","fileCount":448,"integrity":"sha512-hgVCqAGA37zKnkxUkbl1KslzIXDL6qcN8hnK9b8dfN8QGv7WAmx9Yk+uDzXerkOnQyk8yosAUsAazMdbi2NMCw==","signatures":[{"sig":"MEQCICeEGSJt8oY5ks9A0KKrAUio8yEJjq0rHO2M2MZnFgKKAiA2psyyMoVot7GCSaFa+ef6aTomG+S/YtycuRa+czkfAQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35390761},"engines":{"node":">=18.x"},"gitHead":"f2eb59e4a0e59f8af761b1fa54a4ef002d6af6ca","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202510311559.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-f2eb59e-202511051100.0_1762340527304_0.5275271596687443","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-c049bff-202511051356.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-c049bff-202511051356.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-c049bff-202511051356.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e6dc050c3f3d58e3946b9cbac7932a2277c12d34","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-c049bff-202511051356.0.tgz","fileCount":449,"integrity":"sha512-GZXMZATz0TrJlHuj/3rD14bsDM5NOCS9bwkWCTuqIf+yO57anqa4T2S05JzxgcmVSe2O3ba6FneY7tBY0mrV0w==","signatures":[{"sig":"MEUCIQCG02k0DlophYfwrNeZaDczAZB2PnfhfLvrVyDeTKn17gIgVBAVr5gLK8BCYpdBse4IS6zIuxLvjkQ0pghge8ulKbI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35399468},"engines":{"node":">=18.x"},"gitHead":"c049bff07652bb9c58756e354d336ead6434446b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202510311559.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-c049bff-202511051356.0_1762351061177_0.19478244521579025","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-12fe7cd-202511051413.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-12fe7cd-202511051413.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-12fe7cd-202511051413.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5f51285e09703652869511d0bb37eda27d021a51","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-12fe7cd-202511051413.0.tgz","fileCount":449,"integrity":"sha512-wtn5x8Ra0hvSuzHzzC85VVOyQVicRrEA4Uh6cfss+JrJ/Jr6bC1o45jOJzTfO3ZQ4rcwAGehXAanOlLv1qIOFw==","signatures":[{"sig":"MEQCIBiio2cRAWHnMGW3beQPwZ5aq7tr+3/FVI6OjCAO+uxcAiBfY1wnuSAD+fb2/N4Dm8n4DyqpUaGdeR23YWfun37zmQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35419029},"engines":{"node":">=18.x"},"gitHead":"12fe7cd09336d188a58b0fe99eb94c8591fad07d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202510311559.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-12fe7cd-202511051413.0_1762352084808_0.07796604858882894","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-12fe7cd-202511051642.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-12fe7cd-202511051642.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-12fe7cd-202511051642.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bc35715a04ad5752bd067e15fb3216790aa53c62","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-12fe7cd-202511051642.0.tgz","fileCount":449,"integrity":"sha512-PhnHigoOgXwB9DH0tFSJJjC1Itnhde4crz2Jox1Q1s4jTwsYYef+Z+gP+655GVGyPf0IojGFSBRAuaaw48zurA==","signatures":[{"sig":"MEYCIQDGXQ2JGtzOnX2eqh7pSvrUwFYPpKR2cMeYVLthO4JKQwIhAJVhgac8NQOmUXD38R2xuEgsHwTMCeQoI4/329UuTbny","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35419029},"engines":{"node":">=18.x"},"gitHead":"12fe7cd09336d188a58b0fe99eb94c8591fad07d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202511051642.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-12fe7cd-202511051642.0_1762361067976_0.7059722838736022","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-12fe7cd-202511051718.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-12fe7cd-202511051718.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-12fe7cd-202511051718.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ad7fdae8f06f85e9b028a9574968db621a1d7110","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-12fe7cd-202511051718.0.tgz","fileCount":449,"integrity":"sha512-UHKbqZh9Tty7ING0rQ3keQQsNrXG52UkejymZSdgqHKsiv6HLRGJDc3sjPLGHNs3U5VCYKvE32JRe94KVeGrTQ==","signatures":[{"sig":"MEUCIQC2cUmPnkaJDGKhxD8hvG0NRJFK+yHo99hGWK2xmk7SGwIgEeRW8MMR0WXnWx4CIQEHNefYYGMFSY7sgKyz722YpgI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35419029},"engines":{"node":">=18.x"},"gitHead":"12fe7cd09336d188a58b0fe99eb94c8591fad07d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202511051718.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-12fe7cd-202511051718.0_1762363226790_0.2532183595680306","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-9d27c93-202511060920.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-9d27c93-202511060920.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-9d27c93-202511060920.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"513304d50470c68c3b304d758a029c90336838d8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-9d27c93-202511060920.0.tgz","fileCount":449,"integrity":"sha512-j7WmMhKGMwFu1u5MS0nzIpYpzpi4NqQtvXpTsv3El24hQG62G/5MFxv2mVwq5TN25AgH2MF0ZZhkC4dFIKdpzA==","signatures":[{"sig":"MEUCIGf9x/fZJF9VsTBoPkd3W8jiAuPnN8IgjlnddfI5ydYVAiEAl9Hh1FFqxsRZG6AHowkzUJ4gqUc5PSZTDjp5igdjjk4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35419035},"engines":{"node":">=18.x"},"gitHead":"9d27c93dbe8ef3402ae1215253ce3399f7e2a413","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202511051718.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-9d27c93-202511060920.0_1762420977751_0.8587986258870497","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-c0322db-202511071508.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-c0322db-202511071508.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-c0322db-202511071508.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"99220c2662ff5855959dfc4f8b90d60c492d6e7a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-c0322db-202511071508.0.tgz","fileCount":450,"integrity":"sha512-Nm0crCWLR7HbztnLgEmQ8Bt4YSltaOSPxE5AH66AFs3pcEKb5xulAxttom1cSeZIKSRL5dTlP31uxFcoQHw/7A==","signatures":[{"sig":"MEYCIQCpPIeygNmjSUKDLSoxwHZv7vJaxGOdKUkLFElayGftxgIhAMYxkDrWSWel30blDh61i6vMVb8uDLh7kj8EQX5oVyjF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36171777},"engines":{"node":">=18.x"},"gitHead":"c0322db5e6614d6b007dd6c700025cd7275a963b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202511051718.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-c0322db-202511071508.0_1762528179091_0.50582527751841","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-5f6c3b6-202511100952.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-5f6c3b6-202511100952.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-5f6c3b6-202511100952.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f66ea3c4cc7ff8bea54cdee2d7a2c16cfb2ca3c5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-5f6c3b6-202511100952.0.tgz","fileCount":450,"integrity":"sha512-qNWQDRpwu+Xj9EdiPY9/ULR+vABAOv7XL1meCS8ArGrJa3Fq3ZzSx+6aZ1PR6H4JdTdf85qVn0b9QHkgJ0t86Q==","signatures":[{"sig":"MEYCIQCcu8wp18hg+WJgXJ56ONqNyzbrR9dJfv5gfgoM0e60vwIhANzv2680P09uB6g0+MIiVmia8cSHFCxQbNoLnmfAEhmu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36171777},"engines":{"node":">=18.x"},"gitHead":"5f6c3b6ad01c403a68b62e07997e03aabcfd9dd3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202511051718.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-5f6c3b6-202511100952.0_1762768463231_0.3903343471968239","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-937c237-202511111033.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-937c237-202511111033.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-937c237-202511111033.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fb10fd574baed9fbfdfecdefeab8fe7773f4b89c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-937c237-202511111033.0.tgz","fileCount":450,"integrity":"sha512-cy3t+l+HCh2lNDoXt+8Av+VjGEgZQuxOH5jE2pr+odjpa9m1wyXQyhH5RHwP9cJkuEMd90KCy0gTQguuNbEwRg==","signatures":[{"sig":"MEQCIBCOuG5K+XE3dxJ170RElVu1JY7/iePm1loY1JJrdHtPAiBzlBTArUbNNNv+IlgKD8UG9lgkzSOnf6AlzUWGufEGdA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36172222},"engines":{"node":">=18.x"},"gitHead":"937c237ddda5126f6a8e974c5fe87f6f97cb0745","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202511051718.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-937c237-202511111033.0_1762857301252_0.09256172704118715","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-4fed9f2-202511111634.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-4fed9f2-202511111634.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-4fed9f2-202511111634.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"db3e7a087a65cc654089bb849f8830e0a0255567","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-4fed9f2-202511111634.0.tgz","fileCount":450,"integrity":"sha512-6DNJ94D/G6yTr1j4+X7O1jfTjnhBqywOPNnxaQi5Xk0bHfcgbiLfXi8UoZiKyV9B1ebd5vRHBQmU1kYQRQjkng==","signatures":[{"sig":"MEYCIQCMEWRbf1nAyiuZAcvlMiJw4Kdzw2A2/Tj0xvNjOjGiQgIhAJ7U+kC8BjEb5RnPDTT25vCzBhQj/HZiyHzffApYVP6i","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36174322},"engines":{"node":">=18.x"},"gitHead":"4fed9f29b7a6d6e925fb4d129539b849b18baf71","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202511051718.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-4fed9f2-202511111634.0_1762878954471_0.26772129226744057","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-f6a8857-202511121007.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-f6a8857-202511121007.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-f6a8857-202511121007.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4bc7e94f07d52833722e73d175748376c5421d31","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-f6a8857-202511121007.0.tgz","fileCount":450,"integrity":"sha512-/Q2UTNLUaoISmuFmo6EErBgHxGILoeG32s8VZGGYznDPfY2a4yNzwT1Lmax40H4lgPNaPkoE4PWatDAKAGeJlQ==","signatures":[{"sig":"MEYCIQDh0E+WexJsLfK0Hly3yuNtbnA7KWBZojY5YEOPBhUUaQIhAKCcYkPCI0XzBXqEZOkI2NeBrDQBy/jQNdn6Zo34JJA6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36174321},"engines":{"node":">=18.x"},"gitHead":"f6a8857e99384d7568f6000180ee351d2f94e185","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202511051718.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-f6a8857-202511121007.0_1762942150878_0.4699382358998796","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-ad29e83-202511131630.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-ad29e83-202511131630.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-ad29e83-202511131630.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"40edc2b7c83ceb4c8124749c129934a67b11c8c4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-ad29e83-202511131630.0.tgz","fileCount":450,"integrity":"sha512-TH5j4PAJnpegOUWcrgycZ+/mAvU3wHWibGnogXLA7y4K6qf6KkR68/fbCWgLmoAWwhGgR9Qj/QXViLbfSp/6yg==","signatures":[{"sig":"MEQCIFo5txcz/tAaB88Yo5AmDJUtxcbFDJctW6N/7L3ppB/XAiAvXCb7Rt/UWXkIFd82fdwPkdAi+xIQYDlgwcjDBsltzw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36174425},"engines":{"node":">=18.x"},"gitHead":"ad29e83a56d85ef7eba82b6e25e17a2e5bbda737","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202511051718.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-ad29e83-202511131630.0_1763051528268_0.5972920448110473","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-2ffc036-202511141244.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-2ffc036-202511141244.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-2ffc036-202511141244.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cce622cb5a6e4f48678eb6919e9f2e0222dfa79e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-2ffc036-202511141244.0.tgz","fileCount":450,"integrity":"sha512-7jC7cER2Y3KP1ZYlFrRuNJ/XS/Gd72gXJis+xbmQy3Jo1mvklZL3Ui11dbpE7wRjdUCjkwRn4neY11PT33Dwvg==","signatures":[{"sig":"MEYCIQCv4EbtislwAw4vM+FQoV8muDAAq5h1pSUe6XtDRfIcBgIhAIr/Tb62fwxcK3LU5S6KOQJH/Ibm0j7uerKT4qV1FDLf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36178265},"engines":{"node":">=18.x"},"gitHead":"2ffc036574b2548f6f98c3d33d6f26c8cce004b1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202511051718.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-2ffc036-202511141244.0_1763124345014_0.37639596114318463","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-936ac49-202511141344.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-936ac49-202511141344.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-936ac49-202511141344.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5176a1130c580a33ff60dbc06f0f6809e9f86ba8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-936ac49-202511141344.0.tgz","fileCount":450,"integrity":"sha512-yrxqBqc/e8WE/PS4OY/ax8iSYEmkwmqPe4M/S+wi+gp0YIDmDE5K8LC2jw0LigMvrk9F2W4pJpOS+bIubAb5Xg==","signatures":[{"sig":"MEUCID3Zd+GzUdwvJxHhc9TdBFEhBHFNSpVPa/g94ttPbolGAiEAxxs2I4sHDe42jYZUdQzge/4hQHbBLyPU6yp8uqkv4x8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36178285},"engines":{"node":">=18.x"},"gitHead":"936ac49114775176c2f06cf7f2eb06d4cf145206","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-d805c67-202511051718.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-936ac49-202511141344.0_1763127949165_0.7262174067761771","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-936ac49-202511170924.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-936ac49-202511170924.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-936ac49-202511170924.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f84c7d2bde6ddd413ad8143fcc3f89c679933e2e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-936ac49-202511170924.0.tgz","fileCount":450,"integrity":"sha512-T1ZcZtF0GBBBfs5RxKVkz7AWkGzDhEbOCt+tdryz3j0HtoNePLuYr3/GU/682f3npEn6oqrL0XzoIUt/IoSpEQ==","signatures":[{"sig":"MEYCIQCmFVKOOtQkrB298D90jQ8PuI8AJC6ZcXwcRTlpIWAfwAIhAIVu37C9ZYDjFWeeMJPHcFOmqta0UfttGj+71BWR0XFS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36178285},"engines":{"node":">=18.x"},"gitHead":"936ac49114775176c2f06cf7f2eb06d4cf145206","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-e88da3f-202511170924.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-936ac49-202511170924.0_1763371584290_0.8561423669968038","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-936ac49-202511170928.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-936ac49-202511170928.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-936ac49-202511170928.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"936beb20f478c5921b2b91d07a8ef9b8b8b1ddd2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-936ac49-202511170928.0.tgz","fileCount":450,"integrity":"sha512-yhnVoJR/BUCNvCYLeVCdzr+ecAqxeC4961jjD8oGA6KRn/QRx5Bp5/JIhTkcijZYmSkx2YZdNwx8TLqSvD67oA==","signatures":[{"sig":"MEYCIQCq4zmA5dYKYXqSbmda5nxVndFiIyQdUJ5gSdmhTpKAtgIhAM+7wAM6klMTDsLomDFl69a6YfqUQ30rwxGR40j+jK1R","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36178285},"engines":{"node":">=18.x"},"gitHead":"936ac49114775176c2f06cf7f2eb06d4cf145206","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-e88da3f-202511170927.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-936ac49-202511170928.0_1763371783890_0.4464863623084654","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-194045e-202511171102.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-194045e-202511171102.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-194045e-202511171102.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f409ce3a1599ea84bcdce61482f94845a7f0c09e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-194045e-202511171102.0.tgz","fileCount":450,"integrity":"sha512-vYsIwxKYwwv73MEy6sCmlnxuTtLIVODJOvUXdkdaNHFIzEPeP77MAigZ8bHyOYbWxJ7/GlK7MmqIHHBkgLJukQ==","signatures":[{"sig":"MEUCIQCrBdtX/QZXzNt7M1msPhbLOh04cjUFNzLC+s7jKbl6RwIgSVOdveP4iDw6F8Hut6tELjiKr/w3Q3r2RI0y2rS+4KE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36176006},"engines":{"node":">=18.x"},"gitHead":"194045e853ac5b0fe759982d7045ad11a66572fa","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-e88da3f-202511170927.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-194045e-202511171102.0_1763377463816_0.4798198974066328","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-2ec399c-202511171119.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-2ec399c-202511171119.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-2ec399c-202511171119.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"024466c003675132f682384c1272afb832635967","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-2ec399c-202511171119.0.tgz","fileCount":451,"integrity":"sha512-qxRB0sMOakEhmU3CDY37gfTnpxgvKXnTaRp9OI+qBxGbX/3pSWEYBg5+PEd7l2bHgYSW559jbuVfSsE5Aj3fMw==","signatures":[{"sig":"MEYCIQD69TsLLKWXNmLNMteH9ZccLQOKPNH1nRQda9K75eMZ2gIhAKmnXdSfHAZE87iNwt+5r+OAk7erlw9dXLyR3nOPNibd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36180819},"engines":{"node":">=18.x"},"gitHead":"2ec399ce07c9a0ba9077a915c1cf3c87d2624faf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-e88da3f-202511170927.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-2ec399c-202511171119.0_1763378491729_0.2886932915129454","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-9e911c8-202511171412.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-9e911c8-202511171412.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-9e911c8-202511171412.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"31f051aac607e7059edf26fa5e0363785059148c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-9e911c8-202511171412.0.tgz","fileCount":451,"integrity":"sha512-8nP6mjBwAmHQ4qAiTdAb6y+wXcwZ/s+/fHb5T7SG1s2j7k05ZmNTuewi5iKIqzqkECUckR3x8GnkkkKQdkNDcQ==","signatures":[{"sig":"MEUCIQDfjpxdmQo1hWswfqY4UMrii/qbr0cWf2tjmd9tgtGgwQIgK+usO6SLWrBAIU1vTYh++Nt5jWkGYKFD9PFFhgv0nK0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36180775},"engines":{"node":">=18.x"},"gitHead":"9e911c8dfd08d5a3df02598d44ee9d5d4789e26b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-e88da3f-202511170927.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-9e911c8-202511171412.0_1763388861404_0.7300868293911895","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-9e911c8-202511180859.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-9e911c8-202511180859.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-9e911c8-202511180859.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c6e6e0d7785ea93830957a6a73d1745db179bd61","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-9e911c8-202511180859.0.tgz","fileCount":451,"integrity":"sha512-c+s0jEIbpxxoNVQa0fSYMTFpXbQ/2623bSwNeeFwLx4i6BaYhLHkZZT40a9Due2TyR28I6qmMi3nqszCJkWVsg==","signatures":[{"sig":"MEQCID7WVPEb5rMQjbeNQPmKeU3F9cnXNi7uoEhz/joCXwEwAiAYLmPGuVdT8G1BHop4p3zrryzLw4Oq7AQxRRWnHu+mTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36180775},"engines":{"node":">=18.x"},"gitHead":"9e911c8dfd08d5a3df02598d44ee9d5d4789e26b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-e88da3f-202511180859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-9e911c8-202511180859.0_1763456480752_0.9701250776359265","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-68b3f49-202511190846.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-68b3f49-202511190846.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-68b3f49-202511190846.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"147f0c69ea2c54ef8e4c42b2be060c910b1bc2c8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-68b3f49-202511190846.0.tgz","fileCount":451,"integrity":"sha512-MY1DP9Rp95Gw0Exys3gRljo+b3tRMFt2jcVDDpxVKjAT6nuG8Mcn3veg+kseJPxncey32HbF25Wct85OUGkRgA==","signatures":[{"sig":"MEUCIHmYSz4dYZ/Wd9BduIfT99VSidgtzlAy3AizsNFolhXzAiEAr2fnIc8XnZFuId0Y1YaZHoqQGAhhMyD3WQlOKN2SELI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36180851},"engines":{"node":">=18.x"},"gitHead":"68b3f49f412eae73179dc0820da34cd14a158d1a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-e88da3f-202511180859.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-68b3f49-202511190846.0_1763542084141_0.029418360532131427","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-68b3f49-202511191116.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-68b3f49-202511191116.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-68b3f49-202511191116.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a3a723a62bc82da3f54646f6658ed82c03f20b74","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-68b3f49-202511191116.0.tgz","fileCount":451,"integrity":"sha512-CpYtauqt9+Vidxeh5rzZS/ZOtR9/K02cd0QWJZwx7a3GBjdnzjbjzzBanHhmKAoPetGvAhZ7OIJWGireokt06A==","signatures":[{"sig":"MEYCIQD8SwJsAw0NWVxYiqLXI7h2N4sukh5FkU4fBXyc92VugAIhAMD5pyafkpR41t4zkI74q9HkXyX1Ii6ZJOravD7ACaM0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36180851},"engines":{"node":">=18.x"},"gitHead":"68b3f49f412eae73179dc0820da34cd14a158d1a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-e88da3f-202511191115.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-68b3f49-202511191116.0_1763551057348_0.9955561975858873","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-bf53442-202511200906.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-bf53442-202511200906.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-bf53442-202511200906.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"384f91a4b336484e42054540190d9c619ec772af","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-bf53442-202511200906.0.tgz","fileCount":451,"integrity":"sha512-6MGWabMFqtJeuChEx4GXcLbwUhE/rn9CHShBfbbdqywXC2tpbpccn1bcF/zAkbSJF56XK4vE2dHJKWBVWa/UyA==","signatures":[{"sig":"MEQCIAEGjyqZdR4pdBxVeOu6H6iAXvGAhFCQGNe1mUI2ZY3mAiA0ch8R5JGROVPzwsy7cRTLfcVphDDH630doHHgqEnHdg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36180854},"engines":{"node":">=18.x"},"gitHead":"bf534423b35ad98b1e6f61d17fb1357e3bb0881f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-e88da3f-202511191115.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-bf53442-202511200906.0_1763629677739_0.6339234653831378","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-70c6207-202511200951.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-70c6207-202511200951.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-70c6207-202511200951.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3252f8b6f73719374e5b192c23f753fc9ab0a780","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-70c6207-202511200951.0.tgz","fileCount":454,"integrity":"sha512-vOKG3FSDhQlxO/np57FhDq+OjIKPyGSiJHEEQ0wIS3vQc+hJYyXxpFfIw7P6/gHD3ZNxEKpOS9UU77bIqItqlQ==","signatures":[{"sig":"MEUCIFGSpHEvRcLWynNCNLMTKeRvrd7VEBmClBZdKZnDE/lYAiEAz7lBh2OQBG4qFZhmc3zskSSicaI7FMo6mF4oQyZt0Y4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36338612},"engines":{"node":">=18.x"},"gitHead":"70c6207819b33d079c77667d0c42ee98f3d94f50","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-e88da3f-202511191115.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-70c6207-202511200951.0_1763632405653_0.3821954313629221","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-70c6207-202511201006.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-70c6207-202511201006.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-70c6207-202511201006.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e569648875a1e5e1fdbb95eeefa33743db08ed3f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-70c6207-202511201006.0.tgz","fileCount":454,"integrity":"sha512-RDQUifCKWmLzkSU1T0j3FRfjzEMArvN9c6BsWXfYGu2VRHkfRNuGq1ZibA8iKNwzC2on9GTjesSJaN3qnhcJHQ==","signatures":[{"sig":"MEYCIQCX9AEgrSaIbGV8koW8fjgThkpvVwc+h+y/WP01eSD/MQIhAMAHAM9mahch+vUh/2U/r1E3PdUHYTAoxW4e62uTPTjH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36338612},"engines":{"node":">=18.x"},"gitHead":"70c6207819b33d079c77667d0c42ee98f3d94f50","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-e88da3f-202511191115.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-70c6207-202511201006.0_1763633295766_0.34889227653072763","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-70c6207-202511201025.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-70c6207-202511201025.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-70c6207-202511201025.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fdbf083ddb1b108f219bbf592e01bc531fe21f33","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-70c6207-202511201025.0.tgz","fileCount":454,"integrity":"sha512-z7XZNb2IOEjG06F85VCwC9rfEcuq//aZ4tvvKDJM8iVoLlaIxufiVfgOZccKz6rXaCtuRWQs2BRBryXu/9QEpA==","signatures":[{"sig":"MEUCID4H/seyJqgxEbP9gcc1XBFttxB2GosvZ5cFfGoZml0FAiEA7/ZK8vU/LyaTqE07rehsMoqmG2xDwG8OlGnEhNJa/h4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36338612},"engines":{"node":">=18.x"},"gitHead":"70c6207819b33d079c77667d0c42ee98f3d94f50","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-e88da3f-202511201024.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-70c6207-202511201025.0_1763634397312_0.5874192504559972","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-2392eff-202511201043.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-2392eff-202511201043.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-2392eff-202511201043.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"46f00bfeae7ba7fa5be5160a924f4180f41a277d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-2392eff-202511201043.0.tgz","fileCount":457,"integrity":"sha512-yvnT+OWUcfNq3hrRHP6v5jkIB/SM0Fqb2s+ufXUgE8LTUVazXEIk1UlL7m9xpMtLI6YmiDPFRxFFSosqNVhc6g==","signatures":[{"sig":"MEYCIQCJ9tbE4QBffCfUHTa8Qbz+MIRPzdQkvn4dZPvUAq45dQIhALMax2AvB3MCGIa2KIngxRWoSSrf2uVrfWN+3BHk3j0M","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36348354},"engines":{"node":">=18.x"},"gitHead":"2392effec4bde7cb0a9f5c5360879f8fe14211da","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.23.2-e88da3f-202511201042.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-2392eff-202511201043.0_1763635509669_0.23528561860643826","host":"s3://npm-registry-packages-npm-production"}},"2.23.2-2392eff-202511201049.0":{"name":"@flowfuse/flowfuse","version":"2.23.2-2392eff-202511201049.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.23.2-2392eff-202511201049.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"af736c6ec1b07c7bcafc1db8d0e0ec189c569514","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.23.2-2392eff-202511201049.0.tgz","fileCount":457,"integrity":"sha512-Igph9WU/fCgubtUB95W1TqXPajGHfQ7USj9mNEqkUufvGQEx5bCHO3lRGjYbZ3YxxRSuXGri84ncKIOu+1c2MA==","signatures":[{"sig":"MEUCIQDXnt0Pjos22Rg341Lp2gWS5e7Jewgr12HsWVaEMTlcTwIgWUFjjUNZyw2o04HLTsfZ6j4IxwedHVbomGKHcUDBxSg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36348354},"engines":{"node":">=18.x"},"gitHead":"2392effec4bde7cb0a9f5c5360879f8fe14211da","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.1-3e54669-202511201048.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.23.2-2392eff-202511201049.0_1763635863991_0.25580178150745425","host":"s3://npm-registry-packages-npm-production"}},"2.24.0":{"name":"@flowfuse/flowfuse","version":"2.24.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c23fe97cc30ba0ff8b270fd3d7ce3c40620ef0bc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.0.tgz","fileCount":457,"integrity":"sha512-4KNbmV3GVaIUdFpIZ8ID6L20DSMOLI3kyQOc92ifb7AU108Nk+KcMO28j8x7rLIxHxy1kZ3CPTtTjkPSx9VujA==","signatures":[{"sig":"MEUCIQCFoSl3BZT/vd09jGuWNYsBaJOfBViBqgNJMp+ClquWBgIgBhmqwWviVmKyUuotlXyCydY2OW+GqKp8dhMAYth7hiM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36349034},"engines":{"node":">=18.x"},"gitHead":"e97eb9289821c26c430b438ff81e2b3b950c54d7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.24.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.0_1763636450787_0.08087988197042129","host":"s3://npm-registry-packages-npm-production"}},"2.24.1-a7a93a2-202511201110.0":{"name":"@flowfuse/flowfuse","version":"2.24.1-a7a93a2-202511201110.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.1-a7a93a2-202511201110.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2f6900b2d71be5f206c1a75d411d10c480da930b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.1-a7a93a2-202511201110.0.tgz","fileCount":457,"integrity":"sha512-S6+YzNModp4uaG7HEUovd5oKarX5kHTKxYB5UXjbnKj5SSLwXEP8Qs+4iiAf0f8jGgv0ZxfjlNntbRb04TWuiQ==","signatures":[{"sig":"MEUCIQDmpHLuo0h9PSHDyNzrkF/X8eBGV68Xx3X5qPdYDVruRQIgHPBvNq2+edy0z8oepxUoE51h5B1Ce7/fLLzapC6dAbc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36351061},"engines":{"node":">=18.x"},"gitHead":"a7a93a261faa341180d16aa29e1f02146f93fbec","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.1-3e54669-202511201048.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.1-a7a93a2-202511201110.0_1763637137637_0.14140997482488804","host":"s3://npm-registry-packages-npm-production"}},"2.24.1-a7a93a2-202511201122.0":{"name":"@flowfuse/flowfuse","version":"2.24.1-a7a93a2-202511201122.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.1-a7a93a2-202511201122.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1aa7f92047c0a0e78430e2036bf24688ebf9cfe7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.1-a7a93a2-202511201122.0.tgz","fileCount":457,"integrity":"sha512-ebnhs3TdsChQQTh/2W0FB5WcWuc2K7jSF5cpTi+tD4PYhqic8qIzvgMfyh2lZY5hyuoEQ3jzm73HnY22DikT7Q==","signatures":[{"sig":"MEUCIBS8hqQ8nd6rzYjbw0sZ5aO/8Vw1NHxWDIqz4kYG/AjiAiEA0wtpl3HNAcDAV0dXUZ+ZNsPPBTfaSOhFeXcwOdRXWuI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36351061},"engines":{"node":">=18.x"},"gitHead":"a7a93a261faa341180d16aa29e1f02146f93fbec","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.1-3e54669-202511201048.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.1-a7a93a2-202511201122.0_1763637867375_0.19127212554263817","host":"s3://npm-registry-packages-npm-production"}},"2.24.1-2910a11-202511201533.0":{"name":"@flowfuse/flowfuse","version":"2.24.1-2910a11-202511201533.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.1-2910a11-202511201533.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fae6e55029567c47abe322a29e4bd0283a75ae4b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.1-2910a11-202511201533.0.tgz","fileCount":457,"integrity":"sha512-OB2+st/7apkTUKuFYNW8MqS6AUsr9TY2ENmQRgt5vRot6Hc33CEkV5DHf4tSPExiqiij8rwV6TBq6AiSg0JwSQ==","signatures":[{"sig":"MEQCIAIm+e8it2RGE+NxSaFgEMkHT/M/QzGMDfWeA4ivJ1PXAiBY/I69BCJo97/9ZkgF1fmv4nc7DAp9vDle6m9GM4zORw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36351061},"engines":{"node":">=18.x"},"gitHead":"2910a11a7931d2b9301ff437a5e0d0365ba205a3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.1-3e54669-202511201048.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.1-2910a11-202511201533.0_1763652892241_0.07086906401100324","host":"s3://npm-registry-packages-npm-production"}},"2.24.1-81dc1e1-202511201703.0":{"name":"@flowfuse/flowfuse","version":"2.24.1-81dc1e1-202511201703.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.1-81dc1e1-202511201703.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0c84a2afd78d1c2d8423ed76db86628f5de0be9a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.1-81dc1e1-202511201703.0.tgz","fileCount":457,"integrity":"sha512-iLci/yze/BGiC1FotKO6mXbOmYlgjaa/b+aEHutBQAQo8UT/6Jfkr55IIlf23JuqAKBZDyi+ebCw4NLwPUvKdg==","signatures":[{"sig":"MEUCIQC7AwTp8+/8xzrwCqkwYRyzKynxe9soXN8NRV+UICFEHAIgdf/d/u4iDSH4QV2v8YWSOL1evs3ZKKSeAzt3Ja1SUQU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36351116},"engines":{"node":">=18.x"},"gitHead":"81dc1e15137ad24dc2a8678f7564b4f58fcb42ab","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.1-3e54669-202511201048.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.1-81dc1e1-202511201703.0_1763658325019_0.04972388441008957","host":"s3://npm-registry-packages-npm-production"}},"2.24.1-bf0357f-202511201749.0":{"name":"@flowfuse/flowfuse","version":"2.24.1-bf0357f-202511201749.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.1-bf0357f-202511201749.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"93f69373f481ba8f42bb03f5bf6ae72c9c79c739","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.1-bf0357f-202511201749.0.tgz","fileCount":457,"integrity":"sha512-jdJrc+kBJEtvm9TRLFw4Ps6Y5IjXxpJBSVKEXqZXCFkQ50zfx7YKwUNmcIUN8YkzLJLLkWmvViBs1T8L4qAuxw==","signatures":[{"sig":"MEYCIQC3kFz3yhlA88iF113auNZOuy7jKBTYgL8e2JN+MDGaQgIhALWn4TMo0nXod1rVSXBd1rRpEQ+WvbpAYj0NuTpKO6Z8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36529592},"engines":{"node":">=18.x"},"gitHead":"bf0357f07c6ef9fa0a13adb577c42d1951301736","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.1-3e54669-202511201048.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.1-bf0357f-202511201749.0_1763661051010_0.23019490512571394","host":"s3://npm-registry-packages-npm-production"}},"2.24.1-6755d2c-202511211141.0":{"name":"@flowfuse/flowfuse","version":"2.24.1-6755d2c-202511211141.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.1-6755d2c-202511211141.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ba25f1e348aabd994613e07396f2a0dddc842bda","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.1-6755d2c-202511211141.0.tgz","fileCount":457,"integrity":"sha512-CNSJ81LVmkFZ/6caPLrXH45esR4EpbNCzlHG5xkedLu01HyG0W72ExcQgHyIu86g8vZOs7a262pXG/rz3HoWeA==","signatures":[{"sig":"MEYCIQCoBqFTEA3RlgzZzdC5AzZoEcUqNWAZ+Kq9s1XZH9KAKQIhALF9Edj5Xz3lXjbITYrdRqMGYL1BfK4YDftqJ09kVgkn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36538328},"engines":{"node":">=18.x"},"gitHead":"6755d2ca25d820ff9005600110141bee494a5d7a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.1-3e54669-202511201048.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.1-6755d2c-202511211141.0_1763725374019_0.5646392582766986","host":"s3://npm-registry-packages-npm-production"}},"2.24.1-6755d2c-202511211433.0":{"name":"@flowfuse/flowfuse","version":"2.24.1-6755d2c-202511211433.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.1-6755d2c-202511211433.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fa572eef3ff7dc4afb5f85e4a46c8aab718dc890","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.1-6755d2c-202511211433.0.tgz","fileCount":457,"integrity":"sha512-duuU7kLr2hb/QTz5MbBmWiGryXGDXTc+MZhT7ITEnuoXQrFoGT+8aN8xWWzElVL8EqqkqY4LUdJPYWvZwuaJ8Q==","signatures":[{"sig":"MEUCIQDnt9p4sfFPvWVT2ROjN0r5LpNDTLxqe8oBpKs29/uDJQIgKxdPObNxngTmL6TkYWFyTrvCln07hvVOugcB2GThx7s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36538328},"engines":{"node":">=18.x"},"gitHead":"6755d2ca25d820ff9005600110141bee494a5d7a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.2-33ac8a8-202511211432.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.1-6755d2c-202511211433.0_1763735686602_0.9156884139223667","host":"s3://npm-registry-packages-npm-production"}},"2.24.1":{"name":"@flowfuse/flowfuse","version":"2.24.1","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.1","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dd49a772f1c23ac275d0860d027751c4d6085e65","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.1.tgz","fileCount":457,"integrity":"sha512-e161dZxT+RU9ez8wEI2BlXvIW9Se+dCnh587C/OrY/9PuFqhNZ+ZaenSun/9soOZpBCriDohLZn//JxdfVBciQ==","signatures":[{"sig":"MEUCIQDUbAH6B7TjHP3DlRBbYDoo1BwzQFhOjLggeLKeaNpg6wIgZU7kRvLzZkdfZvmho8LwjFgrrl3iK1vpV8/7WHi0lvI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36535486},"engines":{"node":">=18.x"},"gitHead":"375f5e61ad32f11be2df0b11762179bf81597466","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.24.1","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.1_1763735941218_0.6767622656506662","host":"s3://npm-registry-packages-npm-production"}},"2.24.2-375f5e6-202511211451.0":{"name":"@flowfuse/flowfuse","version":"2.24.2-375f5e6-202511211451.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.2-375f5e6-202511211451.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"465920fb66298988dc95ea29053c5bc02ccd831e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.2-375f5e6-202511211451.0.tgz","fileCount":457,"integrity":"sha512-yUZ7mPl4sBORMRICBd5PqnasF8AKy7wr8TjJHZrK0EfSGhIC0xObWl1wb4iCviYSAnnth8YO86pNkPGd9vz7NQ==","signatures":[{"sig":"MEUCIQD7uOD/vRxD7Usf9ClRTRvBpnfqQQn6icP73Z6kSowDmQIgZ/7L/CYfwSyCMcq/T8cYm1ZcEYZoYt+YbJI1iYx1bNc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36538667},"engines":{"node":">=18.x"},"gitHead":"375f5e61ad32f11be2df0b11762179bf81597466","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.2-33ac8a8-202511211432.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.2-375f5e6-202511211451.0_1763736803330_0.6900369690443064","host":"s3://npm-registry-packages-npm-production"}},"2.24.2-375f5e6-202511240933.0":{"name":"@flowfuse/flowfuse","version":"2.24.2-375f5e6-202511240933.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.2-375f5e6-202511240933.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ea0b4d6a18741b08ae4133eb3bc32e86f71403f2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.2-375f5e6-202511240933.0.tgz","fileCount":457,"integrity":"sha512-9bn1MRlHLwzYFl/fDFEWatungG/cT8elLwGcPc9qbvvnD2+t1D0wq3e05xALPcvymWy+/EOUxGKtYZ6DF4rINQ==","signatures":[{"sig":"MEUCIQCWBZIaH4Xt+7+gmMZBVQAHgia+fMKb+HkpuMQEl2UvfAIgR9EnANbv7xXGFX3HLt+QoVOyc7tlMxPFWdjOWElU1Ng=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36538667},"engines":{"node":">=18.x"},"gitHead":"375f5e61ad32f11be2df0b11762179bf81597466","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.2-33ac8a8-202511240933.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.2-375f5e6-202511240933.0_1763976927871_0.17906812135055916","host":"s3://npm-registry-packages-npm-production"}},"2.24.2-375f5e6-202511241301.0":{"name":"@flowfuse/flowfuse","version":"2.24.2-375f5e6-202511241301.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.2-375f5e6-202511241301.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b49be822ffc1e64baa72f187613abf83934f3344","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.2-375f5e6-202511241301.0.tgz","fileCount":457,"integrity":"sha512-VHk765MtuCv7nr3RXr1SFFxOuqLoxPv6hr0LTvbIdrpscVspGp3IhGJZbEr/x6RZe6gmRansferB6bbBHMTaPA==","signatures":[{"sig":"MEUCIHZFutBi5sRO4vRzbWB23JYeFW6H+izv/Lfd2qP4Nfm0AiEA5rTODEh/wZmm7qPEZv90uuIEQQb2/MK+FKj7BuFWY18=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36538667},"engines":{"node":">=18.x"},"gitHead":"375f5e61ad32f11be2df0b11762179bf81597466","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.2-6b38b08-202511241301.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.2-375f5e6-202511241301.0_1763989407646_0.9707278884765322","host":"s3://npm-registry-packages-npm-production"}},"2.24.2-375f5e6-202511241304.0":{"name":"@flowfuse/flowfuse","version":"2.24.2-375f5e6-202511241304.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.2-375f5e6-202511241304.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d923438cbd5cb38843bb7ba69da0a7c784143947","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.2-375f5e6-202511241304.0.tgz","fileCount":457,"integrity":"sha512-2lbDzi6kQATxHF8JNKj60i0Kw+I2PGJkGf7A7bujLmql04LL0d4ZR8ECKF1IDybuZSZ2qea4pAxfZ59VckTdWA==","signatures":[{"sig":"MEQCIGmfkKZ6PRiPvVeni2Vs+YDGt02vLZh721uarkFqSuNPAiAzmaL1F0zJkwSIMCoknHAkbKe1PmsgmzzBRNo0bKQiNw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36538667},"engines":{"node":">=18.x"},"gitHead":"375f5e61ad32f11be2df0b11762179bf81597466","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.2-6b38b08-202511241304.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.2-375f5e6-202511241304.0_1763989601093_0.14776279972101225","host":"s3://npm-registry-packages-npm-production"}},"2.24.2-1aa2112-202511242053.0":{"name":"@flowfuse/flowfuse","version":"2.24.2-1aa2112-202511242053.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.2-1aa2112-202511242053.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e84da79dff0b964731bb1c684707b1cf54bb4138","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.2-1aa2112-202511242053.0.tgz","fileCount":457,"integrity":"sha512-NcBF7kUlRpZ195/aGbBxB+6qibbX0ym7bYyB2llRKLAUM5TQlNCo6Zz3NrXmf1gjwSEfE7lDxDQiXIXExknXyw==","signatures":[{"sig":"MEUCIQDx4JgW36B2+LYwCexJV3rCsDfvfpLN0DGRuQHbIRpD8AIgachEtobiMsopLW8Fq+VqWAO/UQVm75XsWwnB99RQL8E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36538667},"engines":{"node":">=18.x"},"gitHead":"1aa2112113ba860f7ca4706a51ec6c8ec92c3ec2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.2-6b38b08-202511242052.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.2-1aa2112-202511242053.0_1764017707707_0.9592514388020468","host":"s3://npm-registry-packages-npm-production"}},"2.24.2-c4ff5c6-202511261038.0":{"name":"@flowfuse/flowfuse","version":"2.24.2-c4ff5c6-202511261038.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.2-c4ff5c6-202511261038.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f47949b593129ac296a6a1c9c4bffc2d725ee92a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.2-c4ff5c6-202511261038.0.tgz","fileCount":457,"integrity":"sha512-TtcV9upXIFUKkoJI9GwIiGshS8crMdGStGR3DtPPqtRX36z9CDMYQYRpWjn8Zlzk85uy4CAyncoZFiuDJ1GFbw==","signatures":[{"sig":"MEUCIHpv++uYbJ3h/zzV2GBBJGY3kyJSs8F1wrk6GOR/NTqMAiEAuTZS2DZWk/oZWv7UoOEpY/RnWnU5Sb63W60LceHsb0E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36588715},"engines":{"node":">=18.x"},"gitHead":"c4ff5c6c2d7fadfb1bd7b2bb0004febac1b44ea4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.2-6b38b08-202511242052.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.2-c4ff5c6-202511261038.0_1764153618974_0.7010414455658871","host":"s3://npm-registry-packages-npm-production"}},"2.24.2-c4ff5c6-202511261056.0":{"name":"@flowfuse/flowfuse","version":"2.24.2-c4ff5c6-202511261056.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.2-c4ff5c6-202511261056.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0132aaed048e9a2002cbd67cce919381d985339a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.2-c4ff5c6-202511261056.0.tgz","fileCount":457,"integrity":"sha512-m0wDYuEYJzuceWGfs7sLYSIFheX9MgHu4Ch+GGnb3YH2+CNTwbNrgPtX03e9KHGXtYhe2P9k6A0XPIfse2eXeA==","signatures":[{"sig":"MEUCIHHCJuX+7Uy8aRVpoYtHvZBZH7K+lL1PGIaA260aBEoCAiEA0Og7tYYuucjAAPGMSC6S/mjvvgOrkCFoE7a9Wqs+X2M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36588715},"engines":{"node":">=18.x"},"gitHead":"c4ff5c6c2d7fadfb1bd7b2bb0004febac1b44ea4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.3-5ce65c1-202511261055.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.2-c4ff5c6-202511261056.0_1764154682242_0.7175004347058491","host":"s3://npm-registry-packages-npm-production"}},"2.24.2":{"name":"@flowfuse/flowfuse","version":"2.24.2","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.2","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9ffff588bfb4a778f4ed710592a902e6b5c6b2c6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.2.tgz","fileCount":457,"integrity":"sha512-NLspkP+lwBRRKpRE4KsJKmweGd14oWUL553T18VWtrbDNVZeAIvI3NTuatBWs+WeaXrZgZvN9EpdKo7p2QHnDQ==","signatures":[{"sig":"MEYCIQDgcf9Wt2sxl/BmvPp8G6XBZMf5+PvIy3Da7+PUCyskZAIhALgM8y4dRc9atVUYhm36BkRR/tCEORbYKeVkF2EyqJSR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36586012},"engines":{"node":">=18.x"},"gitHead":"e802dc816ee636ec0800ea04c66c20911586fc42","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.24.2","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.2_1764155206642_0.08440956514514864","host":"s3://npm-registry-packages-npm-production"}},"2.24.3-e802dc8-202511261118.0":{"name":"@flowfuse/flowfuse","version":"2.24.3-e802dc8-202511261118.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.3-e802dc8-202511261118.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"977165f184fd5310160a27346c8cf5402087f46b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.3-e802dc8-202511261118.0.tgz","fileCount":457,"integrity":"sha512-We2BDd5zckwf5qVoorXa4+6XCdv61TBbG9ySD/FmdAxnLAE+oUAxLyBM64xdQ56iSVYAdES6M5v1Wj/pd53oXg==","signatures":[{"sig":"MEUCIEX3q7mCzWnCuRVCz1m189L0a8UZ1SbcOWLYKmYphmq7AiEA2WLrO+V8+b1RGo1pJfMJY1xqbk/xaWwP2kJBw4oxBdU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36589193},"engines":{"node":">=18.x"},"gitHead":"e802dc816ee636ec0800ea04c66c20911586fc42","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.3-5ce65c1-202511261055.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.3-e802dc8-202511261118.0_1764156013634_0.9517567614322489","host":"s3://npm-registry-packages-npm-production"}},"2.24.3-cdf4bb1-202511281326.0":{"name":"@flowfuse/flowfuse","version":"2.24.3-cdf4bb1-202511281326.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.3-cdf4bb1-202511281326.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1607331dfd6ca4e4cb265e41b3cbcac7984ebc0f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.3-cdf4bb1-202511281326.0.tgz","fileCount":457,"integrity":"sha512-vTGdFIj+ZsJdy7UoYhrENyg3h/09hPjZlNKfkXQKdSXDpRDzykdNfSFl6mlxhL4t1oh19LtCMQFqMEP2kCA2zw==","signatures":[{"sig":"MEUCIQDnWxGna6zgydzKh86m+9mIXHOpjfuqdQK390+EWfsrOQIgLNuP4UGNusNbrwSLtgdjMSEh87wc2OhPrmfL2/04Kg4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36589366},"engines":{"node":">=18.x"},"gitHead":"cdf4bb1719eb2cf4d5fa1222d0c326fe197ed2e6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.4-b752a05-202511281326.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.3-cdf4bb1-202511281326.0_1764336510808_0.09978915715129744","host":"s3://npm-registry-packages-npm-production"}},"2.24.4-d900534-202511281345.0":{"name":"@flowfuse/flowfuse","version":"2.24.4-d900534-202511281345.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.4-d900534-202511281345.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8404141ad6591de7e2c12fe146d1fa0d28579128","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.4-d900534-202511281345.0.tgz","fileCount":457,"integrity":"sha512-o6Se+bXVvYz1cMaU8/G4aZP014syYO8QNH7xmOOAeJs8OaAs8OWGY0Ng8wkXVkfr1CF/jGwZDgVfoCzGOA84kg==","signatures":[{"sig":"MEUCIQCVdKY6T+E39hcy8dbghFuMV7jfyS3tam9dswbQCY02HgIgGOYjmCI81eKPgT/2aS3VSZZrwE9PInJFDNb7M966DMo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36589592},"engines":{"node":">=18.x"},"gitHead":"d900534dd62600d380aa30ce313a97e6ef7c616c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.4-b752a05-202511281326.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.4-d900534-202511281345.0_1764337650078_0.5960407861985226","host":"s3://npm-registry-packages-npm-production"}},"2.24.3":{"name":"@flowfuse/flowfuse","version":"2.24.3","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.3","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"de991c3cd7a3c8854b07d5ce1f2a56b52581ae18","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.3.tgz","fileCount":457,"integrity":"sha512-t8L+0q1e7bBU2qTOzNer9CVI4lOB3QCkeRu44SUCR78CuHpYgSO+nPpnUGm2oukT3BszQv5Qx8KKvlYqu10RMg==","signatures":[{"sig":"MEUCIQDM4jf6F66xjKE9o7F15N1JCfv9jt5qnddrKildcVVMhQIgAxjLZ0cTmYJhjcEcfE1G/umtaS4d1zuGwQ/WXdpTnUA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36586411},"engines":{"node":">=18.x"},"gitHead":"d900534dd62600d380aa30ce313a97e6ef7c616c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.24.3","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.3_1764337655733_0.7734375801657412","host":"s3://npm-registry-packages-npm-production"}},"2.24.4-d900534-202511281400.0":{"name":"@flowfuse/flowfuse","version":"2.24.4-d900534-202511281400.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.4-d900534-202511281400.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3963a07d64cef31cd36f125114da25012667c566","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.4-d900534-202511281400.0.tgz","fileCount":457,"integrity":"sha512-54LzWr61KA8Zd/su8apj68sbfOCZ8nBaODdCrG/3qfTrZ5C5gFLSx2uNlruWCL/VO91hG/kY/pT/6cBj1Satrw==","signatures":[{"sig":"MEUCIBxZysHLxvSwnBHzNRcWhvgdi2szrkqeH083Km2BYLWGAiEA4xnb9jSauyJus/r9GqOWoLoQCtB2t6JbNEdwC23+qxI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36589592},"engines":{"node":">=18.x"},"gitHead":"d900534dd62600d380aa30ce313a97e6ef7c616c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.4-b752a05-202511281326.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.4-d900534-202511281400.0_1764338526298_0.5941192217494691","host":"s3://npm-registry-packages-npm-production"}},"2.24.4-69dfdfa-202511281459.0":{"name":"@flowfuse/flowfuse","version":"2.24.4-69dfdfa-202511281459.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.4-69dfdfa-202511281459.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f9a9eba2ce13d898f6680b82ec366253dc80ac52","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.4-69dfdfa-202511281459.0.tgz","fileCount":457,"integrity":"sha512-1P3mcSAXwUHH3eKn92lVntddVidBamcHBxpLxSzBMdx9tuAHV8t7uMZfBgErQlqwNPOFqqBJhWMOSli1yiYusg==","signatures":[{"sig":"MEYCIQDlZdZVWtcGUNzAxPMRT0U0P1/zFstQOA+aaoFDaWYtagIhAO8uz4PrCKxeMYcKqnFrPI7KsuhU86JDa/buF49vXvfR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36590532},"engines":{"node":">=18.x"},"gitHead":"69dfdfaf25dc5869bae84214dd30ca9c20fdbfd4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.4-b752a05-202511281458.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.4-69dfdfa-202511281459.0_1764342049635_0.8482989118551962","host":"s3://npm-registry-packages-npm-production"}},"2.24.4-69dfdfa-202511281509.0":{"name":"@flowfuse/flowfuse","version":"2.24.4-69dfdfa-202511281509.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.4-69dfdfa-202511281509.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fdaa937668a64440cf7a0b1bccb5083e3953bf91","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.4-69dfdfa-202511281509.0.tgz","fileCount":457,"integrity":"sha512-vh2KFsIN9kbHbDYAz6oXWkaw4dyF7k8jUnl51LGYCZ7WEtqOiMIJifxoFPcqcvfropaxLSgm4PfhUk8p/Y2R/Q==","signatures":[{"sig":"MEUCIQDnfr5x6EU9Czlx24jf21PsTi2W8C/2AgW3EQuK6G2ovAIgQB+OlDvtMbEYNZxIZ9buYd18bJc0RsPULsfCZd0mcfs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36590532},"engines":{"node":">=18.x"},"gitHead":"69dfdfaf25dc5869bae84214dd30ca9c20fdbfd4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.4-b752a05-202511281508.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.4-69dfdfa-202511281509.0_1764342644878_0.5136976949340668","host":"s3://npm-registry-packages-npm-production"}},"2.24.4-7e40d9c-202512011015.0":{"name":"@flowfuse/flowfuse","version":"2.24.4-7e40d9c-202512011015.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.4-7e40d9c-202512011015.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e966c0dcca47e2486be28dcba90b41906e32db26","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.4-7e40d9c-202512011015.0.tgz","fileCount":457,"integrity":"sha512-1wm4YkCoKMov14QbCL1d1D1vx9D0WWRE3gurWqtjzB0MigDziiQ5HsG3PqBgHKBUKgcTeviYD2N9abKTxoUEZw==","signatures":[{"sig":"MEUCIHUNyEoZYHg6oR1fyn9kCig2EF5zhSCLnp7O4D5f3v/2AiEAo6HSKiF6fBjCSBEDuCwh8x1N5jBO+L9flkRVfMMSc4g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36590554},"engines":{"node":">=18.x"},"gitHead":"7e40d9c1f0a47e313c65ec043dfda5c45f498066","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.4-b752a05-202511281508.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.4-7e40d9c-202512011015.0_1764584217963_0.6769677501810156","host":"s3://npm-registry-packages-npm-production"}},"2.24.4-7e40d9c-202512011121.0":{"name":"@flowfuse/flowfuse","version":"2.24.4-7e40d9c-202512011121.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.4-7e40d9c-202512011121.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"114c5f07d2e7bc2e9d00203a54ca016d43471a60","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.4-7e40d9c-202512011121.0.tgz","fileCount":457,"integrity":"sha512-tCsXaSwHCkWUv7y8XFR7T815v5l/GVawsk2RSzxVmSD1LZAK34ZAHaomxKvWXrn9gyXKz2/wzAQS89CCIpv+RA==","signatures":[{"sig":"MEUCIAM8dvw3dSlfOqWs+NUk4OrsPez1yQ96VAp59pzhWrRmAiEAlhnw45FNvZ56xmOpHFv5lLBiyCarJKp14OLPP8tRFK0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36590554},"engines":{"node":">=18.x"},"gitHead":"7e40d9c1f0a47e313c65ec043dfda5c45f498066","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-882d120-202512011121.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.4-7e40d9c-202512011121.0_1764588204167_0.9234512829474182","host":"s3://npm-registry-packages-npm-production"}},"2.24.4":{"name":"@flowfuse/flowfuse","version":"2.24.4","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.4","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5b0eab1a6dd05732b1a79ab9e086f20b1f74a872","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.4.tgz","fileCount":457,"integrity":"sha512-dnmtJw+pINYaZs2Bc/Jv4b0YBYDQkEqGSlJWvUhmpAjLkGFNZsp11GiFHLiQYh1h6XvwEIoEtUvt29arjH+HLg==","signatures":[{"sig":"MEUCIHjWHAYQyX9HfsYaii8wHrVjfRtjidk3tjeES5MqbmWyAiEA8cR4GgIbqkiMwDJhwXnpacxxleBNztsfZeJNPbtkJq0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36587840},"engines":{"node":">=18.x"},"gitHead":"6c377f589675d0aa2425a5faf3856c2470af0782","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.24.4","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.4_1764588661683_0.8000570930180655","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-6c377f5-202512011144.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-6c377f5-202512011144.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-6c377f5-202512011144.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"434684604aef0c3c38a9554bde8556c962aadcad","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-6c377f5-202512011144.0.tgz","fileCount":457,"integrity":"sha512-09Zce/SJmgu/oL+6tY5xxwsv1wh55uURPpsJ17QWqgkHOxPe+/H4Ib0ScixugQVb88V6qGqG8uKEj8GMkiUKLw==","signatures":[{"sig":"MEQCICIhJO38P0Av9V6xH7u44B3JJnuRN/rGH3U1XSZZDDZbAiAEx54texcjbVd/hHenGihyO7iH6wyEyZXx1SVqs37jfA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36591021},"engines":{"node":">=18.x"},"gitHead":"6c377f589675d0aa2425a5faf3856c2470af0782","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-882d120-202512011121.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-6c377f5-202512011144.0_1764589541755_0.37156207816281905","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-a78f696-202512021002.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-a78f696-202512021002.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-a78f696-202512021002.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"202a9a859981f274e3e4fef83941e8c679c2a155","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-a78f696-202512021002.0.tgz","fileCount":457,"integrity":"sha512-FIBQB1GcGpm3cLiNe+paXTwzGdRnT38VvO8bW09nALYu+jffxsuKS54rnQoPBVOCTYW+ArWylDwDqfx9sIEybQ==","signatures":[{"sig":"MEYCIQCpxM3dtQzg0+pc+X+M4uwVcNKWnHTx9zn060oOIvejZgIhAJVlXMFtN1e8GfaL4xD9ie2xjj1c1FDRpffs+NNqKKnZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36591021},"engines":{"node":">=18.x"},"gitHead":"a78f6960c0c8455c721c2ebb1eef81c33de56b4f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-882d120-202512021001.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-a78f696-202512021002.0_1764669825190_0.3796140601824174","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-a78f696-202512021006.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-a78f696-202512021006.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-a78f696-202512021006.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"84eafca2cf680ab9b8322682cf934d9fd47077ed","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-a78f696-202512021006.0.tgz","fileCount":457,"integrity":"sha512-DVbRc51zMGoQBVX1nLMAKi6hs2L4yw24lsPGE4UtiWpi6vsU3QSXLsfOenPX31NwW+a1irn87ifmuc4/dEO8MQ==","signatures":[{"sig":"MEYCIQDsKLdVVO7uia/P35ec+w9488j9O4Rzv1gSoY0pu6HAtQIhAJ9/Xy9j2ZELZRc7Inqy+zHAEjCLjEMCHuWSLX4ECxlK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36591021},"engines":{"node":">=18.x"},"gitHead":"a78f6960c0c8455c721c2ebb1eef81c33de56b4f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-882d120-202512021005.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-a78f696-202512021006.0_1764670075801_0.24962258811218319","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-a78f696-202512021008.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-a78f696-202512021008.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-a78f696-202512021008.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9b9f9cc06ba83dc497f7eaf43c738387f63f0a90","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-a78f696-202512021008.0.tgz","fileCount":457,"integrity":"sha512-Qhi0UN3P3Dv01GHYJyEvm+rUCRuD3KdAXztI/eHHM01IRaddQyqLsmfqjdzFN1Rtq9l7JcD8JfYhNZuIZ2HRkQ==","signatures":[{"sig":"MEQCIHO/ejw6fubuKkySd8dLGC7qBkT9HiWLXD0F8apaHZKkAiBVkykaEumOPvmEPrLiad0NOnk9/u081eiP6bMJVC8wMA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36591021},"engines":{"node":">=18.x"},"gitHead":"a78f6960c0c8455c721c2ebb1eef81c33de56b4f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-882d120-202512021007.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-a78f696-202512021008.0_1764670208218_0.02642034983853958","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-a78f696-202512021108.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-a78f696-202512021108.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-a78f696-202512021108.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d912d49ac3b87d59c4f5f18abbd00fbbe46aa469","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-a78f696-202512021108.0.tgz","fileCount":457,"integrity":"sha512-T8RtEk14mIYc1XgV62oUz4g9L/LHdQkpjsqWMTp/ZzqKndLTaBG4CNGXhSiXQ+QsfS2UFFgCeLaM+arQgHrY3Q==","signatures":[{"sig":"MEQCIB2eKFyr5OW8dnjUUIMwLllmOE0Rr6w1mumdDDazoA6RAiBOAwOQAAsu3G7DzzozyRl3bICZ0ZQr1zdaXgwgxR0u0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36591021},"engines":{"node":">=18.x"},"gitHead":"a78f6960c0c8455c721c2ebb1eef81c33de56b4f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-f3a1180-202512021107.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-a78f696-202512021108.0_1764673802821_0.847120660949529","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-a78f696-202512021111.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-a78f696-202512021111.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-a78f696-202512021111.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0df7e1de79c46f33e6d36b61814717a587f08d06","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-a78f696-202512021111.0.tgz","fileCount":457,"integrity":"sha512-0AOtvMRjOAHm7NSntbdI72JRsFVvvKarJ/JG+oRcVcRqQuAPqxACHMnEv7eM9bKCdMBMoybmgDe1XtJ9ZULZGQ==","signatures":[{"sig":"MEYCIQDut9O4rp7Ari1/MzcW/zkQW+hXHbqpQNfXIbFe1W4fCAIhAMaOhwvemz84P+FmGoLVCYPZHRSvAcI4yXZ6EjAhRGEA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36591021},"engines":{"node":">=18.x"},"gitHead":"a78f6960c0c8455c721c2ebb1eef81c33de56b4f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-f3a1180-202512021110.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-a78f696-202512021111.0_1764673967373_0.00530977082284978","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-a78f696-202512021115.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-a78f696-202512021115.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-a78f696-202512021115.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4272ec9f870cbb16be8ae95a8ba1eb40cd90ee60","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-a78f696-202512021115.0.tgz","fileCount":457,"integrity":"sha512-4Rmfdszyk4WhTAOe5LHWLIxyryHkixEhidgQp0OBIGldTSCajxLsVbjNwKniLkLLc924vWQmqsNX/xva3jYrOg==","signatures":[{"sig":"MEUCIENh7tMGkYHvCo1dE/+e+ZOy4MKwtQ+MCoQ1/o/WSi0gAiEA6IivUKoklJIo+pZRYQrf0BNvqdkL9utxdROsLS3Gh/I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36591021},"engines":{"node":">=18.x"},"gitHead":"a78f6960c0c8455c721c2ebb1eef81c33de56b4f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-f3a1180-202512021115.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-a78f696-202512021115.0_1764674248080_0.004706836700482331","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-74672f6-202512021546.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-74672f6-202512021546.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-74672f6-202512021546.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"884577f41504379b8f9ca6a33357e5cc91473f85","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-74672f6-202512021546.0.tgz","fileCount":457,"integrity":"sha512-eJr7mCfSvKN2LAY7LE4HQeuu7b0Tqs33p+dJ9RorEySMRdV3D6GJ2xqGkup7hi5bL1ZRoNxaBInI+FkewQ6UwQ==","signatures":[{"sig":"MEUCIEgUKV84SLT6m+Zn2T3ATWMUlJ8vcoUcn36Z24LGFznrAiEA2BEZpno5nh+CQP2a8T06lmBmcsokOoRjjl9iZUdcFa4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36591021},"engines":{"node":">=18.x"},"gitHead":"74672f611d376a2ea781685c1c31ff7a1b2ef41c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-f3a1180-202512021115.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-74672f6-202512021546.0_1764690505621_0.9607532650676824","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-fb58b06-202512021933.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-fb58b06-202512021933.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-fb58b06-202512021933.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"77f4d0b84a2cfee2ba305e8bc556ed7a7f163535","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-fb58b06-202512021933.0.tgz","fileCount":457,"integrity":"sha512-s0DNAAuRp26/mZX6CuCKLLS7oBFNPKRWJmnXoP26G4JGTu+YE3Ymw1Ptd8pgM7PwSYLrNFRSUmiDGnTcH2Hqsg==","signatures":[{"sig":"MEQCIFPVZ0M9UrleT7mtZ/vOVh31Bg7GJvk0ybyUu7WVsufhAiA79QQF+JqPO3NTP4X9WE9vuqDwG0XA+mGTFYiw3MWwlg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36591021},"engines":{"node":">=18.x"},"gitHead":"fb58b06162c70e1101f3c8b1ed494fabc7c3ee88","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-f3a1180-202512021115.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-fb58b06-202512021933.0_1764704115077_0.7940050560177392","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-fb58b06-202512031034.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-fb58b06-202512031034.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-fb58b06-202512031034.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"97f87ba6ac700f71f2f407279b7c4a3196e17ebd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-fb58b06-202512031034.0.tgz","fileCount":457,"integrity":"sha512-uJC53hahM8C7SrCY9ZJZS0va7nPCCAQOEGcJ0n2XEcXynsy2WmauSUhDSWJGUfm+d95gwTFqP/iL9VM5lzATSA==","signatures":[{"sig":"MEUCIAIcnwy3yt5U0VOOalwB/agcm6iVOeBxAZY6s6CRVUuZAiEAtqKHzW234oAKT1ohL4MttCnM35PblL+ur4p0WPPc5d4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36591021},"engines":{"node":">=18.x"},"gitHead":"fb58b06162c70e1101f3c8b1ed494fabc7c3ee88","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-f3a1180-202512031034.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-fb58b06-202512031034.0_1764758189225_0.2250129252396489","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-fb58b06-202512031037.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-fb58b06-202512031037.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-fb58b06-202512031037.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a2e67f90482ada146871e9c4598bdc7e2f71109e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-fb58b06-202512031037.0.tgz","fileCount":457,"integrity":"sha512-YmvVgaPQCCFdmaLHWHbBzzoiSMKoMdFIgDI8eZwOUbhntjb1JN6YxLKHYD8Ysy+Qa2ExrAi139rszLFIqm46Kw==","signatures":[{"sig":"MEUCIQC+LJ2HlwKr8F3A78UEKYdeeUd8W/ODRmDIMfAomyMidAIgB9W6n+EYcWVKJwdjo9vvmviTF+PdLJkxS5M3Dtobvqs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36591021},"engines":{"node":">=18.x"},"gitHead":"fb58b06162c70e1101f3c8b1ed494fabc7c3ee88","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-f3a1180-202512031036.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-fb58b06-202512031037.0_1764758326508_0.4184441118694944","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-62f4345-202512031146.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-62f4345-202512031146.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-62f4345-202512031146.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f5c74e374da5b01003b70ca49807a06c37d24bdc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-62f4345-202512031146.0.tgz","fileCount":457,"integrity":"sha512-kATCCACvo4h6er9SB1a9DBxKgh7SJwnB/FcCgF7nYcusZuTCaQhphxG5275m9ZZa0v1sTvJp+OMSwdCmCIxAQw==","signatures":[{"sig":"MEUCIQClbcMgmOKkuctNXKGaPMdkHTEW3C9hzS4LWEFfR/Yc2gIgLBJIGVHVQbyjQIcpnKUhAEgReMzuAmDpiwIAV7BIBvM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36591021},"engines":{"node":">=18.x"},"gitHead":"62f43450faf788c95c7ea10d289c246741c2823d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.5","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-f3a1180-202512031036.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-62f4345-202512031146.0_1764762466109_0.30787624283259696","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-39390b9-202512031428.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-39390b9-202512031428.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-39390b9-202512031428.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f118ca7448d5f95f9740409cabfab038651f73db","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-39390b9-202512031428.0.tgz","fileCount":457,"integrity":"sha512-zM1ACE/q+xIB3Q/g6+NqcHKFGswt9rSasAe38cHaN6xUsTIyw7k+AawMbgEooEFmZiIhUX7XTRtWfwlLTn/1qQ==","signatures":[{"sig":"MEUCIGXU/4IdSVy+lxS5LFl7yHhhg07m6am+iYCsmzobg31ZAiEAs80k1+JeY3CTUXEZZqb+fmszQcl2pztl93bySBzFV4E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36593843},"engines":{"node":">=18.x"},"gitHead":"39390b934fbfad27708694841c155845c00a450b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-f3a1180-202512031036.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-39390b9-202512031428.0_1764772231759_0.7653527847176915","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-39390b9-202512041112.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-39390b9-202512041112.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-39390b9-202512041112.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2360e4b553ec20aabd6aaef2ce8a280548f6047a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-39390b9-202512041112.0.tgz","fileCount":457,"integrity":"sha512-c4Mx8yNvEWSBRD4anL1LIfh19gO5EmHxKWlalsNBMLGZxhJNl3EAvCTlaeUOhT32Rq85JNlR5SXip3WiqDIbxw==","signatures":[{"sig":"MEYCIQDHB+DO4rf5pRUEh/sUwYt2PIsYDZ/Lr5lD3P/m/SQSdgIhAPUgG8R5kKSTWnrs2vVhTyTwBNB8tUzPkgGj/gVcigh8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36593843},"engines":{"node":">=18.x"},"gitHead":"39390b934fbfad27708694841c155845c00a450b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-f3a1180-202512041111.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-39390b9-202512041112.0_1764846817847_0.17369650275501614","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-e2635c2-202512041355.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-e2635c2-202512041355.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-e2635c2-202512041355.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dc77cb0720e3ffb57a67dffc83ae8f07e7e8cc92","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-e2635c2-202512041355.0.tgz","fileCount":457,"integrity":"sha512-by6HiSeNexMV/js+ri9/9abYOl1ud7QqPIQaZ5h4MJP55gtJ8O9dgD886CqHnnf2SN/Wum0ccCjObMyZc1vdPQ==","signatures":[{"sig":"MEUCIQCH2cYziyJnQDASKegGEXmjY5fcKJyNCQNm4x5p9qNKDAIgLzTHaUljDqT8NE9p0TbUdvruSpsu6hgIJUN/tRaE+vU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36598049},"engines":{"node":">=18.x"},"gitHead":"e2635c22ab64e296c8db7da038d1b768fcccf105","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-f3a1180-202512041355.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-e2635c2-202512041355.0_1764856655122_0.4628325310607764","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-e2635c2-202512041359.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-e2635c2-202512041359.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-e2635c2-202512041359.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bf2b9906bdaed204dd91bbe6f8eebf8c6327feed","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-e2635c2-202512041359.0.tgz","fileCount":457,"integrity":"sha512-/5JNb6teHhFo3kdbAXdIemf4qelcRvRG6BaeynVvRkB+/EKDEQI4JmNoQo4Q9slTGg2mEPRJi+iPZbrinZh1Aw==","signatures":[{"sig":"MEUCIHMJY5dNNArn8L645oUCQzks9KO+SZWliZog4nat+sKAAiEAhxnHmrHlW+2ijaiumCasi34LQZt2UWHJhaij36uGnHc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36598049},"engines":{"node":">=18.x"},"gitHead":"e2635c22ab64e296c8db7da038d1b768fcccf105","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-f3a1180-202512041355.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-e2635c2-202512041359.0_1764856838842_0.534448984358668","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-905d07b-202512041554.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-905d07b-202512041554.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-905d07b-202512041554.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"49a943bf397500796b7f1e69415e833de6dca53c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-905d07b-202512041554.0.tgz","fileCount":457,"integrity":"sha512-81yXBAX+WgJ2jfpc+LfV7yrthJoysZjHNdDBoTPoFZpU+/Gt5tJTCYIA1cknqYuzq3O44ifFpV4zi8Bm+wqjDw==","signatures":[{"sig":"MEQCIDdSYYo/MD9/IpyBhTU1FwLzEDt4YYM7c2q+VuFHg50hAiBz9leUcpFZxkwAsRZ2wtXPujGVdA+rVLX7Mg6Y0r+Jjg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36606506},"engines":{"node":">=18.x"},"gitHead":"905d07bd519cc79c01f21614ac4a8f040c95c023","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-f3a1180-202512041355.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-905d07b-202512041554.0_1764863761920_0.9551117658262038","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-b3f80ca-202512041751.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-b3f80ca-202512041751.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-b3f80ca-202512041751.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2f9ba945c5f77532f66fcb6b0a43dac622e2e9cc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-b3f80ca-202512041751.0.tgz","fileCount":457,"integrity":"sha512-hnh78qdUDYCC11tEVomX2UkZHoK8XOQf0g8g2jqSPpMn8KVDMG/+IdQI3NAOqRpghK4GB7YBre5tGXxLmuiwDw==","signatures":[{"sig":"MEQCIAmTFDOjbfTQTGGpr1biodGWF053GWyNtbh0i1674eFZAiAc3LxLvULmEvWKQSCt6jx020FfeL5GbTpJmQZDgUvv5A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36606506},"engines":{"node":">=18.x"},"gitHead":"b3f80ca9b7d4b925b351a50d20c4bb326613da55","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-f3a1180-202512041355.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-b3f80ca-202512041751.0_1764870789413_0.3907991767444219","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-d11e22f-202512051025.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-d11e22f-202512051025.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-d11e22f-202512051025.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"211874af97240b67ed6119a3f4a2e0166bd0c9c0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-d11e22f-202512051025.0.tgz","fileCount":457,"integrity":"sha512-AWT5Cc8x5TxepJIpibmnEspAvsIuYiITz4rdAjg1ybz3TQ9QY8YkaYWhmhTUZiJTVCtfDq3q51MKtJi6tHlT8Q==","signatures":[{"sig":"MEUCIQCI/0w+bSzP84bVjLrXXTlE9mDgYv2ZidKHwRfGD3ZWmQIgHl5stlM+t/Btudjvlj1HHEh0pqwJVyf7uWH1DEBF6Cc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36578350},"engines":{"node":">=18.x"},"gitHead":"d11e22feca3809fc92ec960b0d20e61e2599a8c6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-f3a1180-202512041355.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-d11e22f-202512051025.0_1764930442011_0.887426851185132","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-d51c8a8-202512051102.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-d51c8a8-202512051102.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-d51c8a8-202512051102.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"90b4c72c20f0a606e2df32292ac8188bf5b28189","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-d51c8a8-202512051102.0.tgz","fileCount":457,"integrity":"sha512-w6J8R7AtKnQsnoeEJXGQlUAqGIupUpdppIyDvT8VDErSHjQprj1P6Qvwm7vVjEk5iRiP58TRPuHR99CxTd9mDA==","signatures":[{"sig":"MEYCIQD+sRVQ9lK7cGZzsUs5H2Xe6gqK+4/p6ZtEHzEUmT8HWAIhAISISHUQBTsEPOGzXC89KDyREH8jTnCl3Gh73lSdqBBs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36587426},"engines":{"node":">=18.x"},"gitHead":"d51c8a858c4895e79dab21c9c8a64a360758844c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-f3a1180-202512041355.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-d51c8a8-202512051102.0_1764932663434_0.4591558321596465","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-6825599-202512080753.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-6825599-202512080753.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-6825599-202512080753.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"442087285dc20a3edebf620f6f31e70b6e62266e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-6825599-202512080753.0.tgz","fileCount":457,"integrity":"sha512-PGNTV2ZxLz2kjvwiSm2xQVTeLf/tVZelDtjS/2UAhBQ0IjeE+jbHlTUyqO1xYxe1lNBonDQ0c6RwChl/jWcXfg==","signatures":[{"sig":"MEYCIQDXJb+1KcVJ5TuR6kzQC+mCERJpK/nfPzGR2uXbHwJXeQIhAP4mM1SpRWt7Wf2JOx6HwRQBCt9HhoGTouaDZPVqn3HR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36587426},"engines":{"node":">=18.x"},"gitHead":"6825599901fd37b62719d1931233df317af02b8b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-f3a1180-202512080753.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-6825599-202512080753.0_1765180521712_0.9164916433089845","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-04d9032-202512080956.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-04d9032-202512080956.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-04d9032-202512080956.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"902d1896c3916a4da112aa069e27f4a5197e14ea","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-04d9032-202512080956.0.tgz","fileCount":457,"integrity":"sha512-5CuxIassi2vl9gthjL/uaebjmLaRxXW/iEDj0jZomgjosiFAYaIt+fcAtood1EeEtvoCdRzigI2H9/UljuSsyw==","signatures":[{"sig":"MEUCID49CBsJzQYemy15w9Td3Je3x8ASG+2savoPOuIdeEAXAiEA43FOyfh3QTCJYEuLDCy0sdLIbk/cZ+8bn6Py6CisGfI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36590856},"engines":{"node":">=18.x"},"gitHead":"04d90329ae555eb6240383b9dd4545f8ce14b427","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-f3a1180-202512080753.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-04d9032-202512080956.0_1765187867090_0.7394145478944232","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-04d9032-202512081031.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-04d9032-202512081031.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-04d9032-202512081031.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c1612b0031f819b7669eec8abd21226ae5334495","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-04d9032-202512081031.0.tgz","fileCount":457,"integrity":"sha512-vw1X1VZIfJF/oMdHDARIU/43E0Ru/QFK2cGcAXMpKw0GT8oPfwEyLQAfHKo4OQGNH6NAoAVyMHZcf1jCQ0Hpeg==","signatures":[{"sig":"MEQCIHfD7y4b2USHAx/P5RJdHyJGUw7N7uwGt+QiRs4QUPCgAiBXb/YNvvxnt+iH09HYislyZl3ZjUQLpJ4W300tM2Kr/w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36590856},"engines":{"node":">=18.x"},"gitHead":"04d90329ae555eb6240383b9dd4545f8ce14b427","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-f3a1180-202512080753.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-04d9032-202512081031.0_1765189967684_0.9797704158258536","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-04d9032-202512081150.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-04d9032-202512081150.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-04d9032-202512081150.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"18367c582742ca0d5c324e05097d0d302d958a48","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-04d9032-202512081150.0.tgz","fileCount":457,"integrity":"sha512-fL6gmTCCElAtHlhU9iT3ISNBTRV/nU50U294W7fF63diYHLbinefI01egNXQUOuZ2OlLjWUkIwD7joaNrC5YiA==","signatures":[{"sig":"MEQCIHvekS7Imus6QybAubKzCoquOlQv4C2SJKdVxIPkmgLtAiBBAcM6LutLavaTWbCdmUT0JEEHGsvbNjMPdV3hhOHjKA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36590856},"engines":{"node":">=18.x"},"gitHead":"04d90329ae555eb6240383b9dd4545f8ce14b427","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-f3a1180-202512081149.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-04d9032-202512081150.0_1765194730387_0.8640276664404809","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-04d9032-202512081220.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-04d9032-202512081220.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-04d9032-202512081220.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"652f52cb7fb5587d209fd2bbdf7158d803d91a93","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-04d9032-202512081220.0.tgz","fileCount":457,"integrity":"sha512-ulgVB2dvkOuM/iEzCpl76g8/Rack8jcoUbTHrZpoOBGhsOM2caqSyBiBtNN5RBCtAipK+RzG9J2aZCiLMKwVsg==","signatures":[{"sig":"MEUCIDJgALVE4XesnNO51aqapfmJa5MeisRcfg5THNt66R0mAiEAh3JV6+17kJSON2AFqO17V/SETRbWfU4PO+cLdJA+JF4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36590856},"engines":{"node":">=18.x"},"gitHead":"04d90329ae555eb6240383b9dd4545f8ce14b427","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-477d9c0-202512081219.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-04d9032-202512081220.0_1765196516085_0.2618453297711716","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-04d9032-202512081223.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-04d9032-202512081223.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-04d9032-202512081223.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8c746a5c80553e839a46a2ef3c0f4ab631abdc81","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-04d9032-202512081223.0.tgz","fileCount":457,"integrity":"sha512-yciDPF22BZN342LynitGRUDEIkvr1+d0KCGGA1fJxVE2WNJiTjDR4A+eapQmDYc3UkN6Tv2UkFlkvcRhAhrmFg==","signatures":[{"sig":"MEQCICx9XnNqCTCL3yXicJ549LzdUUn9fXsnVyuDuMGy7xQlAiBk7BVs7jnqcpqSSffq6eLTogV+vuuZVwo2E4ePkHbCMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36590856},"engines":{"node":">=18.x"},"gitHead":"04d90329ae555eb6240383b9dd4545f8ce14b427","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-1e03ed7-202512081223.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-04d9032-202512081223.0_1765196732742_0.21957593167883394","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-04d9032-202512081421.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-04d9032-202512081421.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-04d9032-202512081421.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d2c074f60e929b66ff259f3cf7cb449413ec390e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-04d9032-202512081421.0.tgz","fileCount":457,"integrity":"sha512-K5agC5uLx/qyHCYeAYgqzmu927/GYtjzHbqfnZz5jSmfinKCLD7StosqQB322xAXF/5g/AhJDhSoLGRcluP5Wg==","signatures":[{"sig":"MEQCIB2zn0TjEVgqjE0YSkz879tH+4GwbvL9J9Rqxf+n0jYRAiBuaEK55H6zyCdtgvErRdmBgMB11fuxu+VVSscPhOEtMg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36590856},"engines":{"node":">=18.x"},"gitHead":"04d90329ae555eb6240383b9dd4545f8ce14b427","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-1e03ed7-202512081420.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-04d9032-202512081421.0_1765203774470_0.2575137673560284","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-04d9032-202512081423.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-04d9032-202512081423.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-04d9032-202512081423.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a07ef881f1333c9260cefda41f3e207dc7192c8f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-04d9032-202512081423.0.tgz","fileCount":457,"integrity":"sha512-OrEoLR6QzCdB/RyOVLBDlU0rDB0B5KLOV/sSH9dEn4uMLAwkn24Mt1y4Z/8Z406GhwLDbfqjpR0Msr+5amNfPw==","signatures":[{"sig":"MEQCIBAqihN4CalNd6KK5uKmI/AjJ7FLmzsuoYVo8JJAGRrfAiArRSsxWij6EZVPbPAgUg8jIc+mr5Tw+PUw9wPC8z48gA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36590856},"engines":{"node":">=18.x"},"gitHead":"04d90329ae555eb6240383b9dd4545f8ce14b427","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-1e03ed7-202512081422.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-04d9032-202512081423.0_1765203890442_0.7394653768698345","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-4fdbb14-202512082048.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-4fdbb14-202512082048.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-4fdbb14-202512082048.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bc089b46488ca385b759c310c1fc1b43e6728f51","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-4fdbb14-202512082048.0.tgz","fileCount":457,"integrity":"sha512-DF51h1aRZhmlaKGX2dOf4SHHYWAd7RS6FSkVLKAHlCIY6vNaNk6niJyvp6sbwTqkLNivRQ/+gzf54PQ03LjHGQ==","signatures":[{"sig":"MEUCIQDj0422l8lKDDtA8SP7o5YfevsZteC6BJXYApRx1mvOYQIgaxNWEofZPDRMQBargVavYKrHO9cwTn98BXYMTXMPlIY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36600334},"engines":{"node":">=18.x"},"gitHead":"4fdbb147f3a3809816bdc38522493a66518f3129","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-1e03ed7-202512082047.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-4fdbb14-202512082048.0_1765227010244_0.2913241792979018","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-4fdbb14-202512082050.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-4fdbb14-202512082050.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-4fdbb14-202512082050.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"20a03d0ebf2f549c0635442bd9ef27acfd7c3bd1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-4fdbb14-202512082050.0.tgz","fileCount":457,"integrity":"sha512-jXjTzMvmKy2gxt5YQnjiELmHVN9tyZWsa9bSCL8TjDV1leEGM35SCksExgV9zx98q58Whsd0eOqbWVwcsynGkg==","signatures":[{"sig":"MEQCIBqdj3SExpZLIlVAMBtJnJGbS1qCIWMQoFgkLvrxFKyzAiAXsMut18utfsASKVD2f1efha7joP7nYzXf65FioHxmeA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36600334},"engines":{"node":">=18.x"},"gitHead":"4fdbb147f3a3809816bdc38522493a66518f3129","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-1e03ed7-202512082049.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-4fdbb14-202512082050.0_1765227129946_0.8821177607551991","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-a12070c-202512091016.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-a12070c-202512091016.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-a12070c-202512091016.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fe0dc9cd481981480843f8f3880ebefea3d84c5d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-a12070c-202512091016.0.tgz","fileCount":457,"integrity":"sha512-rifnu1bDVq3SRoMB1BdoRIdiCt3BRng0ks1aLRVdaU+geq+891XwNTabDcIcrT228PxeWtfuXyzZYBIvMSPwrg==","signatures":[{"sig":"MEUCIQC3QuKvrAZtAaIJOhGHQ93nOAdhfmG2dA38yQkhvXXF5AIgeTAZTfiVBybUS7BizkeNtllnOOQ6FYSbWjQlB5SuVXU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36600334},"engines":{"node":">=18.x"},"gitHead":"a12070c9402a19869153937054c6d0f53af51b4f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-23dada4-202512091015.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-a12070c-202512091016.0_1765275459098_0.22233160203627134","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-a12070c-202512091030.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-a12070c-202512091030.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-a12070c-202512091030.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a3d97fed7136c6fe79310ce3ad31020cbbc808be","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-a12070c-202512091030.0.tgz","fileCount":457,"integrity":"sha512-quvZOnA9ECuJtnPocAMzfvo2u9o4lSAUBbTiQpd+RGi8cDwMYKI9wMijHRCOnthZY+IrwngRk8EDIjPbwHjrjQ==","signatures":[{"sig":"MEUCIFp/AFkW20tX6wDmAMO2PUp7ohKyzt2f6wI9q1TB6SfHAiEAg0TSWvi1BUoLOvef8ZGblZo+IzeWPjnf03uRRmckAHc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36600334},"engines":{"node":">=18.x"},"gitHead":"a12070c9402a19869153937054c6d0f53af51b4f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-23dada4-202512091015.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-a12070c-202512091030.0_1765276307965_0.3537478810784611","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-a12070c-202512091137.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-a12070c-202512091137.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-a12070c-202512091137.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"607b68f9743dafaacb6169435cc77b5e786850a5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-a12070c-202512091137.0.tgz","fileCount":457,"integrity":"sha512-alemK5yNU+Ug2x6e7SYtVU0+0UJJlO6gXGW59XGojpLJcnC7C4CrQ7/nK4Pmelq3WpFncmj6ndWZ9G4wuqmFiQ==","signatures":[{"sig":"MEUCIQDhziIGUrv9r1wCQ+VUOxF4UtuZMl/ccG5iHDdN7wOqmQIgctJk6nGOEqvv3v33t6F4OuU9SCeq96ztEnhmbqGPWNY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36600334},"engines":{"node":">=18.x"},"gitHead":"a12070c9402a19869153937054c6d0f53af51b4f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.5-23dada4-202512091136.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-a12070c-202512091137.0_1765280350548_0.24703514941289706","host":"s3://npm-registry-packages-npm-production"}},"2.24.5-a12070c-202512091139.0":{"name":"@flowfuse/flowfuse","version":"2.24.5-a12070c-202512091139.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5-a12070c-202512091139.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0c919995a24c3f6e98f566d47f3113ad5fa1355b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5-a12070c-202512091139.0.tgz","fileCount":457,"integrity":"sha512-7GbZIoFI4zHqf0qwrluasRREeEozBOJ3eulQQzr4MOS3mWFRlqmWe9hmkmwdUoqgbzQT6rkT+7ZOTuD7/VKHHA==","signatures":[{"sig":"MEQCIEbMHlD2LzfzxfVebjr5FFXt26oiGX2StYPnkBavJuwzAiBX3YbNi/h7QERbf8jjoWV8JT/LFLUnoM0mk8i71zlU4g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36600334},"engines":{"node":">=18.x"},"gitHead":"a12070c9402a19869153937054c6d0f53af51b4f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-8c4cef4-202512091139.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5-a12070c-202512091139.0_1765280498175_0.7902064881438049","host":"s3://npm-registry-packages-npm-production"}},"2.24.5":{"name":"@flowfuse/flowfuse","version":"2.24.5","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.5","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8a47eeaa2f630ff1e0763fa004c79438125cb6c5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.5.tgz","fileCount":457,"integrity":"sha512-8KSBeaR2noffIFPNy52ICkHRxoL1iM83bOr9/uuQ25bHGHfr6Ls2qAHCLMm8ccplGvRK2zYXWpeBEz4OOp4wIA==","signatures":[{"sig":"MEUCIQCk3eCPCTtLIn3EEoScThxQHQEKS6a+b95WIeJwzn4ckwIgKzWSHrCZJ1WPBaC6XcJTimI3dKd5L5bfauqNq70Yry4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36598522},"engines":{"node":">=18.x"},"gitHead":"8d3803ec42fa81e6fbef7fde6f72c449de1ee0ce","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.24.5","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.5_1765280869523_0.09531514194126012","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-6c1d813-202512091449.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-6c1d813-202512091449.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-6c1d813-202512091449.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"838190bc732ea0a3b9ef8f50b5905d20a7efd748","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-6c1d813-202512091449.0.tgz","fileCount":457,"integrity":"sha512-aPKtOy8dcx151KzLgKbaLXIznEBHVyJOfBO3Cne0bTQ61dDB0qg/TQLXkNlxPWv97y4ECjD2ncEU+iW2IVHyMw==","signatures":[{"sig":"MEQCIHWEZxwo6gLeBZs/VI0s2JN/xSAcuS0KmHSjZXNvOFgkAiAktDnCY0/ZDIRbcyBd0dP8nccuCK1T2ESdWRjj6+OYFQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36601703},"engines":{"node":">=18.x"},"gitHead":"6c1d813ec1e6eadcf50f7876cca3c4f1b1215ddd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-8c4cef4-202512091448.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-6c1d813-202512091449.0_1765291870834_0.9430333210854931","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-6c1d813-202512091641.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-6c1d813-202512091641.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-6c1d813-202512091641.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3c11ab5edf5c56540ce38bbe39464b705bb2dea0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-6c1d813-202512091641.0.tgz","fileCount":457,"integrity":"sha512-+HYWAunm2OUPWuYiGnaQTSRDW5Q6DqhEsjQIL5vXFumfJX0P44+xezUTuTomXx/GGwpWqEIEO86LD9JUf7cKqw==","signatures":[{"sig":"MEQCIBw76sIeaGKH9M+prHr6EZHhyPBOBihh6h/QMmVFFnCcAiAWx9Eoqn/eoNr7bPEFbFOZdrYdrr9M1y6y1a8/vU7cdA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36601703},"engines":{"node":">=18.x"},"gitHead":"6c1d813ec1e6eadcf50f7876cca3c4f1b1215ddd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-8c4cef4-202512091641.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-6c1d813-202512091641.0_1765298615104_0.7669127644920597","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-6c1d813-202512091721.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-6c1d813-202512091721.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-6c1d813-202512091721.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c8df99a5017dc96cbce5225043b833f5efc4b62f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-6c1d813-202512091721.0.tgz","fileCount":457,"integrity":"sha512-kT3i3e7hB69ypgFdiDIPoQcq+trnW8GkV5geyQ+KQjCJIGfIwasc2slSuJQeRCEISvsoc9s+AEAMQSNn4TWd2w==","signatures":[{"sig":"MEYCIQDfSfEAIGnvEEJ+VlrWyMq7jwkPl5qHXlkfVqbKwnjQZQIhAJaOySmbEODBE0Vs+jBYBStDsy74SYzix2rdWgrM+loW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36601703},"engines":{"node":">=18.x"},"gitHead":"6c1d813ec1e6eadcf50f7876cca3c4f1b1215ddd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-8c4cef4-202512091720.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-6c1d813-202512091721.0_1765300985836_0.13788148943533773","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-6c1d813-202512091729.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-6c1d813-202512091729.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-6c1d813-202512091729.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e68b95bed2280c2202d1c142cd2c87ae14521dbe","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-6c1d813-202512091729.0.tgz","fileCount":457,"integrity":"sha512-81sAlQaamqo73CUC0kPCAcKJJF4D3yLLDy1gQf+zdixUpS1YThkUoGFxma4u2twGvyvDCfj1p7y0AAN6aqI8pQ==","signatures":[{"sig":"MEUCIQCQuVo2Ea9RTOflGeDAIBjsXtzVfX+bYO+6dQaR0C4IFwIgCzbUCTu4s1NGywDKFTUMs+Yav9WXl5etCWgaqzX7LIU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36601703},"engines":{"node":">=18.x"},"gitHead":"6c1d813ec1e6eadcf50f7876cca3c4f1b1215ddd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-8c4cef4-202512091728.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-6c1d813-202512091729.0_1765301449856_0.08431104830212766","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-f69e838-202512101035.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-f69e838-202512101035.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-f69e838-202512101035.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"347e1aee82cfbb138044f903da0e13d000a27bf6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-f69e838-202512101035.0.tgz","fileCount":458,"integrity":"sha512-j450rmqH3cKRuKRMVDUkYCzghWh7DDHg9KVdDFPy9FyW3eMh8ANQ4FfHMaRLcCB4i1TmOSt5uFfxn/91m7gq8Q==","signatures":[{"sig":"MEUCIC8L2XmeX4pN+k63ynzgHkqZ8ZF2smv+luKUaKcMWe2UAiEAqRbpgKCHXN6hpHphChGkqNUT3at2CczCnFJAfIbzieA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36599156},"engines":{"node":">=18.x"},"gitHead":"f69e838cf97e6948cc53e29686d8edf799fa1166","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-8c4cef4-202512091728.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-f69e838-202512101035.0_1765363023621_0.92731474399054","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-b7bcd6a-202512101123.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-b7bcd6a-202512101123.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-b7bcd6a-202512101123.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"79f4f7247d2d465eeb9775a60a8a9c650c90ef41","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-b7bcd6a-202512101123.0.tgz","fileCount":458,"integrity":"sha512-+VYt0KYqXxhMYUi5KlpQ1WlM8tS2cy0aDlnRimKPFQRmNMu32PrMzq96hh3OfZKZuIrQ3K5vuHZ4GY5ru7U2Iw==","signatures":[{"sig":"MEUCIQDo7n8j49eWaYK7e+iNeHf5dBuxoqAHI6JhOsaqGpTZAwIgJGf815/AK3S2Xpe8qjK4LerXN3+lu7p+eHrGjQxj2Aw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36599188},"engines":{"node":">=18.x"},"gitHead":"b7bcd6a30fa21a38e3685eafba6cd73391e6b5ed","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-8c4cef4-202512091728.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-b7bcd6a-202512101123.0_1765365882520_0.3723991776987814","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-cd0ae48-202512101205.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-cd0ae48-202512101205.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-cd0ae48-202512101205.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"47f60002d70b2bd27d62d6d853fd4fa85f70cb54","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-cd0ae48-202512101205.0.tgz","fileCount":458,"integrity":"sha512-5ooJdYIhuWQ6NXp1/Wok5YzAUdGd4eU06bCe+AyI0RaTIiRbbYG93WCuvzipKYN1jsklVHT2UbGTf6GwQf5dig==","signatures":[{"sig":"MEUCID/NOAyy1wrmIWu4YvNk19KJ4gizWxhdBUpk2NEffSWQAiEAvmfl7Ic3NDdtw2b9ldwhA/u65VuciwsPxgawrn9H7tE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36599445},"engines":{"node":">=18.x"},"gitHead":"cd0ae489a7229f5a518c818f38fc3719b18528a7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-8c4cef4-202512091728.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-cd0ae48-202512101205.0_1765368406626_0.25259798037398085","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-cd0ae48-202512101558.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-cd0ae48-202512101558.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-cd0ae48-202512101558.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cd9e0dfa59b931beb21a060a29e32cc70d88a418","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-cd0ae48-202512101558.0.tgz","fileCount":458,"integrity":"sha512-cC36D5xd/90CvFxfzHq+mBy+zyONH39j6yv3asT7hdX54U6lPBYO/d2lLN6ONsWi0SGsToTToZPrnLeKoXaIxg==","signatures":[{"sig":"MEUCIFAFdebv6OmEzvtRwvb3R7ytdvBcNUmQFrJWowvux6aYAiEAntyoXiKMHJsikuN4tupYm9LWym8cVpbL01+VYEZmfUY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36599445},"engines":{"node":">=18.x"},"gitHead":"cd0ae489a7229f5a518c818f38fc3719b18528a7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-8c4cef4-202512101558.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-cd0ae48-202512101558.0_1765382426331_0.40757280890267045","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-8a2b596-202512111643.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-8a2b596-202512111643.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-8a2b596-202512111643.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d87f662dfb956ef6db326c99ae0a732759b2e531","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-8a2b596-202512111643.0.tgz","fileCount":458,"integrity":"sha512-RYPKuPGNJjPhejANNIyrL1OTEgLB1ceeU98YFs/O9x3QzI2y7Cejl+VySGcv8p/NVIvtYL6wxc0xIB0qZLFRVw==","signatures":[{"sig":"MEUCIQCgrJIjoQdVwdnB3JZRSPAyB+ePsu8ASIRBrJ+tm25y7AIgSAn8Hg15GxHS1drXIZXoo07Zvj6b8k1/H9k5Lt5urLs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36599988},"engines":{"node":">=18.x"},"gitHead":"8a2b596a3c9bb5132222f8e83de96777a62c68d3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-8c4cef4-202512101558.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-8a2b596-202512111643.0_1765471517682_0.5408849968340972","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-3646f53-202512150753.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-3646f53-202512150753.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-3646f53-202512150753.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9accf708c20c4d05623aad30d4a7ece1736d4d18","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-3646f53-202512150753.0.tgz","fileCount":458,"integrity":"sha512-ncUw1Mqrmc/d6fEdRUwbbTKhoZECZ5fRfvljva1A6u3ilXZjv975C+vTf9OrUHJhzfm0Q2N6xLiv7Dnt06rYOg==","signatures":[{"sig":"MEUCIDYL4M4j/7nndFBEAAKK5KDnR8WNqbR3Ycr33lcRxjwFAiEAyXwPSVB9PNz3PN15ROxXB+E0EF1Lbbt2oldA6b3QIo4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36599988},"engines":{"node":">=18.x"},"gitHead":"3646f537e43e2b7b50bb426f606b9b9a9a6c6610","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-8c4cef4-202512150752.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-3646f53-202512150753.0_1765785295879_0.14371004844473512","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-3646f53-202512151055.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-3646f53-202512151055.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-3646f53-202512151055.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e503e451d51fe19a46ec15aa42ae0fa1c3c3b88b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-3646f53-202512151055.0.tgz","fileCount":458,"integrity":"sha512-ZDdvv+yZk0UAyHXQ6vNKOSWwkYpAhL48FqFPHBp7bqkXFZoDCY8fwpZIGuKbELdfHxSHi1hUjAXq6DqiuKPQjg==","signatures":[{"sig":"MEYCIQDDMYeHIhfcNfH8OI1dDRiwY1QBiOQhUKGec7f+ibemsgIhAM9Z8N6jlGNFgrNdRZ4BPkAK8r5d8B8AGlHYYClXOTOX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36599988},"engines":{"node":">=18.x"},"gitHead":"3646f537e43e2b7b50bb426f606b9b9a9a6c6610","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-8c4cef4-202512151055.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-3646f53-202512151055.0_1765796252015_0.6396093678700299","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-36a21d0-202512151255.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-36a21d0-202512151255.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-36a21d0-202512151255.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7b1caa0b610bfaf3c086b8ec6587d4cec19c9759","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-36a21d0-202512151255.0.tgz","fileCount":458,"integrity":"sha512-aBCBSO2mCfYdlLkTYWvjfG2zKaY72+4RQjjAbzuCIofijvUx6qwZfOAnLuylD79yieEe3lRk99YJBq84tVrXoA==","signatures":[{"sig":"MEQCIDs7mn7hLbajd7UDNCflcBvmGuKgywixY0CTVFSP4jMdAiAefk004f3j0gHs0KBxSbEQ51nPsYaedUmeHA+c/JbYIw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36602072},"engines":{"node":">=18.x"},"gitHead":"36a21d05b4b9d6fc807ea2f9164e8a0b3fe1752b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-48a432b-202512151255.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-36a21d0-202512151255.0_1765803453055_0.676171286177043","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-36a21d0-202512151308.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-36a21d0-202512151308.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-36a21d0-202512151308.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2e821f332711d1a0dc0890d14fafecade945895f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-36a21d0-202512151308.0.tgz","fileCount":458,"integrity":"sha512-zz0AKtzfsrSMddLEWOARMciDqqtzRubk+hK9tTo7aE39hDEx6pNjT5At93pyeEhi+/96bhlgxrbUWvqxP7yV6A==","signatures":[{"sig":"MEUCIQCa5+X2rmWkRA8T1h9b+CgqoUZfsk0P7VHucu4AII+hDQIgW2PAWcCuacDOuHjWJzSC9j+Wo569I7Z0fNLuynIoirs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36602072},"engines":{"node":">=18.x"},"gitHead":"36a21d05b4b9d6fc807ea2f9164e8a0b3fe1752b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-48a432b-202512151255.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-36a21d0-202512151308.0_1765804210539_0.09991930365467971","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-b359044-202512151613.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-b359044-202512151613.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-b359044-202512151613.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"75151e31097a03ad6a1f3abfbb1840d9cb94dd31","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-b359044-202512151613.0.tgz","fileCount":458,"integrity":"sha512-fPGLAxQKtdPgjqzrXomFNVFGeDTny47/pUjElOszXHd06k7haCPCOyKY6ozDyiXsQ2nzS4MmzI9Mo+MsgVPZvw==","signatures":[{"sig":"MEUCIBNBliuf1HH7N5PN8gpFDdn0gskUrYulZJslOZwvCK9YAiEAyrYoD3CHwp5ePRQ3VzuHzG2I/hnqPjZaC+wzjqX8qxw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36602072},"engines":{"node":">=18.x"},"gitHead":"b3590443ad0b910014de9854dec90467237e050d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-48a432b-202512151613.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-b359044-202512151613.0_1765815308566_0.02935715569135433","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-b359044-202512160906.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-b359044-202512160906.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-b359044-202512160906.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"aef40e7ed789a5fa0c1f0ce9504f7e025018cabc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-b359044-202512160906.0.tgz","fileCount":458,"integrity":"sha512-cAxBQjMzZ4U54acip3SMYBTAK1y21iG3axjCf110tD8OzmJZqtCV+8ebXwJAVirl4q7lM+XdCwiyMqtsJHWANg==","signatures":[{"sig":"MEUCIQDAhOAM3W4Du30/YcYBBA5WiWhxhkC9dccb2/pxD4XaHQIgXvxgHZ5k5ZfgyxFhsPJZ6DhuNzxR70+Ox4pOob5lYdM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36602072},"engines":{"node":">=18.x"},"gitHead":"b3590443ad0b910014de9854dec90467237e050d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-48a432b-202512160906.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-b359044-202512160906.0_1765876098436_0.032692118268847326","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-687c618-202512161040.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-687c618-202512161040.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-687c618-202512161040.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"eb14fa4273065ad0288fe418ee8f7f813cbaac37","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-687c618-202512161040.0.tgz","fileCount":459,"integrity":"sha512-zj2ougi9oxuMVeF4G9uNBdZx9Oec8FZ3h7HW2HLyvskoWQThpdrh8WTbwM4qGma1apRu773RpUGLsKDEcitJ/A==","signatures":[{"sig":"MEYCIQDpTc0H2blYlBNc0KdhxBWkjnywmEZXi2M7eCC7hcvRVwIhANh2FhwY36XLWtjNjDh7OEfhjSp2hVtU/SOu86izpRFu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36606800},"engines":{"node":">=18.x"},"gitHead":"687c6180a8e15df0b8c2a971ea601131d39e5489","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-48a432b-202512160906.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-687c618-202512161040.0_1765881714411_0.4469682045376069","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-687c618-202512161055.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-687c618-202512161055.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-687c618-202512161055.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"264049b009557ebee4e7d3b14f64cdd4da13b720","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-687c618-202512161055.0.tgz","fileCount":459,"integrity":"sha512-lM5vrh5vzb2N9l7LOcWzE0hKUm/Nor6rGooJx37zWF+hBty0OCVIXWv1zfIcsoa5ANHUSBLwbcnvFwWKvyKpNQ==","signatures":[{"sig":"MEUCIBYxTjsQUoo/LfwrI0lzyjIKfv8s6OIGsq/hCTnOwyZOAiEAphSEGAnFBCA8EZNrVFr6AZk7/Db6QlWriTpPn3l6e6I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36606800},"engines":{"node":">=18.x"},"gitHead":"687c6180a8e15df0b8c2a971ea601131d39e5489","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-48a432b-202512160906.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-687c618-202512161055.0_1765882607186_0.7531393088323859","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-e5ead6f-202512171123.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-e5ead6f-202512171123.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-e5ead6f-202512171123.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"109eac7315b5824a032ecafddcffa7f7dd22df2d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-e5ead6f-202512171123.0.tgz","fileCount":459,"integrity":"sha512-WPD3Whmnt1IzXgN3PJtlfJQR1vNm5u8r5dohZtHZEmgLqEsVuqub+8J4ai40zC24t1xhgM+wcpXcgbMOEkWvtQ==","signatures":[{"sig":"MEUCICp3GRypLIvJryzrAYVzRMflK0dvSjBh2JmsQnfpQnkHAiEAw6vOfwWj9M8MUJCfjmCqMPeRXDcvbkwNFiGYvoMXcJo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36645160},"engines":{"node":">=18.x"},"gitHead":"e5ead6f4c2352bd0eb2311e9a6ff654ea591ec7e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-48a432b-202512160906.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-e5ead6f-202512171123.0_1765970738855_0.9901311830899122","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-afbe42e-202512171144.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-afbe42e-202512171144.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-afbe42e-202512171144.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"43142c16fef76bd1abe2ad79e2400e8fc2604d4d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-afbe42e-202512171144.0.tgz","fileCount":459,"integrity":"sha512-fqFe73DpQ+4in08GdpZbvQcavV+gP+dBn7ewvNWHMRz/CGIVFZ19PVs+ZX5AlpyrH8tw/e9Vz70Ln0IfZFy0AQ==","signatures":[{"sig":"MEUCIHBoAB4Tx8ANUmHIbG6lSCQo/rY+8PcxLmMCkgJaOwwzAiEAiOY49S9K1A1th8soWGzl9Z23aNyj9YyvXGFonfqrMeU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36645576},"engines":{"node":">=18.x"},"gitHead":"afbe42e6802500ee47f5e95f56ec2799593159da","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-48a432b-202512160906.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-afbe42e-202512171144.0_1765971960706_0.5028216158427694","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-a3674bd-202512171204.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-a3674bd-202512171204.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-a3674bd-202512171204.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bfa5c1758423e25ecabf28af8217e0e1f391187a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-a3674bd-202512171204.0.tgz","fileCount":460,"integrity":"sha512-rnxOBK8zVusmVTpU7YJdyHkhK2+TXq4BzNAFgfLfZhYCIRAr3rzrapHXmaEZEIny9wCFzEZeTBpSk/k12B0EtA==","signatures":[{"sig":"MEQCIHN0geZkwSrNFSsohaEJE0D38Jw+NbeW8E8cumcUuCMiAiBkYWSfHnNTuqT1neFKq/hXekWAZ8AvEl53+eD5eLtv+g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36647278},"engines":{"node":">=18.x"},"gitHead":"a3674bdacdb744417e307567b8ee4bca14162bcf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-48a432b-202512160906.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-a3674bd-202512171204.0_1765973162540_0.9300643635889629","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-a5c94aa-202512180935.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-a5c94aa-202512180935.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-a5c94aa-202512180935.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c1c40294cfd521b878a3916da8b82488da1a21bf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-a5c94aa-202512180935.0.tgz","fileCount":460,"integrity":"sha512-GsfT2/hrgFER8zz5vdTFZi7NNiEz+ZfLNqwOVzAVLhxWeyUnLFPS8GhiSs+yEx/5YRxMHq02XEyn7Yny78t20w==","signatures":[{"sig":"MEUCIQCVJK04i1XLH9194D476X1HQO6lzr2xms6hyECIFM3i1gIgW17cAJVV4N2Tk0wKHDxS/MTm6ck8v+CLMfPdPUfhkcY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36648338},"engines":{"node":">=18.x"},"gitHead":"a5c94aaee40c1467101805ef799476eb045b0e8a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-48a432b-202512160906.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-a5c94aa-202512180935.0_1766050594727_0.23812691261873176","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-08a6c63-202512180936.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-08a6c63-202512180936.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-08a6c63-202512180936.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"11d82a4b5cf869aa309a4d2ae9938b9f97a99e2f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-08a6c63-202512180936.0.tgz","fileCount":460,"integrity":"sha512-TOD8Z910eZa5gDrKt/dWEOhU+XZkxU9ypAW54iluu3qO/9LORaecucUXGtLy38d+b7bSizSYgPcGeyp9k5V6vA==","signatures":[{"sig":"MEQCIBH39VSxybRL5c2cb/VrltSxQ6j5sAwXbWT7GJkk3lzdAiB9W7a8JJFE8ZmzHK9cWxYx0/7xEgH6hxfR+dnV8hUo7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36694095},"engines":{"node":">=18.x"},"gitHead":"08a6c633e886515a4326028af2297c8c5c64da9f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-48a432b-202512160906.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-08a6c63-202512180936.0_1766050708311_0.539535196859791","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-0ba1917-202512180944.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-0ba1917-202512180944.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-0ba1917-202512180944.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f3371fff089f0fd92b0b8e83d5f7951b5dc6db36","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-0ba1917-202512180944.0.tgz","fileCount":460,"integrity":"sha512-REQwEyFbCwop6U5g6Gag5/xQ6GeXlUgWtRX7jX0S6j16KM1dfSxiPzLYbQ5+xMof0FmeQLeSIaI7uMUE0f8q0w==","signatures":[{"sig":"MEYCIQC5CDpE27apEKfZy64wwQCIH98M7jucc9aC3bQr/IfyRgIhAMOjtpz3iDnO89Kytb2PTxFkHiO2NWw45KDPJC3YTgS+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36701068},"engines":{"node":">=18.x"},"gitHead":"0ba1917a78a93d48a8424e04100562cce8bacf22","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-48a432b-202512160906.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-0ba1917-202512180944.0_1766051195934_0.26581911803091196","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-0ba1917-202512180959.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-0ba1917-202512180959.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-0ba1917-202512180959.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"86e53384dadc475e68e572aeda6c4b1a208fe565","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-0ba1917-202512180959.0.tgz","fileCount":460,"integrity":"sha512-I3pj7HV365z9uwo8sizbvxX6X8nkfls8jIBFITktZk4tKDQekIWnvP9KsjaDQuJuffQ1TgW7k20zdbSwCrqI8g==","signatures":[{"sig":"MEUCIQDtqL7NSYpKm5xP5vKIH9cQV28W8pKLUliScw7grK7XUwIgdSCX8VoLuLyUZTpGkj43BaF/Wequf5Bz6t0pcpafJtk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36701068},"engines":{"node":">=18.x"},"gitHead":"0ba1917a78a93d48a8424e04100562cce8bacf22","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-48a432b-202512160906.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-0ba1917-202512180959.0_1766052083825_0.9748046721897252","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-0ba1917-202512181008.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-0ba1917-202512181008.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-0ba1917-202512181008.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c2261fa7d2a5861b0de855a37450c772137ded56","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-0ba1917-202512181008.0.tgz","fileCount":460,"integrity":"sha512-Ylih5Jqy1hvuHNcDkiRytgELz9WMrLd7XkIiOdsR85E6GmkZZXA4p1WH/iTixq+rAtEQT4i1n5ej7tJO0Gutqg==","signatures":[{"sig":"MEUCIQDFaopIGkwY7NjaP2nTYfpe5E3g7K0WFvTn077jJaEJ+AIgGg89TrV8Tpy+V45eS+xGhcSVJ7p3UN42XkKqjDEgxh4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36701068},"engines":{"node":">=18.x"},"gitHead":"0ba1917a78a93d48a8424e04100562cce8bacf22","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-48a432b-202512181007.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-0ba1917-202512181008.0_1766052598217_0.29019995271875043","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-0ba1917-202512181016.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-0ba1917-202512181016.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-0ba1917-202512181016.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"55c648a2009b0a7714c7ef5489c461c6017dcc91","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-0ba1917-202512181016.0.tgz","fileCount":460,"integrity":"sha512-xEe6jqlLt6JMflYAoKlHhgged3E04puhN0lxur4qDHOU6/86W4zI8emcVlbBgpvG5nsBteF+XN55C7hq0IToXg==","signatures":[{"sig":"MEUCIQC4P4D2fd4g4vuGZJnoqYHlo3G5FKF5gPDYbhMlcTjbxAIgCXXwnvv8XVN2P4s8h654VFDuPYj4oKElGDRRFTCKoEc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36701068},"engines":{"node":">=18.x"},"gitHead":"0ba1917a78a93d48a8424e04100562cce8bacf22","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-48a432b-202512181015.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-0ba1917-202512181016.0_1766053065798_0.0310921003997906","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-0ba1917-202512181035.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-0ba1917-202512181035.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-0ba1917-202512181035.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9cdc8688410dd88dd0a0656e6692b65090329e5c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-0ba1917-202512181035.0.tgz","fileCount":460,"integrity":"sha512-S+oIi3AgkwxUTsoaNq+KEfrYJBAKiQWsjzA6GJrxlV2Qo6NjUq9/3Q1Xc/7hk2R6U4gnpm8cN7TgsyquKI2YXw==","signatures":[{"sig":"MEYCIQCyIDRDGxDmFOb5n2tLaURLZh+UreAOOBix+1Sr2U5+lQIhAL8/X2b2/pfmqOFjVMdEQk/1cTwGLlesVIIbkJdwCehb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36701068},"engines":{"node":">=18.x"},"gitHead":"0ba1917a78a93d48a8424e04100562cce8bacf22","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-48a432b-202512181035.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-0ba1917-202512181035.0_1766054258999_0.9429006360649665","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-0ba1917-202512181052.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-0ba1917-202512181052.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-0ba1917-202512181052.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"218da9ac905e9e216def3cdef8f2bf7ad62e643b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-0ba1917-202512181052.0.tgz","fileCount":460,"integrity":"sha512-lS08wYbbinrkracwJnXO/8pSrnLtpIAp/wL9zptKIAXO1eMVMV9Bo2tSPSfUY4vCdu51eB/5zraufwkGQgnDlQ==","signatures":[{"sig":"MEUCIC6gJJ2I75NqyOLh6OlsEqj84KZUYMN3O5t2n+PFppUrAiEA4I3wFQUBBJ4ZDKRoMA3QgsiMM5IYFPaYjo+TxyB09jE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36701068},"engines":{"node":">=18.x"},"gitHead":"0ba1917a78a93d48a8424e04100562cce8bacf22","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-48a432b-202512181052.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-0ba1917-202512181052.0_1766055265920_0.3023339156943696","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-0ba1917-202512181054.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-0ba1917-202512181054.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-0ba1917-202512181054.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a045896384253b272935cde0ea4de09622e79996","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-0ba1917-202512181054.0.tgz","fileCount":460,"integrity":"sha512-nproRz4QhFdsyZTZbSVdSkoSDIr9iNdKZpUKzrj3mbIHKL4fQwd17kxnjhupbC+CHzsv+4x/awZMqBXWcUF12Q==","signatures":[{"sig":"MEQCIDLuaeTu6uEo8KtFrQCnBi7+B6t57SYt2RMWSuhShoqRAiAtVJhWjG4SLWpvmjD8Sk02sQuoelsKP+r/6iy+R4qveQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36701068},"engines":{"node":">=18.x"},"gitHead":"0ba1917a78a93d48a8424e04100562cce8bacf22","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.24.6-48a432b-202512181054.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-0ba1917-202512181054.0_1766055379389_0.047088289027907626","host":"s3://npm-registry-packages-npm-production"}},"2.24.6-0ba1917-202512181101.0":{"name":"@flowfuse/flowfuse","version":"2.24.6-0ba1917-202512181101.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.24.6-0ba1917-202512181101.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c265c002f43f26daa3ac70d39850c5f135668609","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.24.6-0ba1917-202512181101.0.tgz","fileCount":460,"integrity":"sha512-XEdYn7SxypxT50D7545xFfzA9Sm3Jx2mUtaoWFag1p63A6JAiE9/QKNkUceY99IhYqgM75dtGddgBXS7YZnTUQ==","signatures":[{"sig":"MEYCIQCAreuIg22SXimrWBlzFQvDFLcxCGClOXs+DeLfZGW/0gIhAJsIGHR0n3wk5JNDdOdA+U6iyMJG6M88I/6dCwbkGATz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36701068},"engines":{"node":">=18.x"},"gitHead":"0ba1917a78a93d48a8424e04100562cce8bacf22","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.25.1-8af1217-202512181101.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.24.6-0ba1917-202512181101.0_1766055811889_0.8487453784125145","host":"s3://npm-registry-packages-npm-production"}},"2.25.0":{"name":"@flowfuse/flowfuse","version":"2.25.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0343b84f88848098d3cdfca816a0e2ed429ebc3b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.0.tgz","fileCount":460,"integrity":"sha512-GjfekJuADY1InaK2LyfPsl0TA25V2oPIqMb0xC0iP4JXRYI17nCzpu4WWHPuij8I/6rN5/Mj9PA0peYY5qs2rA==","signatures":[{"sig":"MEYCIQDmRBVXsb/l5p7T35K6ZeE4mi/Da7+laL+bw1osF9C+DwIhALqL+wnDBzZQPVLVAlbaxvklXEv79P7virgUbZq1aIYz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36699667},"engines":{"node":">=18.x"},"gitHead":"9430952d1a24e981d39f865226248bac3ae9444f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"^2.25.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.0_1766056224292_0.40587116107967014","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-428ed67-202512182130.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-428ed67-202512182130.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-428ed67-202512182130.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a8982cb93b4eade9e7fd85153878c1ddda86f28a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-428ed67-202512182130.0.tgz","fileCount":460,"integrity":"sha512-+FHXqBN1ysxhpV1q9YksgLfu5aacGNmv+FLBRUcbViQwHjSHBQAOpvENeAJ4LTdXvfLrKYXhQWCpqymTAztiXw==","signatures":[{"sig":"MEUCIQCyy12FyEEcDAAs73vyo2s8CR/9ID7IfCAiZG5a8jQa9QIgE1+hsKhClgNMiF6y+N1qgbZC9loBt0M9HIP8NVvEh3Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37118655},"engines":{"node":">=18.x"},"gitHead":"428ed670a42f78cbc33423bb9bf1945116a8dbc1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.25.1-8af1217-202512181101.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-428ed67-202512182130.0_1766093508916_0.7265252693055766","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-428ed67-202512191114.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-428ed67-202512191114.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-428ed67-202512191114.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4da839916feacc60aaa98a86e14417623e56c2dd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-428ed67-202512191114.0.tgz","fileCount":460,"integrity":"sha512-oVq9mHoYkDJwvrouwYR9FNR4zUmWNMZJLhC/X24nNwoBC7O2hYN4zmRxRNbsXOChR1g1r8nXx4ORtdsUF2ujNg==","signatures":[{"sig":"MEQCICgg21DCHFSxH8artQaArxMpQPkwPpVjjpgYjoT+BVfnAiBNoNr1TRFCxmPHuBnMOnibYWkH1y3AhguMxuDDyy7CpQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37118655},"engines":{"node":">=18.x"},"gitHead":"428ed670a42f78cbc33423bb9bf1945116a8dbc1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.25.1-8af1217-202512191114.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-428ed67-202512191114.0_1766142981593_0.41378976185134464","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-428ed67-202512220913.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-428ed67-202512220913.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-428ed67-202512220913.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"43dade9f432f7862708d9c8e0268ddac3ad90572","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-428ed67-202512220913.0.tgz","fileCount":460,"integrity":"sha512-VBvsEeewyrN/Ya+kuOFxy5sJeP/6J3YbwOqjG1VtNIrm0o3WvXHsCaIp/56NiQofeQzaZFTSL3viBTJyX1G4dA==","signatures":[{"sig":"MEUCIQC4csoEQSPLqgsLstdL07ejcdVGZgZ+vV3HaO2NdSNP7QIgbyTDRzYpVayRYBSf6whd5XrsT1Vkv/NAlKzlylPWy0k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37118655},"engines":{"node":">=18.x"},"gitHead":"428ed670a42f78cbc33423bb9bf1945116a8dbc1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.25.1-8af1217-202512220912.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-428ed67-202512220913.0_1766394890649_0.016092939339023893","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-428ed67-202512221601.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-428ed67-202512221601.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-428ed67-202512221601.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1ee06a15b946871d8053b99e715fe12bf686a168","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-428ed67-202512221601.0.tgz","fileCount":460,"integrity":"sha512-Uvx42exmv4l+l2lLayvVrV+kHSYD+AzmXgSiCRx+yF6dQUAyKxSKVXVmAnyej2GMmuTknoCcqKaIlcFsFKPcog==","signatures":[{"sig":"MEQCIBbK8vIvlop3D0RPXQzMq277OzUWGabaO5BxWWzntnjOAiBjLTvACCN02B5t0i5pEh0yU3GhY7rV+gDVVrZX2iyUyw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37118655},"engines":{"node":">=18.x"},"gitHead":"428ed670a42f78cbc33423bb9bf1945116a8dbc1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.25.1-8af1217-202512221601.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-428ed67-202512221601.0_1766419384740_0.16452543270826103","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-428ed67-202512221836.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-428ed67-202512221836.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-428ed67-202512221836.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a542d7107b5af545e82b89b5002a09fcd440b433","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-428ed67-202512221836.0.tgz","fileCount":460,"integrity":"sha512-5aOsZ2B+i2eMUmZizl63BdN+Xwh+G9qnalVPL1jPg19S1rJVSIymuJhV4tQSsDwy2FFZXSjSPr4wIbgSiZYc5Q==","signatures":[{"sig":"MEUCIQDFNGykTuCWn0cL4JF8HPvuqJGzgSSb0y4iiR9edr3svgIgCPE5IL87yO7upyJqj1asjBVIB7b/aD78OqCzPSUcia0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37118655},"engines":{"node":">=18.x"},"gitHead":"428ed670a42f78cbc33423bb9bf1945116a8dbc1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.25.1-8af1217-202512221836.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-428ed67-202512221836.0_1766428700548_0.2793671417662804","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-3ffd5c2-202512231017.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-3ffd5c2-202512231017.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-3ffd5c2-202512231017.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"05cca29c50a47590654d86bc82dfd366ece3e92e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-3ffd5c2-202512231017.0.tgz","fileCount":460,"integrity":"sha512-Pg+fBKzqN4BX4vzg2GfzBRC77zjGPhi0Y9y6dXaAIMKCr8Zb3hNMt+ovmY+3O5mw4/+CwM2pimblM06pVs9Clw==","signatures":[{"sig":"MEUCIGsl/DrF+PnN/89o0QkyGU7FxEZwfWAAzf9VQHRELGtaAiEA38rFh23Y+VcOcEFq2TWFkP+laBLM0kPPK5BSau9W6S8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37118655},"engines":{"node":">=18.x"},"gitHead":"3ffd5c212567d2be29ee81040359e1cdef2257f4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.25.1-de2c21b-202512231016.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-3ffd5c2-202512231017.0_1766485138630_0.3040575044645737","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-3ffd5c2-202512231019.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-3ffd5c2-202512231019.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-3ffd5c2-202512231019.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dd44c0b84468fbba417cec7211ebf4ad0595b0a5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-3ffd5c2-202512231019.0.tgz","fileCount":460,"integrity":"sha512-zjErevlp6x/bxtCU3ej1/HBMWl9ws/+fN3i8yJPzc2BI+OnpZfWXecQ4P/GlhfUgP1YjlTIs648/bLOwEsf11g==","signatures":[{"sig":"MEQCIBFnjJRN1AxDSJLTx5WYIhAzEzeHi8N8PV7ofbmjVOhuAiBJFWNy7PK4Ak9byn4++27NHLQcXtoqJfX0tXMOW65Eqw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37118655},"engines":{"node":">=18.x"},"gitHead":"3ffd5c212567d2be29ee81040359e1cdef2257f4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^4.25.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^4.5.1","lottie-web-vue":"^2.0.7","@fastify/cookie":"^9.1.0","@fastify/helmet":"^11.1.1","@fastify/routes":"^5.1.0","@fastify/static":"^7.0.1","@headlessui/vue":"1.7.19","fastify-metrics":"^11.0.0","@fastify/swagger":"^8.10.1","@fastify/formbody":"^7.4.0","@fastify/passport":"^2.3.0","vue3-google-login":"^2.0.33","@fastify/multipart":"^8.3.0","@fastify/websocket":"^8.1.0","@fastify/rate-limit":"^9.1.0","@fastify/swagger-ui":"^3.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^6.3.0","@flowfuse/driver-localfs":"2.25.1-de2c21b-202512231018.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-3ffd5c2-202512231019.0_1766485253171_0.6323476454488242","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-0a77892-202512291157.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-0a77892-202512291157.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-0a77892-202512291157.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a91cf11afb2fd4721d7b8ac0c31fd0a1ddfe618d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-0a77892-202512291157.0.tgz","fileCount":460,"integrity":"sha512-2xK2hJACW0d2CAoCj5riweKAKBjzoE3nqZQMDyzEVhNsSiX5V6BGy7g+60mxeCfl2q3whAaWYwWorHkDkWcZPQ==","signatures":[{"sig":"MEUCIAnu4cgHGZeo27MtZNcle5T76l8BZW+Vw1lQsk1dgbMfAiEAh+nLMifWQdO/A7xGItifo4hFgj+Av8lZxnvkPJ6ViNw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37119907},"engines":{"node":">=20.x"},"gitHead":"0a77892d698fde5971d89aac8f582abb2aa26eab","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^8.3.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-de2c21b-202512231018.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^8.0.0","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-0a77892-202512291157.0_1767009573412_0.8832600733007168","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-81d2f84-202512291249.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-81d2f84-202512291249.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-81d2f84-202512291249.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"381dee4a699be5a08acfc144232a286e4b50ed04","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-81d2f84-202512291249.0.tgz","fileCount":460,"integrity":"sha512-uwKBJr1Bkt7ShBFEMYBS9IEJBC6fwewYzMcZdtQZZHd/7M4uStYiRyB+1BXhX1JdX7gfn98oMQsdoUrke5F/gw==","signatures":[{"sig":"MEUCIQC5Oh6Hb/Ae7H2NcXRVbwFiqfL9M4MnvWZJL62lKZ8f8wIgVz7Zj915Tc6Q/9lqmTLeGukCZaqSgiGSFygb1XHO7cU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37119907},"engines":{"node":">=20.x"},"gitHead":"81d2f84639cc5a0e91890516db6227b34cd7dca7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^8.3.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-de2c21b-202512231018.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-81d2f84-202512291249.0_1767012698667_0.2542402980403782","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-8e6d4dc-202512291548.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-8e6d4dc-202512291548.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-8e6d4dc-202512291548.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"20069cdbd0e5906f4fdb0a2edb3a186e0d2030f2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-8e6d4dc-202512291548.0.tgz","fileCount":460,"integrity":"sha512-5+CpdGTosL183HQOunVOatIYoY4/8zX+XOtO18AxZ9MtuXlk3QrJTRPxdE1zdPwqcGRom8/2IYbzOr6fHxvW3A==","signatures":[{"sig":"MEMCH15Sz0CrB1ct1huDsTUAgokHtvqJhAGMgiQ4R3QXi58CIH1jC9NL+87c4SAMevNWprxJCpw5Q7seybB0vFE8kvMk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37119907},"engines":{"node":">=20.x"},"gitHead":"8e6d4dc5244bc384235e05e662859858a070664d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-de2c21b-202512231018.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^19.0.2","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-8e6d4dc-202512291548.0_1767023430448_0.3872452543740641","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-5d6c972-202512291644.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-5d6c972-202512291644.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-5d6c972-202512291644.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2e327e36fa7b2c71401804e6f42954edb40bf6a8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-5d6c972-202512291644.0.tgz","fileCount":460,"integrity":"sha512-SNHW/Cwny+pw8VIUbWEeL44ra6WD5lAYi6c5g4GU4CJYchw9MkLpi2eHIj2IuPGI5g+JNnoz2bwAoynSzN+goA==","signatures":[{"sig":"MEYCIQCu00yEFXf0hZ3ozsArBnOtbBBIjc4yNs86aJdUGsXrhgIhANUb2eT7k5EQP2vORO4xTHFcD6XcnVZ1mgZAfzJagp2p","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37119907},"engines":{"node":">=20.x"},"gitHead":"5d6c97244966b41b6c2f9da11f1b63273c4ff564","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-de2c21b-202512231018.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-5d6c972-202512291644.0_1767026789160_0.6137483623006532","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-5d6c972-202512301454.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-5d6c972-202512301454.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-5d6c972-202512301454.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"338bf51be0b945193e40c7376760ab780dca7c76","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-5d6c972-202512301454.0.tgz","fileCount":460,"integrity":"sha512-rnFU5LM1vANtH+tmEXQTMcbfBzlfVCiPG7JDCPFUA3oC8XW65TOFGGx6tlmmi1fp0uohZRLh9CXikUChTeD8xw==","signatures":[{"sig":"MEUCIQCIp0Nw75VDSfBVZxITiJBrc/9bja/RTma33B/c3WyKeQIgOxbjzt6VaO82lQG5rllA6VRX/yMW9LaBpkKB+T7JN0M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37119907},"engines":{"node":">=20.x"},"gitHead":"5d6c97244966b41b6c2f9da11f1b63273c4ff564","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-61ac7fa-202512301454.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-5d6c972-202512301454.0_1767106589822_0.4351412424996264","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-5d6c972-202512301717.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-5d6c972-202512301717.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-5d6c972-202512301717.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1ff5cac994266039dfb40a0ea52f1f47d36eb3a9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-5d6c972-202512301717.0.tgz","fileCount":460,"integrity":"sha512-d5FJP/3bPP8cK//aVXh8c1UohiuF7Zf/rxNlzBmf5Hs8mRb04WCr6hCJMWwiZk8zK2CR/WKB3b3/oY6NHG63zw==","signatures":[{"sig":"MEQCIEuT2+Acn6G4Xq+9woHXMX1yFpnca/tRQl8xZg6wqFm7AiBq6wNxFVk53V6YkC1hrtX6+DfCXTh0XK6nbFljbWdXMA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37119907},"engines":{"node":">=20.x"},"gitHead":"5d6c97244966b41b6c2f9da11f1b63273c4ff564","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-61ac7fa-202512301716.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-5d6c972-202512301717.0_1767115131926_0.567503387067382","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-5d6c972-202512301832.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-5d6c972-202512301832.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-5d6c972-202512301832.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"72d1fb0898e1c1ff9f33672f88cb1c34015a8ac2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-5d6c972-202512301832.0.tgz","fileCount":460,"integrity":"sha512-sj/1MBSxfVyEMVsk6jo3nkK0MpT8UulueRpRcAB2pS+3wNxJOT6Z5cXAWCffTMZvyWWlbfXo9PW8gm08v3fPlw==","signatures":[{"sig":"MEUCIQCUk/XM9qlOkf7zWd86yIaLbrYT5LFMYFkTEc5DVekqUgIgdTwyRIc03qXfSsQzAVcFD7/yESA54noOGzBVljvvs1g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37119907},"engines":{"node":">=20.x"},"gitHead":"5d6c97244966b41b6c2f9da11f1b63273c4ff564","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-61ac7fa-202512301832.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-5d6c972-202512301832.0_1767119665979_0.3778463206631628","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-c60ca80-202601011950.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-c60ca80-202601011950.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-c60ca80-202601011950.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bee1fa21630f1b7ac48d216981ef4a9fa9d14bba","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-c60ca80-202601011950.0.tgz","fileCount":460,"integrity":"sha512-sZDkUqEQM0CaBFVmYQbUh7plBTnCe5dVD1DoIUoSBmqiZNKuoUUCU+Z98r099hbRAM8N5DxZSjiQJLtcJeR25A==","signatures":[{"sig":"MEUCIQCI60MIscwfI2+CbFlocqE8eennHy/sOQVcg/s+MJmdSQIgQ59/rygATAcCh8Nhafi7qT9GzgWc2y4n1hmZ1VJ5gvc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37119907},"engines":{"node":">=20.x"},"gitHead":"c60ca80d327af85d7251aeea4afd46c545b292ae","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-61ac7fa-202601011950.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-c60ca80-202601011950.0_1767297118016_0.8813580028302843","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-c60ca80-202601050932.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-c60ca80-202601050932.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-c60ca80-202601050932.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5a562fc38481ea7e5c97a01bbbad9057e907c7b2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-c60ca80-202601050932.0.tgz","fileCount":460,"integrity":"sha512-k7+vIzNPAeQG6zKCjMB5o378c36/6AuKgbSGN9/+BXnveCuldyeabsIAVEDZ4mCwT3x0/UuU7rxnkDouBUychA==","signatures":[{"sig":"MEYCIQCYOavTc0j5cETpVjAch5SbHM7DbEnr58buhAlSrnGjzwIhAPAKXRg8BK0ACEn7amiHedzclbTC2lQabCNLU8tMScYD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37119907},"engines":{"node":">=20.x"},"gitHead":"c60ca80d327af85d7251aeea4afd46c545b292ae","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-61ac7fa-202601050931.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-c60ca80-202601050932.0_1767605637674_0.8376061477780563","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-c60ca80-202601051112.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-c60ca80-202601051112.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-c60ca80-202601051112.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0ae6b684e8a6b63969ba33202684bf3dbde74a33","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-c60ca80-202601051112.0.tgz","fileCount":460,"integrity":"sha512-ieD1QxCQfgnZffYWwLug8cUGyWNk/6BPvZLus7NPDF85zpgbi8STjb0kyzD3SmOqSbsTCN3OqAiuZ+X17bLPSA==","signatures":[{"sig":"MEUCIFpAOMdqNLJKQPnaqNxczI5Z9wBadLH8OEP4xXO8GbPBAiEAl+iqnNYOHjgNpp581sJ66drp7LPasZiMxzK3nt2PNCE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37119907},"engines":{"node":">=20.x"},"gitHead":"c60ca80d327af85d7251aeea4afd46c545b292ae","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-61ac7fa-202601051111.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-c60ca80-202601051112.0_1767611621062_0.33327361348256823","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-c60ca80-202601051115.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-c60ca80-202601051115.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-c60ca80-202601051115.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5ee731d8a6479ae56314aeff6259fcd650ad6fac","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-c60ca80-202601051115.0.tgz","fileCount":460,"integrity":"sha512-aR+ABC0jHo/KywiFQKDu00xJnmQefqPIxwwVkqzNz4Lcg+ITNPMC3r+e3hDV5NKD++JE5HAtSjg1BH3hbKmiDw==","signatures":[{"sig":"MEUCIBhFqKzwFQJHVxvD/DG6zxvG6W+WqEgkHcWmA62hA5pVAiEA3AfxBGNCQadw2y1GYXE2uwmF5s3DW/grqvsfr1+LD0w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37119907},"engines":{"node":">=20.x"},"gitHead":"c60ca80d327af85d7251aeea4afd46c545b292ae","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-61ac7fa-202601051114.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-c60ca80-202601051115.0_1767611822014_0.3885349070041333","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-c60ca80-202601051157.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-c60ca80-202601051157.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-c60ca80-202601051157.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"37538e05dc874d0680b5c892f85e609bd27e8203","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-c60ca80-202601051157.0.tgz","fileCount":460,"integrity":"sha512-ApoXrKOTYXMMXnpFzBYcmknk5wNNPGbWtWQqsrS/OQ4ZfGO/taNbai58+daJ232CKiYTkZR0PwFzbfbnS6ou1Q==","signatures":[{"sig":"MEUCIHVOJ3nUkqMjtrlUmOM6YKTipmOUV1xoiVYN7gdCj3PRAiEAjVTSqT6jCp2sjwRrSW265iolH/NHzs4pjbM0hDdUfEw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37119907},"engines":{"node":">=20.x"},"gitHead":"c60ca80d327af85d7251aeea4afd46c545b292ae","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-5d0bbe9-202601051156.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-c60ca80-202601051157.0_1767614322739_0.1001024397291379","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-c60ca80-202601051213.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-c60ca80-202601051213.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-c60ca80-202601051213.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cd20795292c167eb7ed4da8b2125d8c164614bd7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-c60ca80-202601051213.0.tgz","fileCount":460,"integrity":"sha512-y7H/yu0T5qOekowmO4Q34Fk/FtRVV57s1H52He3PFt2vLZ2lDCnuIZPgebMsD02pc5pBWRwDW1dsWWx7PTakeA==","signatures":[{"sig":"MEQCIDAYPS3iol/l3O4c9l/SXdqEJRzt3Ph1FLiSEXyw9yt4AiAwPjO53wEPO6h3kUKL9zUy+xrY4dmRT4/gWVBhtOhMqQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37119907},"engines":{"node":">=20.x"},"gitHead":"c60ca80d327af85d7251aeea4afd46c545b292ae","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-f1af484-202601051213.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-c60ca80-202601051213.0_1767615334306_0.8210213010842549","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-c60ca80-202601051312.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-c60ca80-202601051312.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-c60ca80-202601051312.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"44d0cf5591f0933521d2ec2e3576d466165e5315","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-c60ca80-202601051312.0.tgz","fileCount":460,"integrity":"sha512-XsjEA96+r/l8fcbl0X0hgclKDmKPhkMkOQxLb3n1KQIgKwmqwxI25oXsKOnZUXlZZpsaN3iksMwlBgqVXtjAdA==","signatures":[{"sig":"MEUCIAyVHbKva3VOj9iUGPyyxne8DOfjzbEvNtzgptyjQ+TEAiEA8n6PhP1iC+vvANvqHdy0MyGdBtStnJ/szwQymPnT754=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37119907},"engines":{"node":">=20.x"},"gitHead":"c60ca80d327af85d7251aeea4afd46c545b292ae","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-f1af484-202601051311.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-c60ca80-202601051312.0_1767618847619_0.040929048070770246","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-4f67f68-202601061000.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-4f67f68-202601061000.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-4f67f68-202601061000.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"530f4ddcbec1547f145cdbcc2dae95a253d6bf7a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-4f67f68-202601061000.0.tgz","fileCount":460,"integrity":"sha512-Jj+uQSpl8HrHjC2cqgbTT+KLP7Nm8vJpXWdbWfyvHZppzSyr0+pys/cZIR2RzQTy2NCOotTKkzmhtnyq50K2BA==","signatures":[{"sig":"MEQCIGjjd1g8FmwKGI6jXRax7mWAj8aDozCVaZ7EO26vZja4AiBS6ziSccd/wgY5NkaG0uV2sq6wutlqgjZam7w/RcmBYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37119907},"engines":{"node":">=20.x"},"gitHead":"4f67f68dc28fa5e746b75422d78c438b8a64b9cf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-f1af484-202601061000.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-4f67f68-202601061000.0_1767693752033_0.8493739273953778","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-01cfe8a-202601080945.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-01cfe8a-202601080945.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-01cfe8a-202601080945.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6743a402fbe4e23a2c6c7477fcbb2e9a519e75e0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-01cfe8a-202601080945.0.tgz","fileCount":460,"integrity":"sha512-we8Psd7u9vCp4aUkX9YIAQLcAsPT+uJ1l2LHbcWCaQwm1RATBNIIz2z6E4JKNf5hyfCGFN2aVokQjN+6ojqzHQ==","signatures":[{"sig":"MEQCIE9REnHt58k8+jR7q8uNgflZDFu7pq/hggdgwDEGcY49AiA0Y5tHUcaHuKQ2ZVCoOVJp9/fI2ufENJRFnDoruzqWJA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37121680},"engines":{"node":">=20.x"},"gitHead":"01cfe8ad3c702277592a0f4829b9f069fc40b4a1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-f1af484-202601061000.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-01cfe8a-202601080945.0_1767865620612_0.656412054670185","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-bff39e1-202601091534.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-bff39e1-202601091534.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-bff39e1-202601091534.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0a50372d7eac9880bb4f8b9061c18582e95a5276","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-bff39e1-202601091534.0.tgz","fileCount":460,"integrity":"sha512-PTLY9BZ2LKBz+fKmzlFJPUxUHj4mwOshzRZcHNLa/DZtpLP8DvljRyVD9Ks1pDDzgW0DNwc07VLt3y2cU6ErlA==","signatures":[{"sig":"MEUCIQDaTk4Y9Pu2VA9fbSLYN1ulwSsLG2ZiFEwHsp8NcXdMPgIgeaBOJqUtDmyE3uQYmI6kG57MKuiQuEUPTSY1Of9Faag=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37121225},"engines":{"node":">=20.x"},"gitHead":"bff39e117901d19a589873d99d90869dfa7e25c2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-f1af484-202601061000.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-bff39e1-202601091534.0_1767972992509_0.37120204484303465","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-bff39e1-202601120756.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-bff39e1-202601120756.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-bff39e1-202601120756.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6396bd525d830ffbe111eefafad188f0be92c4e7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-bff39e1-202601120756.0.tgz","fileCount":460,"integrity":"sha512-uhPi/MIOdl/kGlhYep15g8S7f9xeUAsDfMVq7CppJW94OA29VFOgxfN5WIQF+ApNx/388ARHix4XZyDg/sqJtQ==","signatures":[{"sig":"MEQCIDCY/+kJC0ds5SWBM8kjgReTDjgeBgv/80EZhD9juqmCAiA8qzRzPUz5IMLQA7l7HmfJixRB0uMFFN90mA65DiEAeQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37121225},"engines":{"node":">=20.x"},"gitHead":"bff39e117901d19a589873d99d90869dfa7e25c2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-f1af484-202601120755.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-bff39e1-202601120756.0_1768204680230_0.5514978768212617","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-bff39e1-202601121521.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-bff39e1-202601121521.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-bff39e1-202601121521.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1e0c1e72bcc5ea2322c0d439d9be0ab32df0a200","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-bff39e1-202601121521.0.tgz","fileCount":460,"integrity":"sha512-5CztxkLuoEVaq3qKz5W3jVDa3502whv9ChItAg5yQQCemYydtF7kMZMj+L+tzc4D5jQN/S3eoGCvuE9fls13Ag==","signatures":[{"sig":"MEUCIE2uMZpXIzrvf8L8uc2WLzOrLGSyNjO7xNkWBqSzz/6yAiEA81VjmFraugoIpWCKt41mWK9Nh/zr/vCVKd+MsWP4qHo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37121225},"engines":{"node":">=20.x"},"gitHead":"bff39e117901d19a589873d99d90869dfa7e25c2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-f1af484-202601121521.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-bff39e1-202601121521.0_1768231397233_0.7141383513647401","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-bff39e1-202601121526.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-bff39e1-202601121526.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-bff39e1-202601121526.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3650996e8dde5fdd5a12326ebe383c609fdc189c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-bff39e1-202601121526.0.tgz","fileCount":460,"integrity":"sha512-oqaXa4MAxhdNgU/ivH9HNx2YlBbg9d0DW5dFjE/FSMf2O1hNP6Ke9MKTbRZqCJxgTq7HF2SDh4KsYW89/kEjjg==","signatures":[{"sig":"MEYCIQDiOksAjDlQJkpajT3tX38DdK6U37Eq6kzwzNWnM4EfSQIhAPYOcPsnmwkHROXskX8HQlSVVGgi1VrLP+gjRDKOqqOQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37121225},"engines":{"node":">=20.x"},"gitHead":"bff39e117901d19a589873d99d90869dfa7e25c2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-c3e6deb-202601121526.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-bff39e1-202601121526.0_1768231716173_0.7956070711062484","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-e3d6d74-202601121707.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-e3d6d74-202601121707.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-e3d6d74-202601121707.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d46ab00014ae696c982839e74fae096a3afea056","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-e3d6d74-202601121707.0.tgz","fileCount":460,"integrity":"sha512-QJCECfvgtH5+sBjTxTSO/SW4Wo1C9nr0sVyUHrxCc7qV67AaYgCm/JG1bTkz8Y/zIdHbnsVFn8ukC9yo7AWFZg==","signatures":[{"sig":"MEQCIAp5phyXIOETmZ8Zm8jTDrlwwQACjwzVYexDlZc2kO9nAiB2OiSgKoZtpCnLy9PUmn1sP4LOlMbgdbmH/Br+XAiIFg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37121018},"engines":{"node":">=20.x"},"gitHead":"e3d6d743d2713f24d17dcbe0808a996256121d99","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-c3e6deb-202601121526.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-e3d6d74-202601121707.0_1768237759863_0.513085099628442","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-4f7f7dd-202601130749.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-4f7f7dd-202601130749.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-4f7f7dd-202601130749.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"121cfd4d4b4fe25ef65dde765266f48c85695428","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-4f7f7dd-202601130749.0.tgz","fileCount":460,"integrity":"sha512-KIwUQhBYdcegNfV3CC+r1FapxsgGfUlIprF638HX8LYnqlFv/qKU/wukWItR1+XSHPp4xpOG76Pa0R01mBlgUg==","signatures":[{"sig":"MEUCIQCPcHcZ3BrDurFUNiUWlB2bhzvGk8sCVmxSXx4DsziUIwIgZ0ZIw8Mxql1jcV9UmbiCaBt5Pl9aFRt4uCTcF05LCFI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37121018},"engines":{"node":">=20.x"},"gitHead":"4f7f7ddcfccfdfa6ec1494f2b830a26147053fec","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-c3e6deb-202601130748.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-4f7f7dd-202601130749.0_1768290661074_0.5270276062169323","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-4f7f7dd-202601130751.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-4f7f7dd-202601130751.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-4f7f7dd-202601130751.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f1a54ae30f83b63fb17aad4614c891a2e4521848","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-4f7f7dd-202601130751.0.tgz","fileCount":460,"integrity":"sha512-ErWrwsXB1/O+Ni9OuLUeCWT2OSON8mu7OCr5zYhBnd+wtbyTnPVmJ62D+IYxm0yhU2SqY3SzIn7Jcs0t71BSEA==","signatures":[{"sig":"MEUCIQDDMrEVYZaVqmF+mgFLWggvJ2jNt2N1bNJ8qt3J3Tu9oAIgfNSnGQ6hPDCbnk25wTxgIVvdgvWHl2Lv84mMI6eQeJQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37121018},"engines":{"node":">=20.x"},"gitHead":"4f7f7ddcfccfdfa6ec1494f2b830a26147053fec","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-c3e6deb-202601130751.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-4f7f7dd-202601130751.0_1768290789571_0.3386572791907627","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-6fcab5c-202601131631.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-6fcab5c-202601131631.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-6fcab5c-202601131631.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fc29fb6b8a373801ea4d9da1b25a5636a5aa3dfb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-6fcab5c-202601131631.0.tgz","fileCount":460,"integrity":"sha512-7H8I7BgR2BlZTnte8tmEmr/pF1ACOcMlgc9oa2hZwOYFFgZdmsWZWMUPr+11nyiwUHPmBSFhQaDydVNPpcMNRQ==","signatures":[{"sig":"MEYCIQC8stmKg2Q7Z5FbtMx4lvz2lictF8upmPbahBlTelDqxAIhAK6FpOkmUimLDqiA+fGCennA4nziv/IxT4PNvs5IknGC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37123633},"engines":{"node":">=20.x"},"gitHead":"6fcab5ca5798a4368d63edd270b3bd1d14236142","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-c3e6deb-202601130751.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-6fcab5c-202601131631.0_1768321988400_0.38366419026963716","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-d280b78-202601141007.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-d280b78-202601141007.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-d280b78-202601141007.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b5baf187eede3c5db4225f4eb97362dcc30b456d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-d280b78-202601141007.0.tgz","fileCount":460,"integrity":"sha512-MoJSqjld4RSCWIknmobANgTYgB5OIpEerfZZ8LQjS2Vxjou76Gp8pukW//uM3UYqpULGu2asbU2/Xza+D5iarg==","signatures":[{"sig":"MEUCIHHwupHOHvelBXOAnluv9ztFyR+vYrKCT6+PA7IMbqjLAiEAqFQbP+haLJcprQNbTSfjB26FxcRg+G3fZmyNRlAp/YY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37134977},"engines":{"node":">=20.x"},"gitHead":"d280b7891cb6b31ebd29d2d9447146ed01f9c9b8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-c3e6deb-202601130751.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-d280b78-202601141007.0_1768385340582_0.3505946641957274","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-d280b78-202601141112.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-d280b78-202601141112.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-d280b78-202601141112.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"afe40f0f256430ed94cb33f0260a9544ebb79d33","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-d280b78-202601141112.0.tgz","fileCount":460,"integrity":"sha512-TmpO6o+qLjGmtLYTyr/nJIpZIMlPY9ddxE2TqPa7Zsg8hI1KWSrLe886XKKqVShRU9a9gQQRXfSi6MH4d1iRug==","signatures":[{"sig":"MEQCIFmqs60A3mSJN2knm2wloBwONVcIEpQcqzLaGyAmCDVcAiBQYCkxxuYaP8vy+kgNCeJzk7qkpQx0tZkH3Kof0azH2w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37134977},"engines":{"node":">=20.x"},"gitHead":"d280b7891cb6b31ebd29d2d9447146ed01f9c9b8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-c3e6deb-202601141112.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-d280b78-202601141112.0_1768389263210_0.058255430749755144","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-043f2cb-202601141127.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-043f2cb-202601141127.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-043f2cb-202601141127.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7480472f3e84de38d0f33238f702f71a45bf251b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-043f2cb-202601141127.0.tgz","fileCount":460,"integrity":"sha512-IzLRRRs463o8da4/g6RjnvyWGogP/nLJ5CdZbHfYftdLlAlTXBe1rK+4BNVJXcd89jEhkreqC34dcO4iV+PmVA==","signatures":[{"sig":"MEYCIQD+rlYfwDlbHCKmIlk8fZE5z/87TP03qjToRC3w/O6IwwIhAM1gK0XkbINAwQus7VqMqJbGGf58LubUQ2PGpD+LHSPB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37138157},"engines":{"node":">=20.x"},"gitHead":"043f2cb23b38cd6ca304730cec5c6a4d806e2ddf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-c3e6deb-202601141126.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-043f2cb-202601141127.0_1768390138468_0.1233897324607911","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-4c50142-202601141132.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-4c50142-202601141132.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-4c50142-202601141132.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"67fc95a597f508d35f05b9f7ac57912a9c07112f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-4c50142-202601141132.0.tgz","fileCount":460,"integrity":"sha512-b5EuxRtw5NB3i/xDolR2ytNpDxyxMHl0AQQLfdHR+JefLim4hM2hf112El3W00nPfsGWFXmhAjnR9VcXNW8EnQ==","signatures":[{"sig":"MEQCIHNbz8x9IqHuUXo0XsPlkPW9y4pcQWeSL9QUsHQZc9aHAiAI7QFfGyP7bYI59K4uj2sk5P3CYe6671+N6+7rBNdy9g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37138322},"engines":{"node":">=20.x"},"gitHead":"4c50142508401e76f79ee47e7473eb6d3840bc1c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-c3e6deb-202601141126.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-4c50142-202601141132.0_1768390444512_0.6989887049446841","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-4c50142-202601141147.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-4c50142-202601141147.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-4c50142-202601141147.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"49cbdceca9af9a90d9395a0f6715ea2ab9f11e10","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-4c50142-202601141147.0.tgz","fileCount":460,"integrity":"sha512-EmfcQ2vHOV1KwUPxaVlmimC0Vexg3842/CrYSicMa+q1mz+kI5W2WYrrb3IOFmlhSJ01rIg74iY0UU1pcYyFEg==","signatures":[{"sig":"MEUCIQDZJjFc4Ejkx9tQ7V69/M8h/2Q1QZnErkgYCcwWaPJmFQIgeuyGUJ9om0QXPgWbBbS6SCSHp1MzqyKf07VN5ctPXGw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37138322},"engines":{"node":">=20.x"},"gitHead":"4c50142508401e76f79ee47e7473eb6d3840bc1c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-c3e6deb-202601141126.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-4c50142-202601141147.0_1768391358573_0.6377772493313056","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-4c50142-202601141233.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-4c50142-202601141233.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-4c50142-202601141233.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0baded1d30fc1c70217ae54513168ef794e8fa13","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-4c50142-202601141233.0.tgz","fileCount":460,"integrity":"sha512-SQ0TLtQpDbDcFyvZSYMzWtfi+P4bT1yz9mhbnclv29S2/EJj9op5eMyfbp92QWGzp7wy9gPLwruMKVB4Xs5x7g==","signatures":[{"sig":"MEUCIQDtPspZi8Dehy6tEi6uxt8+2IqlnRJdb0wvMfXCr4DLdgIgD4A7Sry2nrsL0+MGSUzIXn943KXkNSFTPzNx/5VnmIk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37138322},"engines":{"node":">=20.x"},"gitHead":"4c50142508401e76f79ee47e7473eb6d3840bc1c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-c3e6deb-202601141232.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-4c50142-202601141233.0_1768394082910_0.371944331960945","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-1dd3e4c-202601141445.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-1dd3e4c-202601141445.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-1dd3e4c-202601141445.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a9fccd5cf766b8c40cee9797ab2e0e82eab2483c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-1dd3e4c-202601141445.0.tgz","fileCount":460,"integrity":"sha512-nDIcfwC4+fM+Urxr98/06AtcvNguey7nF8neiQXwAs9Yqg74NG8F/D4ZqdFt+Wvzh4Ppuof/F5uZgmJJ40a7Tg==","signatures":[{"sig":"MEUCIGWk3cTAw2MYh44drKhsq8hcSunYlmUEel6Dh/O0tv+MAiEAyJkjij9PLWE9mdtDdOLoBnC5ekV1IiJOkvvtRauQkvM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37141331},"engines":{"node":">=20.x"},"gitHead":"1dd3e4cdf283a787eecd6b558783ffda79bb1313","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-c3e6deb-202601141232.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-1dd3e4c-202601141445.0_1768402009623_0.567209096621974","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-7081520-202601141500.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-7081520-202601141500.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-7081520-202601141500.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"529a96c0c8c880829974242548c01c6550cf9ed5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-7081520-202601141500.0.tgz","fileCount":460,"integrity":"sha512-Haxhuf7/jskTHrKBkGc5DmTgcsKBrEln84o/N1cRiPbi/1172JQ+hBCgcul3YEfuDcbaR5VNPIsuAATo3EDLeg==","signatures":[{"sig":"MEUCIAq3aEl3rlAVfiYPGD5daItt4YMzADFcOmjfYkuQW6EEAiEAp9Mlz2MzN7kCpuiKmwzoqmBDgnS8eyyV4q7WswJl3aE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37195988},"engines":{"node":">=20.x"},"gitHead":"7081520ef370a07e1c91176be921fb2882b71037","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-c3e6deb-202601141232.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-7081520-202601141500.0_1768402907010_0.2074443609336145","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-7081520-202601141505.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-7081520-202601141505.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-7081520-202601141505.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8074bc181be25463849e3764ccfde67f23403031","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-7081520-202601141505.0.tgz","fileCount":460,"integrity":"sha512-9ING7vqnmkryFPGFhgw41d7Nf5EI5uG0hkxTI4HqoPOH6fLYSBPvtugs42q6wtOxOihllmrhiIfBHvyClpyk3w==","signatures":[{"sig":"MEUCIBe+Nuw9KrN49dhg+yDq4Ow7jxCOh5GIIUaaa1EBbYshAiEAlOm9sRAOlBkQvXWrxRpv3owpWjas6K/bmB7HAhIAzE4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37195988},"engines":{"node":">=20.x"},"gitHead":"7081520ef370a07e1c91176be921fb2882b71037","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-c3e6deb-202601141505.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-7081520-202601141505.0_1768403255209_0.3298502870637654","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-7081520-202601141515.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-7081520-202601141515.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-7081520-202601141515.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a13a320611ab20689bfc77c00d40e04f270ed77a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-7081520-202601141515.0.tgz","fileCount":460,"integrity":"sha512-nA2rcYFqjcSKQSR6rWTK/t8EbXUvnbXzVuacoof0tCanbN6zgUyueFLMvxo6ohdRHx3CUCw8nhh8ZEMpqr46qA==","signatures":[{"sig":"MEUCIQDILZKEhsclo5rZIdRW/CU9666nfXIXHJcc6evSEEFAFQIgZ2ydw3Ly9Gs8R+f/CN5Y8EgJkPDeAzfIapkrPuxhrcI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37195988},"engines":{"node":">=20.x"},"gitHead":"7081520ef370a07e1c91176be921fb2882b71037","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-c3e6deb-202601141514.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-7081520-202601141515.0_1768403832217_0.6658156721478279","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-df4206a-202601141537.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-df4206a-202601141537.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-df4206a-202601141537.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"590b8973956f2a3f3347416234915009218c7b89","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-df4206a-202601141537.0.tgz","fileCount":460,"integrity":"sha512-Zm/qP09g7FZbI6w0hYo1PdRgHTltCLgvfABnfL3vrhbf44zkIp2wKAoY8P63ZeKGbFPIez6tYBTOw+M8WI6mPQ==","signatures":[{"sig":"MEYCIQDXXxbpxGHJTufOwyE3Y5hfiAMHsowUlNOQcHHCYL1Y8AIhAOlkQCSMdaUu8JbMjN0+Gf65uZJYSCCNJ1Dl51JPBfK0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37190829},"engines":{"node":">=20.x"},"gitHead":"df4206accdf07e8dc3d94b5bc3b354341223c189","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-c3e6deb-202601141537.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-df4206a-202601141537.0_1768405167133_0.8179049602606172","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-df4206a-202601141540.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-df4206a-202601141540.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-df4206a-202601141540.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"db79d235cacee444e391d292d3df1919f3bd1a5d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-df4206a-202601141540.0.tgz","fileCount":460,"integrity":"sha512-H/sYRVozixSw7zxF11Z1DW1fOERCtATkWVmL5ahXEiCPiyZpgN/VppUTV0T36iJKrJPtqGdwpSnK2PdrcsRtag==","signatures":[{"sig":"MEUCIBueORnTdn5Q8KQhdlQ/oaQzr4vgd8/y5VTj3Z9cQjkcAiEAxfGtCQv+RCgJPbDBCU/GpxzKle5M4w/+7R3nWzvo2JU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37190829},"engines":{"node":">=20.x"},"gitHead":"df4206accdf07e8dc3d94b5bc3b354341223c189","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-c3e6deb-202601141537.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-df4206a-202601141540.0_1768405356554_0.9417867554128283","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-1cbeb2f-202601141651.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-1cbeb2f-202601141651.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-1cbeb2f-202601141651.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"59b8559ab41e3e1c8f78bb211ab67a89f0327779","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-1cbeb2f-202601141651.0.tgz","fileCount":460,"integrity":"sha512-MeOEVx7o+BPQsgQHkx/qj2VA+/Rr8OY8yj5184TpIghGpWRTTw+/XL+nlMUYVSN1Fld9d2tjGGMTHtU8o4mVGg==","signatures":[{"sig":"MEQCIEAk3oYG7yvKLZAuY6Ols8TNDWdlOQ+vNHkSfLhGvx03AiAJnvbpeHfFzHX8wK2jn02o5aDJ7CRF7Bokqwae2Pn6tg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37190829},"engines":{"node":">=20.x"},"gitHead":"1cbeb2f28f1a4f9c7c2f5b82e98834d7cd33519c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-cc124bb-202601141651.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-1cbeb2f-202601141651.0_1768409589554_0.22320766837748796","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-ff69e98-202601141725.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-ff69e98-202601141725.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-ff69e98-202601141725.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d566e61bb0d2a31d1c36420866b45b3d87ac604d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-ff69e98-202601141725.0.tgz","fileCount":460,"integrity":"sha512-Aoj/G9BXSqQR+UJCMnA8DVy1Fwx9duU2IdT8vTx+KY+b4zz2KsJLPc1Gj0E51ZE01NR1WRkmFNLzlPGNOe9DJA==","signatures":[{"sig":"MEUCIDD0jLJhC2WVyleE/lj83Ht7DNLpROfBaVAMO/K+XD+GAiEAwwEERlls5tKeOVv9ZXKPqzsT/8TVfmoki7iSI9QHns4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37191326},"engines":{"node":">=20.x"},"gitHead":"ff69e981faafc07882275ffe4fe614a3a18d7fc6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-cc124bb-202601141651.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-ff69e98-202601141725.0_1768411602024_0.617827149582292","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-3791bd7-202601141821.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-3791bd7-202601141821.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-3791bd7-202601141821.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1af0a4ebc9f53ad7a7743d1ab90f5c3880579946","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-3791bd7-202601141821.0.tgz","fileCount":461,"integrity":"sha512-4uaZHTpXyXvvmknqTYGp6S1r3z9OJmL+Jb3xDanazqpbEvUImi96vMrz7jf5HdUcYdrAI1e0UaVn2xMQ8YPsJw==","signatures":[{"sig":"MEQCIAwhyxc56x+I7nwMfPMUYWTbgANptu/CSgQAtkK531nkAiBOOzEYLnqxwY1mT0Pyl3L/1DaVB9d+ndXn8FLTpWDPKw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37209378},"engines":{"node":">=20.x"},"gitHead":"3791bd725cad208166fb9ffddcc08bf8f142d800","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-cc124bb-202601141651.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-3791bd7-202601141821.0_1768414989239_0.2502761574643475","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-1a6fbba-202601142023.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-1a6fbba-202601142023.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-1a6fbba-202601142023.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dd13808a3e5232e21ea0109c893c9f5e360af9bb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-1a6fbba-202601142023.0.tgz","fileCount":461,"integrity":"sha512-G/iBgxJ2tGV3CkEgbCLkwj+dcoZk/q3v+jN58TIdXetQUsyuL+IrBm/KSXiIiIa5Axzu8PMb543x9IE35OiIew==","signatures":[{"sig":"MEUCIQC3plmWIRlYtpif8JI6RbHDQzkyFK2i8r08oAil+zMw3QIgO+7cHoQk+rIZYMtSnuyBtMldKki7LHVqndILdRjAG4E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37214501},"engines":{"node":">=20.x"},"gitHead":"1a6fbba21ad9245df6d48f1fb6219511945d15ff","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-cc124bb-202601141651.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-1a6fbba-202601142023.0_1768422290767_0.3283001641099301","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-1a6fbba-202601150953.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-1a6fbba-202601150953.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-1a6fbba-202601150953.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"157d3332a8f591c4d215b4d3c7e02e7c9d061f5c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-1a6fbba-202601150953.0.tgz","fileCount":461,"integrity":"sha512-TEBrCEamW8Rx++8ITBukwmaEwNZ4B25uOsFBjM9Hemfsu4E2/zCD60HCz7o/+ashaW9cqigA/j19iENZjxIlVg==","signatures":[{"sig":"MEYCIQCrEjVLwH9MR0VnpqnkT5XF4By4CHU5aiNTENy00Jh8oQIhANAHdJelGwrIqs5ygNZ+Q2v8ts7C/gfs5bd9a4Z67W65","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37214501},"engines":{"node":">=20.x"},"gitHead":"1a6fbba21ad9245df6d48f1fb6219511945d15ff","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-cc124bb-202601150953.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-1a6fbba-202601150953.0_1768470929979_0.01486306468704246","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-ab0c06c-202601151041.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-ab0c06c-202601151041.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-ab0c06c-202601151041.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"03df7813016244c0d36c29a0ad1268252595cbe4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-ab0c06c-202601151041.0.tgz","fileCount":461,"integrity":"sha512-XskwndnD1P3fVr4CmGP2/Jiq4Ls/HOBNfqL1CBlRUH93oNFMbnr6KMIzqh3+gpWYxes/kH0xjcaCt3381Vc9+A==","signatures":[{"sig":"MEYCIQCeZzHs/E6e6dBsPHdkK+0E+/x2IKdvv1rOG+URjko9GwIhAIrPSBBG7D9ileKmSDfWsOxwNmImj1lTJwbaMyI/49RN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37212615},"engines":{"node":">=20.x"},"gitHead":"ab0c06caa3bd67a2df21ad9332d480c8248e4044","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-cc124bb-202601151039.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-ab0c06c-202601151041.0_1768473779838_0.8764841561291021","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-ab0c06c-202601151045.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-ab0c06c-202601151045.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-ab0c06c-202601151045.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"126dfdd47a40997e254b114153e2fa51d2910fcf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-ab0c06c-202601151045.0.tgz","fileCount":461,"integrity":"sha512-9YDo0iKVOh3RxbsTZFbPsBq01EizSl+euMVFqV08fb32IeqU+nbrLdR84fa48mFePTihrtW2wbfk4LTa4jsRaw==","signatures":[{"sig":"MEUCIB+hsHNRPO6TVlMAbddw/qVuZQpcSMgwbW7PMP4M9vv9AiEAh7vPHTZakEHqVQNS7ffmzsn3/9mR0moqj+3G6Jwr2GY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37212615},"engines":{"node":">=20.x"},"gitHead":"ab0c06caa3bd67a2df21ad9332d480c8248e4044","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.25.1-cc124bb-202601151044.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-ab0c06c-202601151045.0_1768474003182_0.3326780296929759","host":"s3://npm-registry-packages-npm-production"}},"2.25.1-ab0c06c-202601151055.0":{"name":"@flowfuse/flowfuse","version":"2.25.1-ab0c06c-202601151055.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.25.1-ab0c06c-202601151055.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4a90e184ddf92bd955dcd9669c27357e2890423b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.25.1-ab0c06c-202601151055.0.tgz","fileCount":461,"integrity":"sha512-6Wn1SMjsJaD/nzX6SnXl1TRzS/bEA0BqCBsQbwk8iPN+j94MyupmIY2Pg0DUXe72wWOJyoeCCYiXtKEJDaM+Mw==","signatures":[{"sig":"MEUCIBnUe3CDG1LNsaBDUC1iig9HZ0uXcUOFGIIp7SlDWu+EAiEA/2qtXDXfwpj2SlZk8cr6P8oT36O9XvHP5YwqzVF804Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37212615},"engines":{"node":">=20.x"},"gitHead":"ab0c06caa3bd67a2df21ad9332d480c8248e4044","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-edf22ab-202601151054.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.25.1-ab0c06c-202601151055.0_1768474625800_0.42519729424145014","host":"s3://npm-registry-packages-npm-production"}},"2.26.0":{"name":"@flowfuse/flowfuse","version":"2.26.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c5287b48b5b05ed9fc66bb117d2202a0ec4aac0b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.0.tgz","fileCount":461,"integrity":"sha512-ue2TBv6NKi6zR2UJiL0jNH/qmkvq5hR/0s5w64YnvxpM2N4kMl8eI+e5Bl4LlGvS0n3qouzQ9xc0G1F6wFdLWA==","signatures":[{"sig":"MEUCIB3sxmm3h2T/Vhwkk6gm0hRYwvgQHD6a/G03M1Qr4+oDAiEA3D+DXHSEFu30xShYtjUPdMBQD8zOQJl33ukVPiGuq20=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37212233},"engines":{"node":">=20.x"},"gitHead":"877555b55cf1e3c263f413a2299705e9cf2a233e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"^2.26.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.0_1768475171682_0.3147379063948701","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-877555b-202601151119.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-877555b-202601151119.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-877555b-202601151119.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"45d812e9e95c1c4b5b46881e49f0947d50061d61","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-877555b-202601151119.0.tgz","fileCount":461,"integrity":"sha512-VuAFlRPNLCXhk+iykQv7Jwu0sXI7eQchP0O0pYQTlG6OpQgmiTM8tvqXpj/qGePEGTfOYkDH5l41F6eT4D9nEw==","signatures":[{"sig":"MEMCHy5gKUaLBxjfrhjJzadlDvUuouPI2Fx1NqMBhix4B74CICtaieoXVzv/fFNZvi8hCL1DkJRIjtIsfGp0fohhZQ8F","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37215414},"engines":{"node":">=20.x"},"gitHead":"877555b55cf1e3c263f413a2299705e9cf2a233e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-edf22ab-202601151054.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-877555b-202601151119.0_1768476067014_0.5442700861547365","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-6b2a871-202601151631.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-6b2a871-202601151631.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-6b2a871-202601151631.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"114e275a0ba428725ea2f6b925dafc45ac2af1cd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-6b2a871-202601151631.0.tgz","fileCount":461,"integrity":"sha512-ZHb8dGmwWDZ6283wMkSXAGl5VPrDmZdUUFRxVFoMV7vNg6K8FZTSJ7jZw9sLHNouZMUzUVo24nOXSXSfQw6kOQ==","signatures":[{"sig":"MEQCIEfokJU34EZmaSZo7ZUW4Mtk/uEyzoPVz39ij2+1zga+AiBQ9Z1R9wF9vr8UiXUYQqPEu2hjMuTQGGNzupjnuy02YA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37215559},"engines":{"node":">=20.x"},"gitHead":"6b2a8711e8d9116dc2c8d0b28c691704c7f04332","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-edf22ab-202601151054.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-6b2a871-202601151631.0_1768494787225_0.6330069655682908","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-6b2a871-202601190656.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-6b2a871-202601190656.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-6b2a871-202601190656.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c1811f2c009ba75c97cdc727b83fad933e174a93","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-6b2a871-202601190656.0.tgz","fileCount":461,"integrity":"sha512-9p69bhC9GIQ/+XftlOgkoS65FVgq22jLI/D/4oUzaoYzUan9Hyu7HlLaUKP0Z3vwE5F0B8L1UZDEcdA4KxMNdw==","signatures":[{"sig":"MEUCIQDe14PMkooLU2Ltj6Q8iiURtQ3i20X7uEb0bWdu9TunxAIgV4SFPtoQRn/78VUtZH8x3AqbsCGrD5GR03LSrRYnBJg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37215559},"engines":{"node":">=20.x"},"gitHead":"6b2a8711e8d9116dc2c8d0b28c691704c7f04332","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-edf22ab-202601190655.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-6b2a871-202601190656.0_1768805871515_0.7672972361089805","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-6b2a871-202601191435.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-6b2a871-202601191435.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-6b2a871-202601191435.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9030e3a06f3e041c4909621c0a4412c617ec5a79","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-6b2a871-202601191435.0.tgz","fileCount":461,"integrity":"sha512-w+o8Obrbx0MPILPxZJnCByITtpt0Z+gLyfl5naoxUhCCxyuKe2A78rGc6DHEfcdYdRYosejQZ2hcZyfwvVTItw==","signatures":[{"sig":"MEUCIQDbtv9q3TeSr44YBGPXx6uJI1nVOUURQJQcA1q61vaJZAIgWmQHxBidkuTc6hwJ0kp+pTR6U+rL50WF1Q0IzsQ2KAE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37215559},"engines":{"node":">=20.x"},"gitHead":"6b2a8711e8d9116dc2c8d0b28c691704c7f04332","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-edf22ab-202601191435.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-6b2a871-202601191435.0_1768833429263_0.24218005749869764","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-6b2a871-202601191446.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-6b2a871-202601191446.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-6b2a871-202601191446.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"aa1b3e9f29f86a973b2b02b4f03a7e4302ecf60e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-6b2a871-202601191446.0.tgz","fileCount":461,"integrity":"sha512-JUrRr8pDY+IyhEvuKDXsST9uSAaQOdqha5Oy+fFy+H8K9O4506ACHbhIRPzNd3jqCsviPOFvMCliNVbR3PZCcA==","signatures":[{"sig":"MEUCIEFEr2HAQC9r0DUl/WWbFksYWf6yINa0nMrREYi+lHMXAiEAm1rfIKkyJQ2lYDNGFpcBqyj+lEeFHzOSCxlGvUgQaeI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37215559},"engines":{"node":">=20.x"},"gitHead":"6b2a8711e8d9116dc2c8d0b28c691704c7f04332","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-8c057f7-202601191446.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-6b2a871-202601191446.0_1768834095661_0.08010426842463447","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-6b2a871-202601191600.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-6b2a871-202601191600.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-6b2a871-202601191600.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c6eaf58db781f3f7d585370f6e17820f100469f4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-6b2a871-202601191600.0.tgz","fileCount":461,"integrity":"sha512-3Km2QJMMJWeo1IpPG9UHv1TmUYJc/qpBjZFNFWUBKvIx4A3h/ODWf+a4LhViWKz0geWAJljK53isWKjaHJ/uqQ==","signatures":[{"sig":"MEUCIEqMRMwa5KgTWPgdOyyvmotI9T1T7m5W3+DT5kVmiS4yAiEA8AVAGqV2Mco/dhXa5KOrEO/siS4xJcGtx1UX0i16VSw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37215559},"engines":{"node":">=20.x"},"gitHead":"6b2a8711e8d9116dc2c8d0b28c691704c7f04332","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-6012231-202601191600.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-6b2a871-202601191600.0_1768838556804_0.28273540571594347","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-6b2a871-202601192006.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-6b2a871-202601192006.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-6b2a871-202601192006.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"448a2f782a62666f1bee65132689020999c9fe2d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-6b2a871-202601192006.0.tgz","fileCount":461,"integrity":"sha512-Tg6eHinxYXNwkPqmVNuFoDm4/rOHFogXYuIYT+kL6QzygiUr5zVwhYvnM3yBwm8bPbPrG9zdXyZnQWh09CzQAw==","signatures":[{"sig":"MEUCIGIi3kbVXbh9S+JoMt0Kuipbe1VV63Vj0tlqVHUyhIEpAiEAxgIgtnTWcwhzHN0BjI6faNvXGet3nhHjYXe9EgoIadU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37215559},"engines":{"node":">=20.x"},"gitHead":"6b2a8711e8d9116dc2c8d0b28c691704c7f04332","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-6012231-202601192006.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-6b2a871-202601192006.0_1768853296170_0.5641655383188839","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-f3a4212-202601200805.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-f3a4212-202601200805.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-f3a4212-202601200805.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9bd55c126855686ec2e80826920b537485a093a6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-f3a4212-202601200805.0.tgz","fileCount":461,"integrity":"sha512-FEXdNB6qKsCbUZr6Xa66D16VN4cf6ABRBnMZLd7HfBw7pirXyKrIN5kbIvavJZtIEIQbb/0KMBBiQpDBf7tJ1g==","signatures":[{"sig":"MEYCIQCWA/AyiJbg7gLL7g+S7+G2m8PsaEfLu2y9IDXd6tYHXwIhAJo1WyEy6YAV5vMtZga1XBDFhkFCjSflfUJhAdOskygu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37215559},"engines":{"node":">=20.x"},"gitHead":"f3a4212cfffef87b1c7756c988a2b4da08bc5180","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-6012231-202601200805.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-f3a4212-202601200805.0_1768896439088_0.05767756123838863","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-f3a4212-202601221341.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-f3a4212-202601221341.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-f3a4212-202601221341.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bc3534bb12c66941d87138891a9158647648def1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-f3a4212-202601221341.0.tgz","fileCount":461,"integrity":"sha512-6j936qDiH7K53Uk73TF2XZV9/V5oHWsREmAxayBjY0QDfLJTQi5FIGk90ygtMt+f3S63FpgzMkm24VEFIFiINg==","signatures":[{"sig":"MEUCIQDqPgN5WG2wOmvOQIrv1I+Tr0eBagadPCaMDaToGkQLCwIgYLoWsjSNhZsj4hHXnSvMGQ8f6z/q5IALLJbEFcGHsGA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37215559},"engines":{"node":">=20.x"},"gitHead":"f3a4212cfffef87b1c7756c988a2b4da08bc5180","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-6012231-202601221340.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-f3a4212-202601221341.0_1769089358375_0.7491032371664874","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-786a993-202601221510.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-786a993-202601221510.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-786a993-202601221510.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4525bdb36de0cc417b3ab9e6059e9a8ae317ca6c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-786a993-202601221510.0.tgz","fileCount":461,"integrity":"sha512-7xmKS7AX0W6wmOFDSFmJsfYtaGBIC7iJ2Q6900YClmrqleLCyc0LM9GtbDd+psCO1R+XU4Sw2IVzLXkwUpH1Cw==","signatures":[{"sig":"MEUCIQDUXnRbnOJCfCss+U60TQK+uVBsdBzNFpCeoxkvs1cw2wIgSnBG6+z4asLvET2FJMhb+LVWDZxPNTI1iQR4Lm5wrMs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37216176},"engines":{"node":">=20.x"},"gitHead":"786a99386cf816d2193f8a5c51109c1df414cba8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.19.6","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-6012231-202601221340.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-786a993-202601221510.0_1769094727013_0.1199543213951757","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-a0bfa33-202601230818.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-a0bfa33-202601230818.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-a0bfa33-202601230818.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"70fe17af29f1791a39e8f820b0360d9292970f38","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-a0bfa33-202601230818.0.tgz","fileCount":461,"integrity":"sha512-c8oZZGE6GxsKudYORb68RWB0dRTdM8VnVpanwMjHtDSYaodlI1DZpNLRXEM+fr0kWm/OrmKhJ27ITeuQDb0dNw==","signatures":[{"sig":"MEUCIQCL/9zqX6w9rE5Nm7Ekh3LzJPYyUSfQTww89ht9Zj/dKwIgG+rPMIEWlkbxMPhTjdmT5tLX7oXh+tsb/1Bfr0vysPo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37220863},"engines":{"node":">=20.x"},"gitHead":"a0bfa337d9fb3efaa66259883768fca4e7743142","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-6012231-202601230817.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-a0bfa33-202601230818.0_1769156377287_0.5112828766959026","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-a0bfa33-202601230834.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-a0bfa33-202601230834.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-a0bfa33-202601230834.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1678fbace96580e8255bd707953edf9e78101c0a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-a0bfa33-202601230834.0.tgz","fileCount":461,"integrity":"sha512-sK9bRPVYglTJXNaMg3WuYPeQxP12J+F4CNQA6+ckeY+bRcVf+PUKIwEMpJZEywZbBfYkmJjQob/qSqZMM8snPw==","signatures":[{"sig":"MEUCIG8JZ1bIW7qncmhlIPT0UVxwp3ZlrCxWHjtPLiypi1x7AiEAnZdJdFDdiBqSTgbAS4/79seiNu6nxctkYQA4VooODLc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37220863},"engines":{"node":">=20.x"},"gitHead":"a0bfa337d9fb3efaa66259883768fca4e7743142","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-6012231-202601230817.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-a0bfa33-202601230834.0_1769157347703_0.993933472144189","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-debae34-202601231611.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-debae34-202601231611.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-debae34-202601231611.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4b6ca39691b219094c094f417b33de50e83218b1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-debae34-202601231611.0.tgz","fileCount":461,"integrity":"sha512-CNTNZ3hEHJgXNENX483KLZ9MjfhwyiDMmeOBlLZs7oVmpoWifUD2AwZ0yP+N10Z9Q8TGgSqLgZLfWoYl6g/EkQ==","signatures":[{"sig":"MEUCIC/0E3hsi8zYZraHDVto3vaJ1ZoxtHxwzrjXt7b3s0D/AiEAqym904xkACn5Nv/Xc+u0HRdO6zlboGwNhEBhlSsbLVM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37221001},"engines":{"node":">=20.x"},"gitHead":"debae34f43bad0cb5f20bfcad463efcf2c2d9135","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-6012231-202601230817.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-debae34-202601231611.0_1769184779746_0.5052158986162125","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-b1cff0e-202601231820.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-b1cff0e-202601231820.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-b1cff0e-202601231820.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"871ec3762a71c662c7c2e394cc713056ca602e3d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-b1cff0e-202601231820.0.tgz","fileCount":462,"integrity":"sha512-CAMf19VWc+KvmlKA7V1BE74SkAhq71fIOhlTmbcNkfB1p1eN5Bws95VVmfaTagfbyPbilFsFwOY/veEjrvVN+A==","signatures":[{"sig":"MEUCIFf6+vxtSfncln1H3HcnxSTt41iL3xSigfv7bdMuAfkXAiEA5IGi+9hnFh1D9Gej0rGmXZWzge6HlGWSfjkdKChU5ic=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37235721},"engines":{"node":">=20.x"},"gitHead":"b1cff0e6e0499ef5ad2578d0fb552fb776706ca5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-6012231-202601230817.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-b1cff0e-202601231820.0_1769192540756_0.10077206294327401","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-b1cff0e-202601231835.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-b1cff0e-202601231835.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-b1cff0e-202601231835.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7d34302324f51ced2bb04a70f6575b8057b880d7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-b1cff0e-202601231835.0.tgz","fileCount":462,"integrity":"sha512-RLqzEZ/NwTzdcMddMryuuRUI4GemNR3BiLbPw81vslBmdE30fn+Nc8+OtRDNJks93bSWgvS+cVCkEAeJD8P3SA==","signatures":[{"sig":"MEYCIQC1r9QPy1lAMUrD3jJm5naXRjAV2fhgWN0Cs7ZqYe15OAIhANDUvd001cA/v0MJqm4KphvELMw41euiCpDyApg0uh/z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37235721},"engines":{"node":">=20.x"},"gitHead":"b1cff0e6e0499ef5ad2578d0fb552fb776706ca5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-6012231-202601230817.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-b1cff0e-202601231835.0_1769193441377_0.5631143324434702","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-b1cff0e-202601241143.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-b1cff0e-202601241143.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-b1cff0e-202601241143.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5b46cdb99696d6230cb41d8633966f2fad3100f5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-b1cff0e-202601241143.0.tgz","fileCount":462,"integrity":"sha512-GI7FJ2nHQYIXSW5giLXyRRL4Pd6ZMBD/8B6Gowk990K4wNg0GZC0qkbUgIzgGTKwN4oxYh/3FLEzae3OisRO0Q==","signatures":[{"sig":"MEYCIQCxvzogwiLlHw1tOcK4sVEK0f/Suu6KIacIbQ2ukrzyAAIhAKGtrKPn74sUy6hm6YosEF3llFAXITSvZyt3JrtTLbuM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37235721},"engines":{"node":">=20.x"},"gitHead":"b1cff0e6e0499ef5ad2578d0fb552fb776706ca5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-6012231-202601241142.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-b1cff0e-202601241143.0_1769255099192_0.1723077084984712","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-b1cff0e-202601260754.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-b1cff0e-202601260754.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-b1cff0e-202601260754.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"49c300b5dcdf287e975e614f0ae7c29ec35d3481","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-b1cff0e-202601260754.0.tgz","fileCount":462,"integrity":"sha512-KFeYik8KkDmkaoR1S7OfYWRRM5X1asr8G0BQtfWcpoPpYpnKsz7Jhu3GcPzx1rKKVGGNsqnD5/lKG37hsznqNg==","signatures":[{"sig":"MEYCIQD1nvEF6zlKVhG29kZle4R+yfHwYLH/PwiJzEwrx8kLXgIhAJJM8xaEjEgTsnLiUNWtl7a/Zds1EnQK41uXYHGiGP0g","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37235721},"engines":{"node":">=20.x"},"gitHead":"b1cff0e6e0499ef5ad2578d0fb552fb776706ca5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-6012231-202601260753.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-b1cff0e-202601260754.0_1769414160572_0.6617823959888147","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-b1cff0e-202601261100.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-b1cff0e-202601261100.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-b1cff0e-202601261100.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"72d83969c80bcd5f6d705860ebda86a919c76e77","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-b1cff0e-202601261100.0.tgz","fileCount":462,"integrity":"sha512-w8XMvcfpzRuwGI6jOH9cw4Pp5d2tkXo/CdZWyD1VKVbAUUS3m55kbIUTR7jLXlXFqhUMYT7FUfqt9DIHkr67tA==","signatures":[{"sig":"MEQCIHGHUd4Jqs/j8hLuOBBuYSENAEzPp+lZraqIV0uGfxsxAiBRRivhjeghm5+It2EFyGS4lb75UJaKIuIQ/yMR11fqpA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37235721},"engines":{"node":">=20.x"},"gitHead":"b1cff0e6e0499ef5ad2578d0fb552fb776706ca5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-6012231-202601261059.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-b1cff0e-202601261100.0_1769425318098_0.5015509731907262","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-b1cff0e-202601261104.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-b1cff0e-202601261104.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-b1cff0e-202601261104.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"15e3d92acf0399672a994c9df0531e0a9c9ca2ba","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-b1cff0e-202601261104.0.tgz","fileCount":462,"integrity":"sha512-63TK4ghciudYGXDhe0tCGbJ0Jbj0S6dcE9uV9E+jU2dGe3PFgAuZ8KlniAPlolejdkBQoPtVm0LcfmhzsgT8gQ==","signatures":[{"sig":"MEUCIGIH9p89m72E5vlDGGQTWzXAdMxN94OhJx2F9N56WXPTAiEA+XJSjaOU1N6QNPlEJrjbxjpN34IM2BO1c7QyXTlA2Cw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37235721},"engines":{"node":">=20.x"},"gitHead":"b1cff0e6e0499ef5ad2578d0fb552fb776706ca5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-6012231-202601261104.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-b1cff0e-202601261104.0_1769425598787_0.8200747546296026","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-b1cff0e-202601261119.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-b1cff0e-202601261119.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-b1cff0e-202601261119.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4424c77c4d765c5ad3e69621a3776b73b1fb6750","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-b1cff0e-202601261119.0.tgz","fileCount":462,"integrity":"sha512-XEoTCjknL/9OPtJZec07y4ihS0iXJidH0eBN3jF7HO2jXfcUj8OXuglGCvWl5fv6VZIbCSnR6l/ob2SPFkIMkQ==","signatures":[{"sig":"MEUCIQD/teRX/TfAji2VtzpB/zCdZU88jGAi9E/tFqWjzW58GgIgEoVPXc6kVqtl9gK9C/Ck6wAe5QHTZq7Lpl3Ijea2+vo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37235721},"engines":{"node":">=20.x"},"gitHead":"b1cff0e6e0499ef5ad2578d0fb552fb776706ca5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-6012231-202601261118.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-b1cff0e-202601261119.0_1769426475752_0.5867425405630895","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-b1cff0e-202601261137.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-b1cff0e-202601261137.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-b1cff0e-202601261137.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8efb9f8b97431e42d38d0973f61dd12637d6e4c2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-b1cff0e-202601261137.0.tgz","fileCount":462,"integrity":"sha512-bCCVV/uBWi7Yog65ECHhMV+M7d+bLMmjLybZdStrNrqAz/oA6b8uySi3y9ctxSLNsBNJ4QHaFvd3VUJ6gWhAEA==","signatures":[{"sig":"MEUCIFd46q3Tu7pXK6+A/ZhjiQGqruoMn2CBnXtJpict390wAiEAnEV1XMnLEzketnvQ18JZRNbeIoS4+N6zk4vs3nE2KM0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37235721},"engines":{"node":">=20.x"},"gitHead":"b1cff0e6e0499ef5ad2578d0fb552fb776706ca5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-6012231-202601261137.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-b1cff0e-202601261137.0_1769427566214_0.3334330688602014","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-b1cff0e-202601261147.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-b1cff0e-202601261147.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-b1cff0e-202601261147.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"aa66d4abe8983daef368d505a9b1d5d33d582ac7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-b1cff0e-202601261147.0.tgz","fileCount":462,"integrity":"sha512-7MBMSSIkfVCG6hRdTWNWRYiPxEUeR8twZoQm/DAzZFKMVOqRFdp/ZwkOpSv5OdrehuPqMYzuaoHme+NspYqQMg==","signatures":[{"sig":"MEUCIQCdyNsh8NU9398DJjh70ygALmUhfVyz1VpHTUR2Y6W11wIgHZu0LXM5oWV2zWtS4/rAxQp30tSxfnUNN/HRnCywOeQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37235721},"engines":{"node":">=20.x"},"gitHead":"b1cff0e6e0499ef5ad2578d0fb552fb776706ca5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-6012231-202601261146.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-b1cff0e-202601261147.0_1769428141214_0.12503357429872985","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-db66821-202601261159.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-db66821-202601261159.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-db66821-202601261159.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4bf63673194a2eaeb8cb3608f2e59321fd1d7a2c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-db66821-202601261159.0.tgz","fileCount":462,"integrity":"sha512-4LbTeEpJ85YaCKvJXYoOsgWCuuJyG51wdUOSjPxgVCkiO0RyWEKHnWv9O/fUa2GMpCnarqUTuIJklF8tSzCfGA==","signatures":[{"sig":"MEUCIQDAJ0OEbEw9iEMpzv0yjxbHu0kgJHlotgrzKN2gzMXh8QIgWi2V6hqhWTGNupAutSVbs1kboVDx/nvACb0pj6d7RgA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37235721},"engines":{"node":">=20.x"},"gitHead":"db66821b278c0600632365273965ea32e8c56d75","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-7d496d3-202601261159.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-db66821-202601261159.0_1769428878275_0.15612791339899146","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-db66821-202601261323.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-db66821-202601261323.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-db66821-202601261323.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d1f300e8db3088f5115e06086ce697c8d6e9ef27","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-db66821-202601261323.0.tgz","fileCount":462,"integrity":"sha512-79DHCilFe+CEgHAK8TmzZ4J8qQEi61ED6iqt10HJgtYEZaXyoc/3n1wn7H7xg9vOUuM8F0tdShqoH6wqFHahsw==","signatures":[{"sig":"MEQCIBow31SDfnaN+7GMEobeNoVRB9pv9BHrtsAdAcgh/QNDAiA5hqgPHHT6n4ttc9378EI0l1Vw2TLkXlB9omyX7obAAg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37235721},"engines":{"node":">=20.x"},"gitHead":"db66821b278c0600632365273965ea32e8c56d75","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-7d496d3-202601261322.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-db66821-202601261323.0_1769433877601_0.08657798260849336","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-db66821-202601261325.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-db66821-202601261325.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-db66821-202601261325.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6f77c25625623b5f95b8dd6eda46649c96e4c24e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-db66821-202601261325.0.tgz","fileCount":462,"integrity":"sha512-gI0E3dN2JLD5AKQMizKINhGz2AD3T6Slw4W3iSQNqfF/jwn6m4rq028uV+RWQrGYoW2/L3yz60XcHmxNUZ07Dg==","signatures":[{"sig":"MEUCIG5TZd1ZqhNRwoLJsrK36hoS/AwozXs3mptY/nVSfkqYAiEArabiXn4mrB86VIwLCxYGR3U8INjzIe/gzl8E2cg0bAU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37235721},"engines":{"node":">=20.x"},"gitHead":"db66821b278c0600632365273965ea32e8c56d75","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-7d496d3-202601261324.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-db66821-202601261325.0_1769434000294_0.22487128996963412","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-e851323-202601261528.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-e851323-202601261528.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-e851323-202601261528.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"996354f486bde0a533acd0f07a43c2cf4ee163fb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-e851323-202601261528.0.tgz","fileCount":462,"integrity":"sha512-na65jcfwhrcWtoNxVNMnM2CYdIpGPaR2HovhHQfFI8oeIMkE+XI8bs1UHg+cPNvS4MsDThpw2NQmrGJR0sDacw==","signatures":[{"sig":"MEUCIQCAYw7nGhQk06/V1vTuqxkvDOoHvI8MRgKVRVLyEyu9mAIgcmI6br8CTCkTqRUJjfadTjKHLMF+9o20UqK8d/y0n0I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37238489},"engines":{"node":">=20.x"},"gitHead":"e85132345b3c7192c9c2d4685dbc67d7a4007d00","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-7d496d3-202601261324.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-e851323-202601261528.0_1769441429845_0.918061561539333","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-e851323-202601261538.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-e851323-202601261538.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-e851323-202601261538.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"18705d0442cda36842163896ee2c91fc4d0cc50e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-e851323-202601261538.0.tgz","fileCount":462,"integrity":"sha512-9JhBJkk/iA/3c3O5FHfwgEcHvgWF/w+Roe8NIWsGMocMR88nu56x3fdWH8Tecx7J6CTx+TaI3O8wvH/lNPjKUA==","signatures":[{"sig":"MEUCIFZqbMDf/mOlNunJzPksRcbe9gyp94lsK/TaboLFkl+FAiEAxh+EKjDxWPqjnoRaww+kOwtDkzdNtjAujulDcGBRUzU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37238489},"engines":{"node":">=20.x"},"gitHead":"e85132345b3c7192c9c2d4685dbc67d7a4007d00","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-7d496d3-202601261324.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-e851323-202601261538.0_1769442029110_0.7253698446498205","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-e851323-202601261613.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-e851323-202601261613.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-e851323-202601261613.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"de2710d5ce8186bf45dc6f916cc5e42303abe05e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-e851323-202601261613.0.tgz","fileCount":462,"integrity":"sha512-rj6AyaljDjECU1ZadcwuZNitTL9IaDhGa+MFhFHifARpBGal1mIX7vkCMZilR5LElZzE5BiCXlDqf+S0s4v1Vw==","signatures":[{"sig":"MEUCIQDcLbN7ELgyJmoE7nj4S/v5jVveZhrabuKNA+z5h9tJzgIgInyVITFhO/mHHidpvOkrqGPm6zUQd+qIJIIJSTgkC5k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37238489},"engines":{"node":">=20.x"},"gitHead":"e85132345b3c7192c9c2d4685dbc67d7a4007d00","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-9930382-202601261612.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-e851323-202601261613.0_1769444084681_0.7467527779761554","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-e851323-202601261623.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-e851323-202601261623.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-e851323-202601261623.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7787efeadde03bb4532e131aa3118aba70d8478d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-e851323-202601261623.0.tgz","fileCount":462,"integrity":"sha512-oJVVpT1hadJSdrDKYDi3AAagcAJxZV/DXM4OoGwtxeqoqK0hVzCY5uxJeZyjPkfLsRlNk3Zzc7kgJZJUwxz0Qg==","signatures":[{"sig":"MEQCIEKF0D5nWmsngt4ybryr8bgdj3DJ0k94SGbj3hfRHYlDAiBOE3ceDY0uhBosdzga5ZNxeZphycIiuJzmVxg6PqPV5Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37238489},"engines":{"node":">=20.x"},"gitHead":"e85132345b3c7192c9c2d4685dbc67d7a4007d00","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-9f613d3-202601261622.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-e851323-202601261623.0_1769444680488_0.5921757350400829","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-e851323-202601261629.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-e851323-202601261629.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-e851323-202601261629.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3540f86989a7c6327cc3a0ac2b39d23772582b53","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-e851323-202601261629.0.tgz","fileCount":462,"integrity":"sha512-z/pc90rhLtdZ5IxhkbH3v2zTkHftjCDtZbb6EySKtfj0N7SVuEx5rckZ2eiOhCwxr4g70rXF8cgfjvgYgg0ktg==","signatures":[{"sig":"MEYCIQCHwNS3EHGXbPpRgcLxvXyIWjG0WkW7/X2yG83DsryXWwIhAKcsHyf9Che+I4I5o8Ae5OsysvBgqw43I1ZTatC9SwWq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37238489},"engines":{"node":">=20.x"},"gitHead":"e85132345b3c7192c9c2d4685dbc67d7a4007d00","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-9f613d3-202601261628.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-e851323-202601261629.0_1769445068787_0.10534547281603479","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-e851323-202601261641.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-e851323-202601261641.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-e851323-202601261641.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c049858c460df0ec6f58330cd03fd1877891c135","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-e851323-202601261641.0.tgz","fileCount":462,"integrity":"sha512-JB+a1cyYqNydWg8EKzbvkKkD5lCZ2Py44mW/lhsqIzUzAwdaG9GqqGsUc4ZRxZZ0LThxgGNNCzAMtEu5ZZlhMQ==","signatures":[{"sig":"MEQCIC5iyJSgktKQ38WvfyVDhRezTnGvc3xD6Ey0a7rp31znAiAcFZuuTb40HhCa6peMic9dXfaip7VB7yvBWZpVAQlSTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37238489},"engines":{"node":">=20.x"},"gitHead":"e85132345b3c7192c9c2d4685dbc67d7a4007d00","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-9f613d3-202601261641.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-e851323-202601261641.0_1769445797691_0.30653735264637616","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-f115459-202601270830.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-f115459-202601270830.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-f115459-202601270830.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"276756a19125391e08a7de0c185afd97913ef6d7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-f115459-202601270830.0.tgz","fileCount":462,"integrity":"sha512-EY5aRCDsFqoAkEnWykpTLWVIiu2SZxXZMkbiHJbmytLChua85vRLroAqPTSnn5IAYEg+zt5vwXfzt8BezuWRng==","signatures":[{"sig":"MEQCIE2MCXU4NKcOvrWeX5mT+JM6hRP8uGYPR1fAea5fcBOTAiBJ+bbAyLLzJY4WUUvSS3egOFTx4B/0BaQTcf9gtNXg5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37238489},"engines":{"node":">=20.x"},"gitHead":"f115459818c0a89dec933505186948d7132deaee","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-9f613d3-202601270829.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-f115459-202601270830.0_1769502701076_0.508573611273589","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-f115459-202601271126.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-f115459-202601271126.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-f115459-202601271126.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bb7f99a134f0f2eeb3ba76bb4582a2509cd27fd4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-f115459-202601271126.0.tgz","fileCount":462,"integrity":"sha512-TL0IxJ2ROIkiDKUbFUbXGtGeIg3cE6F8VxujQjSn7qHAROZVoW6qjTDqz2DSSY8ueK4OlzBa/6BKqgZsqbdYkQ==","signatures":[{"sig":"MEUCIQDhqe5jHd6JYXI4nKtPu/BsLhltXQ5EUt9jWu6sY1pBawIgMwPZJ4ywni2aPok20qReBJrxz+TZPB4eZm6dquaav6g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37238489},"engines":{"node":">=20.x"},"gitHead":"f115459818c0a89dec933505186948d7132deaee","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-9f613d3-202601271126.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-f115459-202601271126.0_1769513296535_0.8752607515631536","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-f115459-202601271206.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-f115459-202601271206.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-f115459-202601271206.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9880719e40a6616cea3ba9f1f7445dc7bbc39b21","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-f115459-202601271206.0.tgz","fileCount":462,"integrity":"sha512-p53Zs6jQ7Vy/oV7kQW5iAIpCWLKSlzjVHmUB8ljKFdJO9Q2ElB9ydK6eB+gB6jLLsNtob1I7uathNlPTMom3xw==","signatures":[{"sig":"MEYCIQCzSQIhEQxj7Qzt1vW8xNDx2FGsJD1zCySlTi4xol6TjAIhAJ7QEN2hIfA/XjF+CY2SMDNnYTCzg/QumKWgr3r//+cG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37238489},"engines":{"node":">=20.x"},"gitHead":"f115459818c0a89dec933505186948d7132deaee","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-9f613d3-202601271206.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-f115459-202601271206.0_1769515715000_0.6900819895272887","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-f115459-202601271500.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-f115459-202601271500.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-f115459-202601271500.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b938e5344f87f4a5def3e7d09a8099ae19816683","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-f115459-202601271500.0.tgz","fileCount":462,"integrity":"sha512-ggNCZ2AVSthTZ4B1+4QOOLn07H2xXWtcFBMtrGAUITaKqWq8tfDOXBGOhqCeI7fHo9ZOFGkw42uL17cKflIYew==","signatures":[{"sig":"MEYCIQDOOOWyAHDgNbVOtwWnIDTD3cPZMakzLAratk9VsqiuzgIhAKte/bVOXWH3sIkLn5JrdiyEGqJzAJIBmvkcvxqFKonO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37238489},"engines":{"node":">=20.x"},"gitHead":"f115459818c0a89dec933505186948d7132deaee","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.1-9f613d3-202601271459.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-f115459-202601271500.0_1769526119459_0.2587158245268293","host":"s3://npm-registry-packages-npm-production"}},"2.26.1-f115459-202601271510.0":{"name":"@flowfuse/flowfuse","version":"2.26.1-f115459-202601271510.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1-f115459-202601271510.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d412681c79b75a72ea8c04dc7a6af561a94bb26f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1-f115459-202601271510.0.tgz","fileCount":462,"integrity":"sha512-z+bfCtZqGlUPJwpJwWUaTwBCT/kd9exzxGD9HkqeXvX2PmjdHxpF4APV16jf5XN74ulqiuEFpPiGorthVUohWA==","signatures":[{"sig":"MEYCIQCCwpXIhjVhzCehJ97GUIS3Wl32zdgL1ItrCUYOXTU1SAIhAJCYj37smlwzF3QV59waM4yj54o7+qBhI7FLwqX4n/6n","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37238489},"engines":{"node":">=20.x"},"gitHead":"f115459818c0a89dec933505186948d7132deaee","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.2-5637bb1-202601271510.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1-f115459-202601271510.0_1769526773092_0.7054090253211689","host":"s3://npm-registry-packages-npm-production"}},"2.26.1":{"name":"@flowfuse/flowfuse","version":"2.26.1","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.1","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4bcc69f961e86ea4ac4e2893e03de8a02fce54f1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.1.tgz","fileCount":462,"integrity":"sha512-SKkKOoz4hCu8xRedxo7yfHyLSFRZJOOcbAElK2i/cqbHg5MbkklUZPh0BBPktWGZUQH2j4ChxmDX3zoIyx9SKQ==","signatures":[{"sig":"MEQCIHMq1BU2RVZpGXpI4n4Td19hbKpHTBm2/a3U79bNdf1jAiAEMbArlZxeF90A3i40aBeLiTBvaBaR8ZKyK341Mkw4kQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37236711},"engines":{"node":">=20.x"},"gitHead":"c3fd0c657386050645196d670aa2bdfa8ca04043","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"^2.26.1","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.1_1769529190235_0.9040794394193323","host":"s3://npm-registry-packages-npm-production"}},"2.26.2-c3fd0c6-202601271628.0":{"name":"@flowfuse/flowfuse","version":"2.26.2-c3fd0c6-202601271628.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.2-c3fd0c6-202601271628.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d6f957fb3f241d838e2a3fd7af00a099f09495f2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.2-c3fd0c6-202601271628.0.tgz","fileCount":462,"integrity":"sha512-Z7kxwWZ5Ma6WgqtXlpZ5TnK02fcLAyjK2p8AGSKJfErIOBN1bLSI/t/qn7p9IvRb/XAV5D7zpUGEwFnMXnESQQ==","signatures":[{"sig":"MEQCIA0V+v/MkbT/BPRJnxI70kkRH/67efq19bLvA92J7+XeAiBO6btrlHBpUHA/Qe7qhisvW8rt1TIgECUugILGWokoRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37239892},"engines":{"node":">=20.x"},"gitHead":"c3fd0c657386050645196d670aa2bdfa8ca04043","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.2-5637bb1-202601271510.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.2-c3fd0c6-202601271628.0_1769531391970_0.45979826261513845","host":"s3://npm-registry-packages-npm-production"}},"2.26.2-c3fd0c6-202601271715.0":{"name":"@flowfuse/flowfuse","version":"2.26.2-c3fd0c6-202601271715.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.2-c3fd0c6-202601271715.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"381c4fdf16adef4c957d672f3b82cbe9cdd90c98","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.2-c3fd0c6-202601271715.0.tgz","fileCount":462,"integrity":"sha512-/zv8tqXsx1xn9WjQ0m5DKqzbbg/LMN2UFGrPAVyIOdDEdGaYFP73VwgZ+yir/c0/wUMBqXLKv3VDcoP1e8g7yQ==","signatures":[{"sig":"MEQCIBk+qhQ/6tO8rI16IteCaIsG0PCO/57PIT+AVw9Ul1vfAiAPrkqXgJCIE3RG8z2wtDQdwumTBjjpSVD3LREVEynG7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37239892},"engines":{"node":">=20.x"},"gitHead":"c3fd0c657386050645196d670aa2bdfa8ca04043","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.2-5637bb1-202601271715.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.2-c3fd0c6-202601271715.0_1769534239354_0.3497563752693815","host":"s3://npm-registry-packages-npm-production"}},"2.26.2-4354050-202601280950.0":{"name":"@flowfuse/flowfuse","version":"2.26.2-4354050-202601280950.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.2-4354050-202601280950.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"946b3815ddb740b98b560fc03d1a9ad7e98981a3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.2-4354050-202601280950.0.tgz","fileCount":462,"integrity":"sha512-1m/yOO5yGSy80g/Cgy8T7xjsr6O/tNHZnVm1Ma2973mhfuQJ2cnRUovfXrDasnuj+HRnkQj01e9wClnpvz00xg==","signatures":[{"sig":"MEUCIQCSCrnV7PGTSvt/EahR9JNtfXFKekgDU2uuMqo/8FIl8QIgN5OWx70HudWuNxNEEIwvetPqO9HayZ7k5gwLkDI4rd8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37239892},"engines":{"node":">=20.x"},"gitHead":"4354050d112a7aafcbd82e455e9b85e4c2dc776c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.2-5637bb1-202601271715.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.2-4354050-202601280950.0_1769593954823_0.9398674743812385","host":"s3://npm-registry-packages-npm-production"}},"2.26.2-3018a61-202601280958.0":{"name":"@flowfuse/flowfuse","version":"2.26.2-3018a61-202601280958.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.2-3018a61-202601280958.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"96e3efd8bb107010d68329492528e82a8b4ecc6e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.2-3018a61-202601280958.0.tgz","fileCount":462,"integrity":"sha512-DSggmj0ZA3l68EkRNJPIJ2DKhmRQDXIMXen1vwAZ4tyoATZVaMn5SW4iUJSM7edkZBaQ7eVNUAxJq+1zpqcYsw==","signatures":[{"sig":"MEQCIHu8JHM2rFRR7Cp7VNzaJEpPOdJ3zr+NaQgp335FVrsfAiB4+zdu4QEeKN4pav2Tc0swYMRHE6Cn9k4HVr1J+z4pEg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37239892},"engines":{"node":">=20.x"},"gitHead":"3018a613cfde9122aa5f5b51da632922834f1e42","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"hardillb","email":"hardillb@gmail.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.2-5637bb1-202601280957.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.2-3018a61-202601280958.0_1769594394693_0.5634412482888571","host":"s3://npm-registry-packages-npm-production"}},"2.26.2-4bef29b-202601281431.0":{"name":"@flowfuse/flowfuse","version":"2.26.2-4bef29b-202601281431.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.2-4bef29b-202601281431.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0341567a2b73b48d19fa766d96647e7d7fcab838","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.2-4bef29b-202601281431.0.tgz","fileCount":462,"integrity":"sha512-OxQ40W4QX+aNxWGdoilln1O1F/uGKEnPLTNLvoLZj7Iw4Ojd7Z9BavB8OEIUDwB6Zq9i/g8Dc2u+5fbV5QznPQ==","signatures":[{"sig":"MEUCIQDV636pHafOBCywOiRXBNdH44t1uF+ZUkCNUK97xhcEigIgch2+HhncCWLIA7RKxKllrtlY8mTNgUGI0XoTLaawi7g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37240314},"engines":{"node":">=20.x"},"gitHead":"4bef29b3b4b6789f4a5e17766709f1f25f7bfc4e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.2-5637bb1-202601280957.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.2-4bef29b-202601281431.0_1769610796967_0.5787556472172632","host":"s3://npm-registry-packages-npm-production"}},"2.26.2-4bef29b-202601282126.0":{"name":"@flowfuse/flowfuse","version":"2.26.2-4bef29b-202601282126.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.2-4bef29b-202601282126.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3bba31ada7eddf636f3087724325d78401445279","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.2-4bef29b-202601282126.0.tgz","fileCount":462,"integrity":"sha512-067NYOMmCWaNBCVQf3yrTWNNK+xh0k47lHrSYgeD5wLeyMFFNztn6JfXkSyE9coPeXBaEPwZPH/WnAGzC6+r6g==","signatures":[{"sig":"MEUCIDREz6UauuUhDKFgO/GbxJ3Enpavnh6GHFKQe8Z4vSn7AiEAp65U8FpwqIqcRD8cqYO1fkPsS8gReeDMOQiAqgyLoIA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37240314},"engines":{"node":">=20.x"},"gitHead":"4bef29b3b4b6789f4a5e17766709f1f25f7bfc4e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.2-5637bb1-202601282125.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.2-4bef29b-202601282126.0_1769635665433_0.772443996815459","host":"s3://npm-registry-packages-npm-production"}},"2.26.2-1fbb1cc-202601291307.0":{"name":"@flowfuse/flowfuse","version":"2.26.2-1fbb1cc-202601291307.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.2-1fbb1cc-202601291307.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c6eebc12fa884a5b4d633df13a844d129de7c852","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.2-1fbb1cc-202601291307.0.tgz","fileCount":462,"integrity":"sha512-2MZRl+GxHmb1zD+xhjJ35MxPVHgH0DbTKVROhzbV+XyQvEQ3jfEAjIK0B3EZQoQZ0AtyeRkUEynUKFWi0ZChwg==","signatures":[{"sig":"MEYCIQCStvYaLyUN5dor32UELu9NOcmmjQLqszydekXaCh2FiAIhAPQVsySd5whrbeY+8uI3TDEf2bR9wFW7OdKBPG7W65mn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37240796},"engines":{"node":">=20.x"},"gitHead":"1fbb1cc5858990260c09615d4e6f2a41f11550aa","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.2-5637bb1-202601282125.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.2-1fbb1cc-202601291307.0_1769692155659_0.66333200596509","host":"s3://npm-registry-packages-npm-production"}},"2.26.2-2ea0263-202601301052.0":{"name":"@flowfuse/flowfuse","version":"2.26.2-2ea0263-202601301052.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.2-2ea0263-202601301052.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8fa5ce9451800211ac26230aef25cba60d3e89c7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.2-2ea0263-202601301052.0.tgz","fileCount":462,"integrity":"sha512-hP0pao94pqdzDZwKpNCA4oZTJtq2BOQ/OklzxxmUi98Uoam8vS8JD8Js122tPVywSuhvGsAwl1BfZrv4iduvQw==","signatures":[{"sig":"MEUCIHs4KWMQK4SKJJfOuhTZY64XQTH3dAtIuEVhkkZFOdP+AiEAgcyEE/XoK7/kVtxvM0A77FdOpzS41Y9ROkwCtJN1wCw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37253363},"engines":{"node":">=20.x"},"gitHead":"2ea0263d3ef1387b1eb674908efce283941a2bcd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.2-5637bb1-202601282125.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.2-2ea0263-202601301052.0_1769770467218_0.9830417112435519","host":"s3://npm-registry-packages-npm-production"}},"2.26.2-7b033e1-202601301121.0":{"name":"@flowfuse/flowfuse","version":"2.26.2-7b033e1-202601301121.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.2-7b033e1-202601301121.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e6809b2c6f8858a7ff4ad2c74e43b9e6209d2bd2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.2-7b033e1-202601301121.0.tgz","fileCount":462,"integrity":"sha512-t8VTfEdaDydd2IX78Dw/4YBUS7ROxq7h0P7doxuz7HdbFmhyS8ogpRo2XlEyIZPe+peqDos8lKgDCBwCRwixpw==","signatures":[{"sig":"MEUCIQDmEMZR9ywaa8k/FqQfq/cr+jLao2sN3wDfiwCVvQgr5wIgGAw/CLo0z+a1eSZM5Lc3fsQVZ34VnatBbTeP+JQ4WYg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37253363},"engines":{"node":">=20.x"},"gitHead":"7b033e1da509da8d606b7c03878baa17372ce889","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.2-5637bb1-202601282125.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.2-7b033e1-202601301121.0_1769772219322_0.0035937373195742417","host":"s3://npm-registry-packages-npm-production"}},"2.26.2-7b033e1-202601301151.0":{"name":"@flowfuse/flowfuse","version":"2.26.2-7b033e1-202601301151.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.2-7b033e1-202601301151.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"73beabcdcd7e042714b4e0b8c515262ac58d84d9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.2-7b033e1-202601301151.0.tgz","fileCount":462,"integrity":"sha512-abmu0PV8eYgbvcSy2sRM6UzGLdFAw6LkuPJhv+1/rHqclnxZTrX9oUKtpGAEAwM598drshZYGASUA1cBSmiGHw==","signatures":[{"sig":"MEUCIGLrHH7HvFME4uJc7LiCY4oVy6rfcDF04T1ch4jbGYmtAiEAiha680hXBhF1aR7+tlD/58gcQzlp3kHr+V/kpYrhuCk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37253363},"engines":{"node":">=20.x"},"gitHead":"7b033e1da509da8d606b7c03878baa17372ce889","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.2-5637bb1-202601301151.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.2-7b033e1-202601301151.0_1769774001564_0.7768292153224017","host":"s3://npm-registry-packages-npm-production"}},"2.26.2-7b033e1-202601301155.0":{"name":"@flowfuse/flowfuse","version":"2.26.2-7b033e1-202601301155.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.2-7b033e1-202601301155.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6891e0628892eea5623dab7c825b1bb12c6ed711","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.2-7b033e1-202601301155.0.tgz","fileCount":462,"integrity":"sha512-ss+C7U7WTAVWrJ4+sJjiACG8YalvhE0viq5CIZzjW+JM84u2KXw/jCXDimILcGiTqBka5RlozIfrAypiYsU5uQ==","signatures":[{"sig":"MEYCIQDdzzCjS3LMp/it2RtSkGboP+5jMxyHU33Y7y0mx+DG+QIhAOAqD3muZQdsu3rGw0nUw0SkwC7gos4vLRhi/DG/Kdw8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37253363},"engines":{"node":">=20.x"},"gitHead":"7b033e1da509da8d606b7c03878baa17372ce889","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.2-67bf770-202601301154.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.2-7b033e1-202601301155.0_1769774226312_0.6083738484755676","host":"s3://npm-registry-packages-npm-production"}},"2.26.2-6cf8629-202601301225.0":{"name":"@flowfuse/flowfuse","version":"2.26.2-6cf8629-202601301225.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.2-6cf8629-202601301225.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2d823bcae705b8dbbb03b4d873cdb04da3b7ae2a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.2-6cf8629-202601301225.0.tgz","fileCount":462,"integrity":"sha512-GS1bDtqZGZhJc8PntROzvhg29BBIol05m9K/6zN336rTkX6q2ti10JWwswi4EzgkV6biTDJ8Y4P4Mdgvptq9yQ==","signatures":[{"sig":"MEUCIQCay3NkTv6iUFmKqZRHkpAArA9d3FcNMeGUuupXJV7ALQIgKQY9rXndNaIj9t8fqRPDAjB0e0UmErUVOKLBOJAD3yI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37356145},"engines":{"node":">=20.x"},"gitHead":"6cf86293c05c264ad5b100b448c18c5a1864fa7f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.2-67bf770-202601301224.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.2-6cf8629-202601301225.0_1769776013703_0.024839243718805193","host":"s3://npm-registry-packages-npm-production"}},"2.26.2-d333c23-202601301422.0":{"name":"@flowfuse/flowfuse","version":"2.26.2-d333c23-202601301422.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.2-d333c23-202601301422.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d5eac614a46d8411f3bf76d08b885a8a2c170069","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.2-d333c23-202601301422.0.tgz","fileCount":462,"integrity":"sha512-XS36FPirVaaMP/nrM+YAIO2ba2jcPLc3IS1ZwiUpITu+8lcisY9jV7gTP6Ajmi9yn4aLIh4lHkOe834ZHmo3Hg==","signatures":[{"sig":"MEYCIQCg3yWgkxaONXOJ98qjb4WdMMpIjdisxm4rujb36dkC0gIhANA9+HKwN5EX4fcrJreVkEAyTJ2AYLHhVJVzCdIBaKmV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37356145},"engines":{"node":">=20.x"},"gitHead":"d333c2363136722bd9c4b065d544aca318faf76c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.2-12815c8-202601301422.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.2-d333c23-202601301422.0_1769783081181_0.5360533251340269","host":"s3://npm-registry-packages-npm-production"}},"2.26.2-4164996-202601301714.0":{"name":"@flowfuse/flowfuse","version":"2.26.2-4164996-202601301714.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.2-4164996-202601301714.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"de84c596601f90adaf70e906f24398543d9d0b11","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.2-4164996-202601301714.0.tgz","fileCount":462,"integrity":"sha512-2VGwvKVJgRFPxEV/kIUfMRGpi7Kb4KiJRGRRqpfLnUX+BDudO2iB3/iYZDwJI2ozVyZdjgm3VGxsndyBIX41KQ==","signatures":[{"sig":"MEUCICP5r0KoP7d4irRc0q2X0HkuInIhZFiAtDHF1A/qDcACAiEApYbplgmi757FRy5WN7ZCvqpWtj55IL6dqfnId+71e38=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37358633},"engines":{"node":">=20.x"},"gitHead":"41649969fd9197c37332f9dc4bee2991d954c9b8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.2-12815c8-202601301422.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.2-4164996-202601301714.0_1769793363354_0.622514460027271","host":"s3://npm-registry-packages-npm-production"}},"2.26.2-c5410a0-202601301742.0":{"name":"@flowfuse/flowfuse","version":"2.26.2-c5410a0-202601301742.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.2-c5410a0-202601301742.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4f6eeb49f3072474aeb0a581799827db25ae2ebe","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.2-c5410a0-202601301742.0.tgz","fileCount":462,"integrity":"sha512-S2mO7NV8EcUC5k/4R+3+RocnLhqR1ovHmbRJQwWu5NxdEiXmvIb/9eAnerIHOHiSBwDCxS4GnREgpxc79mid5g==","signatures":[{"sig":"MEQCIAj1pWcmFzQSUhmzxl/h/AtXxhrh42svRA+kiFBk9C6TAiAdZAfWOU4+Uy/uTjDAs7Wp01hzgBQ7cUUv4udnbmCS9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37369422},"engines":{"node":">=20.x"},"gitHead":"c5410a0217dad19458571a613cd19026fcea6402","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.2-12815c8-202601301422.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.2-c5410a0-202601301742.0_1769795058350_0.6598134411137819","host":"s3://npm-registry-packages-npm-production"}},"2.26.2-baa804d-202602021408.0":{"name":"@flowfuse/flowfuse","version":"2.26.2-baa804d-202602021408.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.2-baa804d-202602021408.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f05afaf19aed7f94a1dcd3e4ffb3350a37f9ad2f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.2-baa804d-202602021408.0.tgz","fileCount":462,"integrity":"sha512-KA5ucFVGonrfWpMT+tsaYYXhh8gS+0d35dXpFQWMuQsdSnrvSdZMLtUVdl7TbvtG6KVYBGCSrT4lomuXs/hb+w==","signatures":[{"sig":"MEQCIC47Ab2+dun5fQ6wKbnayAeaVHeNeKWCrZm0eK4C9a+zAiANHNUQUmiqDsVoGcU9E3FMVoaM3bdIMU/k1TJJFaGi7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37369422},"engines":{"node":">=20.x"},"gitHead":"baa804df9d2954b23547035a8b24fcb3fa62d24a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.2-d0b6aec-202602021407.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.2-baa804d-202602021408.0_1770041402212_0.4404733351131258","host":"s3://npm-registry-packages-npm-production"}},"2.26.2-baa804d-202602021410.0":{"name":"@flowfuse/flowfuse","version":"2.26.2-baa804d-202602021410.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.2-baa804d-202602021410.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5c098ed1b202a4bfd7cc4b7c3e9c4dbf7ad847a7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.2-baa804d-202602021410.0.tgz","fileCount":462,"integrity":"sha512-oaBsFUrPRuR18eXttIqhURRtJs9wXwB4H6bHUg9FNSF9TZm2jtnXwQ/zTa3/LFX3C/QvTbWBp2YnrU/LHZHrIQ==","signatures":[{"sig":"MEUCIQDjUCB/Aj7M1/I7bxrBfi4mVEQ4iBhlq7oSLx8Cj4hPZQIgeUwMOfyZE6THqyQEgj2UGvAeDMdip2EGgFhXFbBESkc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37369422},"engines":{"node":">=20.x"},"gitHead":"baa804df9d2954b23547035a8b24fcb3fa62d24a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.2-d0b6aec-202602021410.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.2-baa804d-202602021410.0_1770041537137_0.08138847447710784","host":"s3://npm-registry-packages-npm-production"}},"2.26.2-e25beb5-202602031029.0":{"name":"@flowfuse/flowfuse","version":"2.26.2-e25beb5-202602031029.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.2-e25beb5-202602031029.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0d01ec64e546518bba3ca6ef50b1d18d6a3f90b1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.2-e25beb5-202602031029.0.tgz","fileCount":462,"integrity":"sha512-k8HdGY0F6dyHaneKsjjSv9Eskz94u9lBpHxo5V6xAzfxCJ1T3k+0o0Ij/TaKwTZhAnvKATr0Ekl0kqscTbCx9g==","signatures":[{"sig":"MEUCIH30Q9xud+Vh6sMgX+4LMjT1td1Ca/FDFRaPzznJvTq/AiEA6nP8nDNQO8oJt1NCh4lpefgX17BDGcyfhlzABhpN0co=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37369422},"engines":{"node":">=20.x"},"gitHead":"e25beb578c780382a109c517c6c08bbceb044013","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-31a7578-202602031029.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.2-e25beb5-202602031029.0_1770114697039_0.9711208756510967","host":"s3://npm-registry-packages-npm-production"}},"2.26.2":{"name":"@flowfuse/flowfuse","version":"2.26.2","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.2","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"df54d63bc93c88effabcc67ba5d023c937cb04e2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.2.tgz","fileCount":462,"integrity":"sha512-76VwnbXumZA50u2SOfvhSyEhvLrQuEs9bUPq1bFhKTo4FcWdwh+X+/Hb4t3atP4AyCJDcfunvbb37i6/etqmNw==","signatures":[{"sig":"MEQCIFF0iaK0gfCuXEjtq+6pFFxHmrZ+4Qck0xpP7c5OneFSAiAPJNSJIhZm2wKck7kutRPrtgygE9aY996+TcoQgyMuDw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37367820},"engines":{"node":">=20.x"},"gitHead":"9b9c17a79203b220205f6f30695cc8990ffb22b4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"^2.26.2","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.2_1770115003570_0.0965295298161799","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-9b9c17a-202602031049.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-9b9c17a-202602031049.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-9b9c17a-202602031049.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0df20d2b2f3494872186f1761455fc86733f37e9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-9b9c17a-202602031049.0.tgz","fileCount":462,"integrity":"sha512-EqrGLIpNwxZjjlj3QGCAjRXbsIyZFhXHs2jnTV44DXqZkj+pxIdY0/9ktTWmkMJD4Rj2q+9ryAjz7KZLQTFT0Q==","signatures":[{"sig":"MEUCICO9BUUwpHs5l/svZj3OM0S8W4K2q+f1TQn/zTAlHJU1AiEAzIkdFbEi2ElGHymR2QNFgspY0fYYMk7YOXitQkftfy4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37371001},"engines":{"node":">=20.x"},"gitHead":"9b9c17a79203b220205f6f30695cc8990ffb22b4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-31a7578-202602031029.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-9b9c17a-202602031049.0_1770115881104_0.46076829017238086","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-9b9c17a-202602031102.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-9b9c17a-202602031102.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-9b9c17a-202602031102.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"736822369d18a464d7bca51546f7a4e0ec9569f3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-9b9c17a-202602031102.0.tgz","fileCount":462,"integrity":"sha512-RDJblQ5Q+Ua0tP15ir4Krvis8959MLwYIrDu6ETg/161lQ82v1EPoiLLiD/cSKFq9LZVjZddAYpmJpEimnjg8g==","signatures":[{"sig":"MEYCIQCl5EPYm5EI6wWilzZZriu3TmX6PFfsmscqjvskBLuAogIhAJFwfsydpLpjhMm1MRnF0xSdhGt7QF4pNpRfzJE2IYuH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37371001},"engines":{"node":">=20.x"},"gitHead":"9b9c17a79203b220205f6f30695cc8990ffb22b4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-fde449b-202602031101.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-9b9c17a-202602031102.0_1770116660299_0.25263941059544903","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-3adbd93-202602031138.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-3adbd93-202602031138.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-3adbd93-202602031138.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a93aefd6a1241e23d222f2f4e6103a197e550e29","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-3adbd93-202602031138.0.tgz","fileCount":462,"integrity":"sha512-1p8RQydyJcKbszWXSRPx6MX2No/D4nsMoZqX77HKcyrK9fhzkptsr3XyVT2GSZKmtpEAJxkG7Ow7quZ4duoHpA==","signatures":[{"sig":"MEYCIQCvRzTWqMvyeG1uEydyfvAs9Vaf38Up1tEeoCS5Sdt5GQIhAIHVQ1Mq7WfQvVWL4ffbQ6ugDr5Mn7gUOrtjFgwEIjbO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37371429},"engines":{"node":">=20.x"},"gitHead":"3adbd93b80730c717d46ada9b1b2741e3fd7d2ba","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-fde449b-202602031101.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-3adbd93-202602031138.0_1770118791124_0.9115316242455438","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-3adbd93-202602031412.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-3adbd93-202602031412.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-3adbd93-202602031412.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"035a9cb253fd8a1e08737a328c520608f9c2ef75","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-3adbd93-202602031412.0.tgz","fileCount":462,"integrity":"sha512-bCGpf88vBsZTrVGfwY1XQzKO813Ei13+drY4fsR01ThT44MQ9rrHaH9LMOxwefT0whSVgMv+PdXpFFCn0+nkyg==","signatures":[{"sig":"MEQCIFZ43HtL96a+fky690UR1PbxFeMhZ4xg+p7Pn1IKP4dKAiBRkiDcSWoR2g5qULD9vxAeVvPMqyqgTL8vR1uHy6S/MA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37371429},"engines":{"node":">=20.x"},"gitHead":"3adbd93b80730c717d46ada9b1b2741e3fd7d2ba","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-fde449b-202602031412.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-3adbd93-202602031412.0_1770128059972_0.8583075881144571","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-67afc3b-202602041709.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-67afc3b-202602041709.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-67afc3b-202602041709.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ead56062373b6576c3b1784597865ba2a0b3eaf0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-67afc3b-202602041709.0.tgz","fileCount":462,"integrity":"sha512-1ZqTc6JmdcHfbYn4cU1LMVsSkE1Ix/6XLCZ55o/pL5l6h3xUFLTx4KM1/vqepe3w3+XgNCYJDbTJfAwoDYsdRQ==","signatures":[{"sig":"MEYCIQDBm76YgI9hUV7r4a/jNOi7PhiNEmJXGHHqNXT2tUMo6QIhAISh3ZTMRouRK/eY0alsqmdzzBDiAXiQMzNCyRNs8Bn+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37371429},"engines":{"node":">=20.x"},"gitHead":"67afc3b35af44b14fc1202ae19a6429747950de3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-fde449b-202602031412.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-67afc3b-202602041709.0_1770225060720_0.13165633163794177","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-0612860-202602050945.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-0612860-202602050945.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-0612860-202602050945.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f57e06581e93b3a2ea0d46ea78788dd2ad56d381","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-0612860-202602050945.0.tgz","fileCount":462,"integrity":"sha512-UvuQbNfhWxtowJzGYSIDLMz1aOKcwqbeWLVMdZB3+0gi68ZlzcV4hmGNA3EnEwHv72wSTUzy1lN0fImqu00Meg==","signatures":[{"sig":"MEUCIQC8ZZMUPF/JNoh4+w4O8j6LLyQwO8/1IT53qgjonMS8KwIgByeTrX3Ksqi+F4JI7TblN4wlHzubZ6HLnC3Gu/httnw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37371429},"engines":{"node":">=20.x"},"gitHead":"06128603846fa834fa70033d6d73fb7d5490ea26","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-fde449b-202602050945.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-0612860-202602050945.0_1770284868253_0.9619905933873154","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-b467299-202602051213.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-b467299-202602051213.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-b467299-202602051213.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8802adaef8aae8cff902c4921f2119179a835360","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-b467299-202602051213.0.tgz","fileCount":462,"integrity":"sha512-+J88ojtexcgiM2EzPM2mjVfyU5Jtq8phAvL5m8Y5Ak1fybmUYuw4QccrS25+lryKYU+RtU9DW6LD6JZJ5WL5pg==","signatures":[{"sig":"MEQCIEzBMaAhzIpVFTsiOpIT1SQL0AkpzvhIUMZ+FJFf+3lWAiBBLvDqm4+5Q3Etrup9/yoyFkHDykLdzlsqs9qvtgpgvA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37358337},"engines":{"node":">=20.x"},"gitHead":"b467299fd41d5cf62b4236ebb4e476ba969983bb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-fde449b-202602050945.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-b467299-202602051213.0_1770293696783_0.8311063551588194","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-b467299-202602051226.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-b467299-202602051226.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-b467299-202602051226.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"083d34adbd84e59b3bf14db947719f1e9641e861","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-b467299-202602051226.0.tgz","fileCount":462,"integrity":"sha512-6VDNTPtql3fydvdVxTzGnt1Q8GDBw1D+YzDilacW7Ot4xHoaHLDViBsGYAEt3cj4AYyl6qdo48h/07fyZ0FwxA==","signatures":[{"sig":"MEQCIHBSeioWaK5PtTfytaheLhx1aI5M0FhR8rG7ZuD3M9jUAiANoeJBkRMOcpOgJgf5hS53Uv9hDUYgN8Ku/iPTZazlXw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37358337},"engines":{"node":">=20.x"},"gitHead":"b467299fd41d5cf62b4236ebb4e476ba969983bb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-fde449b-202602050945.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-b467299-202602051226.0_1770294508671_0.5075646139047107","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-5b664d8-202602051242.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-5b664d8-202602051242.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-5b664d8-202602051242.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"091affea51bf5e9f1579ee67799b491fe8b3ce3f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-5b664d8-202602051242.0.tgz","fileCount":462,"integrity":"sha512-EaPpWRUVF8bqGHKtH5ykUMR3we5Uxj7FLpQaweiSNoTamNxHjSABK4KjRkba1SrFHV0lWVjfLocwIYaGVGLhvA==","signatures":[{"sig":"MEUCIQDJx1sJ3xtZH1daj4g7uEnvpnKqqCBWQ03rhVpdOSIGnAIgFPOLkwJx4obRe9UtN5IhnQ1LnJ3twZ6MmG6pSe5dIBE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37358954},"engines":{"node":">=20.x"},"gitHead":"5b664d8ff05cb81c729fe830e57685fc4575621c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-fde449b-202602050945.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-5b664d8-202602051242.0_1770295452392_0.6376054013412018","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-7ed08a3-202602051507.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-7ed08a3-202602051507.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-7ed08a3-202602051507.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"00ab833e4d5702090d299d961109206504c51b50","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-7ed08a3-202602051507.0.tgz","fileCount":462,"integrity":"sha512-TAZdDIe+6LFLHfDg3Tis5WE+CK2KcIPflngliEo3zWYQye2OfkMYe/Dk6ws6P92HBRGrEmXP0ez9QT+vZG3P1w==","signatures":[{"sig":"MEQCIC9FPD6DnBA3b8HsOiuE/AdCVdcWXC1308BmaLLjcU+KAiBv1dIIaUZtDxqHjJasGEdwuUa3fpVeJ/gurrFGq+KU9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37347017},"engines":{"node":">=20.x"},"gitHead":"7ed08a310eeb2cb9297610a63be81f313a3eb2c6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-fde449b-202602051507.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-7ed08a3-202602051507.0_1770304164382_0.9887371066864645","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-7ed08a3-202602051519.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-7ed08a3-202602051519.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-7ed08a3-202602051519.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ca23b76307c52f2cbf614b6b85798bdb11352d4c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-7ed08a3-202602051519.0.tgz","fileCount":462,"integrity":"sha512-DCicNUCP445+mxrHn5rip4U3ewZE/p3/5CV+hLyQrrPGWXCNc5tNiyjh7Iwj4Tlb+3qlXY2bSLCtLf967f3WAQ==","signatures":[{"sig":"MEUCICO4iy3P3JqdeTzvWzOwnLwv8R3Z2ZSU4C0sZpn3KkDmAiEAlk+j0a0/dA9CufGKs/4Ty4TWLIFB0CLXg844cg7vbGg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37347017},"engines":{"node":">=20.x"},"gitHead":"7ed08a310eeb2cb9297610a63be81f313a3eb2c6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-fde449b-202602051507.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-7ed08a3-202602051519.0_1770304896146_0.7507384486875168","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-4341675-202602051559.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-4341675-202602051559.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-4341675-202602051559.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"06eaad09b924efa87043760149c70ff78f91513d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-4341675-202602051559.0.tgz","fileCount":462,"integrity":"sha512-AvKVvFGmja/e9btJgX26wysrcHORYiY+w0WlYlC3ti85HeC9BRACMuzV8+Um8MCvXejm5UP0Yp+Iqw0gy03bdg==","signatures":[{"sig":"MEQCIH4+2vYt2zTkUbq+Emi4i/WbJdP3JC6oBucuvOBP+GEXAiBjzSdhWCqvJscOQypWnQ8DIWDS0Z5f5NONf23jFCMUDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37377636},"engines":{"node":">=20.x"},"gitHead":"4341675dccadcbf303eb00e770a7df638f9df270","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-fde449b-202602051507.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-4341675-202602051559.0_1770307279655_0.2933243688881042","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-49957b6-202602061416.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-49957b6-202602061416.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-49957b6-202602061416.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"436bac423d2c6f75c4fdba9223362a3886461d5c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-49957b6-202602061416.0.tgz","fileCount":462,"integrity":"sha512-G7buKDhmFSJ8cmeZhMMIba7C/+zo5UH80jH7DRr5hhA8YIrmzLUXMuer6Juil+9uSVkuvbUtAUCqoUiuWNVTeQ==","signatures":[{"sig":"MEUCIQD1l7LALQ9rfjQE3QCoAQWSqIhrQ92FWxpOJv0wMuNu3QIgHw1tAqvCsEn8cH2i2MFPln++v88RTbBZgxfEuL+cqjo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37405301},"engines":{"node":">=20.x"},"gitHead":"49957b611192fadd242268758b85251cf5b26348","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-fde449b-202602051507.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-49957b6-202602061416.0_1770387522419_0.8032283740224535","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-e788779-202602061843.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-e788779-202602061843.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-e788779-202602061843.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"792bda8ba32c444439aaeb6958f29d90b2adfdee","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-e788779-202602061843.0.tgz","fileCount":462,"integrity":"sha512-0zkjPRPO3+2QzSdRuEsRCGqP7jtX+gBJTRupblC2VtCICa2zINqCcL51Ed6BWGmbFXtYWQS4brXvRa6Pe4L74g==","signatures":[{"sig":"MEYCIQDQCIz3lAej3wz5wziAClJGmCYy36PeuwmxQESyiW3NAQIhAKuQDqeULzBboGSmkVikciYF2KVwLQYe6cFGakNusp+u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37427269},"engines":{"node":">=20.x"},"gitHead":"e788779f6310ab04b6180008b3efd887e2fa6c46","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-fde449b-202602051507.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-e788779-202602061843.0_1770403524339_0.9736087529060513","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-e788779-202602090640.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-e788779-202602090640.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-e788779-202602090640.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"518eef4414c00f59a0c0cf4df56cb425dac804ca","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-e788779-202602090640.0.tgz","fileCount":462,"integrity":"sha512-QWdxafQERJ+KqY4L2eXsUQ15xBh8ppgOqLVdL8tx9cxdgh+lHBdpVrykSDBP60a2UQOPqENMSi9a8wIT8/BBVw==","signatures":[{"sig":"MEYCIQCDXBeQyBWTfeFUygRhidb9ZgIhpFCVOO22teY09nC8RAIhAPXMdtsbjY1ovJEYMmoJkZ8vJW0U9D4VYDTsbsDpPDJH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37427269},"engines":{"node":">=20.x"},"gitHead":"e788779f6310ab04b6180008b3efd887e2fa6c46","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-fde449b-202602090640.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-e788779-202602090640.0_1770619342732_0.9889366860468902","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-c5d47e2-202602090933.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-c5d47e2-202602090933.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-c5d47e2-202602090933.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"00da44b04d7dda43dfcf3523311397f0f5f2296e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-c5d47e2-202602090933.0.tgz","fileCount":462,"integrity":"sha512-TUe6awVjMLarykuvdmDAFpI6d7BY2F51ZY6go/px1wDkTFD6hnLSlXYSTG8NVNMXLneo5pU2mgnln9ROiw/6eQ==","signatures":[{"sig":"MEUCIFtmdIbw8EuDu29m+YjxYhjfPCxyWxTtSFgxTPqZuJWjAiEAkTqtCOituA/E9iojstsLMIJeGv+MyrbfKElTgdZ6OiM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37427876},"engines":{"node":">=20.x"},"gitHead":"c5d47e29a5db45a091e58d46e4b862d2f8865eb2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-fde449b-202602090640.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-c5d47e2-202602090933.0_1770629692731_0.7795129264440535","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-cd8d1ab-202602091205.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-cd8d1ab-202602091205.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-cd8d1ab-202602091205.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5a020c88a0dadbd0375e5653e4ffa2f90f7fc90d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-cd8d1ab-202602091205.0.tgz","fileCount":462,"integrity":"sha512-wDY+xaGEgKbOdL17W9BVMsiYTnp33Iv3QqUWJfxAwT/bXIxz+HmRS7MOM28rRIHGdBOxCf6plhRxM7uTYN/1og==","signatures":[{"sig":"MEUCIF5jPFXFpRh6yH7d3NqzdCiRJ6n0t6Ng3K6kg+EJ+BIIAiEA6wkdWfmKEZ1nqISHxz6ZPWT0w7+mM4GOCqy7uFoTSxE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37422911},"engines":{"node":">=20.x"},"gitHead":"cd8d1ab0a73e1267b3818d5fd3587b3ad14059c9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-fde449b-202602090640.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-cd8d1ab-202602091205.0_1770638852281_0.11818655398760392","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-3f36079-202602091809.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-3f36079-202602091809.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-3f36079-202602091809.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ed6d74592ee611c7dd4b8bf7441c8409ee888da1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-3f36079-202602091809.0.tgz","fileCount":462,"integrity":"sha512-4J81k2rrVwmCVxVxtg9c9+xBaC6vJZ2gjKZhJGq9QSSUJe9gVu4jt2/YaMzZzGJKOCTxY4E9GeleX922K71DwA==","signatures":[{"sig":"MEUCIQDE/Gkvyfjao+7CRk4D5nWEQBYh59l3rmJDYjrmspgE/AIgbmQ1TgGdMvD0Tupx5dIUxmcKFvBKt/Ea7kruV6sJcRg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37422911},"engines":{"node":">=20.x"},"gitHead":"3f360794130fb00f6f73c5ccacccfad0cda95c0d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-fde449b-202602091808.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-3f36079-202602091809.0_1770660662430_0.6407666667603142","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-a4afe51-202602091816.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-a4afe51-202602091816.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-a4afe51-202602091816.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"eb3d29a706816edfce69ff9e41e937f5fecd0756","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-a4afe51-202602091816.0.tgz","fileCount":462,"integrity":"sha512-8FJ0U6n5Pr2NNXTTDxNU3BgsEuM6tdCe3qHya2CczhyqL3sbCIVnkGIDfTrCra9FpobI6tWtx3BUJvwk86tfQA==","signatures":[{"sig":"MEUCIQDm0fA6SzzSQjvDz+Z1PhjzNxY4ozyNk0igX8SW/R1WMAIgWTFFwqul7MjXkkJRbVBknOr3o3dCJy5gvqZqaaGP2nA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37422911},"engines":{"node":">=20.x"},"gitHead":"a4afe510aa1e830d981cbca24259a0f93ad87f91","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-858c6af-202602091816.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-a4afe51-202602091816.0_1770661104123_0.5613269458387133","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-a4afe51-202602100626.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-a4afe51-202602100626.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-a4afe51-202602100626.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d0e5c6036927329c06d3db639c1345e7af00935c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-a4afe51-202602100626.0.tgz","fileCount":462,"integrity":"sha512-zc0xIqG4tzokXxbrgmVmwWi7cBOu1mdBZUA2tisI+ffwHe4V+D9+K5lvEFPfdu/J5gtVRtRL1ZTuo4V/hG7gdw==","signatures":[{"sig":"MEUCID+JetQSMSgqg9++3yH1DsJaBGFaP8NUc9jseh4SwPySAiEArdB+b3sq6iajGCEJ9b8Eb+wN+bzcq9fHSFg0fyo9iXw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37422911},"engines":{"node":">=20.x"},"gitHead":"a4afe510aa1e830d981cbca24259a0f93ad87f91","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-858c6af-202602100626.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-a4afe51-202602100626.0_1770704919672_0.6629778939395572","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-b9f128f-202602100657.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-b9f128f-202602100657.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-b9f128f-202602100657.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cba9b37c3903b33a125354646e40ca50290ee237","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-b9f128f-202602100657.0.tgz","fileCount":462,"integrity":"sha512-s1Ud2PQCH7UZGULh0+zuSI8aJs9E7hgF2Pn1IdvXerd6CTEreFMZbICSKkvQhulWEzdTsy5GyDPfK1RBKn8F+Q==","signatures":[{"sig":"MEUCIQDUyuGdeSpy61QVGD42ehZTvrWbLcCAmky8qK04dyKBUAIgdVNulQ6O2XyaHhPN4tN5+tlowWsHv5mN9F6dyzgSPn8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37422911},"engines":{"node":">=20.x"},"gitHead":"b9f128fbd1ec381bf28384a9d30f8722cc0e4476","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-858c6af-202602100656.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-b9f128f-202602100657.0_1770706749665_0.24235883270428182","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-b9f128f-202602100659.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-b9f128f-202602100659.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-b9f128f-202602100659.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"076c6fe6d8fd935275ffd993fe13db61faff018a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-b9f128f-202602100659.0.tgz","fileCount":462,"integrity":"sha512-KXHXjxGmjMbLpmbUECFDlpjcqHNm8VWkkGHWIy/gWRB/xN1Ke5hGG3sghNP5YjGFsPeuTdQu6Yrf2Ro/zsQBpA==","signatures":[{"sig":"MEYCIQCUGSEuWSl14gVd9Fl5m+fXu+7dcVDDcv4qy7q2I7DlUAIhAM2b+5zT3iZZjgDNaVdHFhISlYOnnC6LJsShkshJv7Xg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37422911},"engines":{"node":">=20.x"},"gitHead":"b9f128fbd1ec381bf28384a9d30f8722cc0e4476","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-858c6af-202602100658.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-b9f128f-202602100659.0_1770706865704_0.7609586709742215","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-c909cfa-202602100950.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-c909cfa-202602100950.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-c909cfa-202602100950.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"aefb507fd06791a8e877ce38749e8cc65a9642fe","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-c909cfa-202602100950.0.tgz","fileCount":462,"integrity":"sha512-jDLYqjUEhBoRfbl21l6mvDKmqobHkj/prXyzciK10aVJ7hMpe/EkyOS90Ij0ACa6StpHLbGbFKBo7vBMBM/y8g==","signatures":[{"sig":"MEYCIQD0Lu2ufwElERYd0giJFS+sPJubSeAzEM5h8Lum3KsidwIhAOyX73Dww6W37MKN4yIlK2ga9lANhOL5aBa9DNsvf4Kf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37617614},"engines":{"node":">=20.x"},"gitHead":"c909cfa4cae39b86ad81f7910cd88fc49b16e32c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-858c6af-202602100658.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-c909cfa-202602100950.0_1770717101573_0.9530789211006125","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-caa8232-202602101019.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-caa8232-202602101019.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-caa8232-202602101019.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8722eff5d3efac25d3de38c8322bfe43b9044a78","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-caa8232-202602101019.0.tgz","fileCount":462,"integrity":"sha512-kO/ERxEd0PFKLn/pK+7VRmgiW2Apwgcn/h7iSLm5Gf9WLhrxNPCyENczelXQtL4ENhaEnJR5SsB6TNtp5xln2g==","signatures":[{"sig":"MEUCIQCfGW4w7ju2kXrltfcwQ1nxnsu0OzhjGUH6W4kkjbOg8gIgS9X9PkFoI7oFyxTB/Du0rgGCre8W8SKBU4yBMy5vNPc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37717711},"engines":{"node":">=20.x"},"gitHead":"caa82329a6b3d12989dd211096cb93dc2197c4ac","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-858c6af-202602100658.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-caa8232-202602101019.0_1770718885809_0.8891269482482604","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-ba2ffcc-202602101120.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-ba2ffcc-202602101120.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-ba2ffcc-202602101120.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5b50ac63297379fc36d838773ff632a434b368f2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-ba2ffcc-202602101120.0.tgz","fileCount":462,"integrity":"sha512-RM8QSTrlYoDIQriqXI5kLkiFlWHweI4JOljXUbKpGdP/MkiYvxZbuu1L2SpVYT0EUxrIs8VSerw1zTyRBogVhA==","signatures":[{"sig":"MEUCIQCXOi/odP91XUrmc3GEwggImom8aL/kawAXdsd/eNJ+cAIgbdUTWBIva8tOF7d4v5CemUGp+nXdrx+p+UOi2M98Cjo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37720472},"engines":{"node":">=20.x"},"gitHead":"ba2ffccd4aed3a8b1f613c745592583f8062a740","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-858c6af-202602100658.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-ba2ffcc-202602101120.0_1770722520649_0.26670419962185354","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-d45bbf7-202602101413.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-d45bbf7-202602101413.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-d45bbf7-202602101413.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2c7261113937b79754d83ffcb1627d9f50738914","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-d45bbf7-202602101413.0.tgz","fileCount":462,"integrity":"sha512-B5y/vKkmS8KCWJJz3Eo4N2do0poRfK8UC8jg9savzma8LcYbeVM9VMVHy29DT8Y95KBs3ae8KQHTHzsIQDacjw==","signatures":[{"sig":"MEYCIQDN7jZrOeXHResa2M0MjeFrvsjtVmtAbSUdg2Tr4y0C4AIhAPnHvG37aWjHUswk3sP0pTRz0IfO4ij1iRbb7lIuOTvQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37746574},"engines":{"node":">=20.x"},"gitHead":"d45bbf735abeb7b26a5e29cc66c29cb7d03bce34","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-858c6af-202602100658.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-d45bbf7-202602101413.0_1770732885531_0.06275821292270001","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-6f2187f-202602101518.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-6f2187f-202602101518.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-6f2187f-202602101518.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"59b51c9b078e250f206cb506238cf45820a7e2fd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-6f2187f-202602101518.0.tgz","fileCount":462,"integrity":"sha512-C7LKMx4Q48nAaa7NOmuBCwuDgcQ1ELj0spdbZGgT0wL2H/98DHSfDgaB+MPGFxcL8Jg0JWy8AwPybkI+yss+HQ==","signatures":[{"sig":"MEUCIHTjS6+FBDJu4VzQQjoOZZNJ6nooJd9nOboWJFq/N1ZCAiEApMtk1jQSlCsxq4bjaS6E5kashGtCONws4CaUrY/v2F8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37748811},"engines":{"node":">=20.x"},"gitHead":"6f2187f5c64e9688b4a05c9cf69337e992ba502d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-858c6af-202602100658.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-6f2187f-202602101518.0_1770736831624_0.6578450541349226","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-6f2187f-202602101633.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-6f2187f-202602101633.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-6f2187f-202602101633.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5da69b893bbd5fecf2770a0387702a59f2a88d32","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-6f2187f-202602101633.0.tgz","fileCount":462,"integrity":"sha512-aaBTwjKjA390WJujAqn2XKfhYoPHW7XUgrHhXPOCAE/tG/tdu/CqEaQ58Yvx5230xL6mk1RE2F158L3sdDDXqA==","signatures":[{"sig":"MEYCIQDNVRIQUU7wv4ch0HJGUfbOp/06tYBSN/2aLvOLVDSfwAIhAMLa+zf6R6FsVwkn3/vZMnIi0rL1W1wt+KchDnBFHfDS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37748811},"engines":{"node":">=20.x"},"gitHead":"6f2187f5c64e9688b4a05c9cf69337e992ba502d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-858c6af-202602101632.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-6f2187f-202602101633.0_1770741300791_0.3385860786713253","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-6f2187f-202602101646.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-6f2187f-202602101646.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-6f2187f-202602101646.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"71566a1f4356094bd1fc43f36046ca2fc377c7d8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-6f2187f-202602101646.0.tgz","fileCount":462,"integrity":"sha512-GVmRNP0Kk6DM0u7bJ1IkGdWMcHrpFiWzTWTXw+wRNhtPD24WGeQflttDMmlCMQiJJr/6/VnQ3qS+0UMFXjQbVw==","signatures":[{"sig":"MEYCIQDbdByQOWJ65OZIodSpAmubFsn9tNxc97UTXdioiBtb4wIhAISGjSF2TnqPd7tuQ2+jX0/W5mFf0hE68gKPQIsrtBqI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37748811},"engines":{"node":">=20.x"},"gitHead":"6f2187f5c64e9688b4a05c9cf69337e992ba502d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-858c6af-202602101646.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-6f2187f-202602101646.0_1770742105753_0.1294283962122429","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-6f2187f-202602101653.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-6f2187f-202602101653.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-6f2187f-202602101653.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7b54ae98770bbd6a9a6763931512f3df4313488b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-6f2187f-202602101653.0.tgz","fileCount":462,"integrity":"sha512-xIgNGkc45maTCAt/DBXo1+LAN1XzgoALTDpdagZG0tEru/EQjlNdEVBzfNze7Daf64Ys6bpHRtp/iJOmdDVM/g==","signatures":[{"sig":"MEUCIGFWrc0OqHJQcosFUL93Qtvnt5UhRGRRLV0s7KfSVC6hAiEAxgrcR5am8xdUe8xhfTzDUz2j6OdWqwEVMEWCKHmrKns=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37748811},"engines":{"node":">=20.x"},"gitHead":"6f2187f5c64e9688b4a05c9cf69337e992ba502d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-858c6af-202602101653.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-6f2187f-202602101653.0_1770742518806_0.33428299041451837","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-6f2187f-202602111004.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-6f2187f-202602111004.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-6f2187f-202602111004.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"53867394cd5a084f6bac2a03095c4e8acdfe238f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-6f2187f-202602111004.0.tgz","fileCount":462,"integrity":"sha512-aRMAzW7+YwrZPwvqVAaEs6btfO71/ZqjNbOpOABQ9DLJ+tk4w7MgLio+07MMVnlwGXC4irlQ1HBGrkVok9tXDw==","signatures":[{"sig":"MEYCIQCRk/DI6ILtPHg7Cs3KUUo7SyIYIMLtdLRZ5Bh9Tv835QIhALcW6z1j2CfPskNnX0moO1pJO2STx+JFQ//I41IsIbIP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37748811},"engines":{"node":">=20.x"},"gitHead":"6f2187f5c64e9688b4a05c9cf69337e992ba502d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-858c6af-202602111003.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-6f2187f-202602111004.0_1770804351613_0.6883197583780107","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-5965cc9-202602111039.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-5965cc9-202602111039.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-5965cc9-202602111039.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"aae215cac0a3c8536ff8528c063e0ec0c47ef5fc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-5965cc9-202602111039.0.tgz","fileCount":462,"integrity":"sha512-qIPuM+T5R6TkovfGBvWSv/VbJychFctdieP1NspeZl1uW3bMl9UeBfi/PWozp39bl00q11HR8UwKmoeD7d14Kw==","signatures":[{"sig":"MEUCIQDi4yHICd45yAgAv8z41B/SOMcSRpwVkOcQ7KO9/lTf8wIgByAbqshP8yqZ1UGqzRJJ1d/ZFZCtpwv1JUMB+FPjDKM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37749401},"engines":{"node":">=20.x"},"gitHead":"5965cc9598e68f4951e3c46bb97e4913c41444c7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-858c6af-202602111003.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-5965cc9-202602111039.0_1770806497296_0.6257242985975369","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-a4e7894-202602111405.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-a4e7894-202602111405.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-a4e7894-202602111405.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c621918c59db7e99c93320c645023a655912c25a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-a4e7894-202602111405.0.tgz","fileCount":462,"integrity":"sha512-2gXDHg57zntFqAksK8CmZPhyyohmQFodFEOzOu76FXVPfA8+/wP9YVo0U0U2XA9OYsQVC+hl4Q6yRA6mAqSmdA==","signatures":[{"sig":"MEUCIQDRfdSSDj1EWCxG79nO5A0VOGyxtySjw8BZjD79/8WDfwIget7TQFv7paUt5EZsUuTOSykfiX4ZKeG3tgIBAAEUeUo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37760654},"engines":{"node":">=20.x"},"gitHead":"a4e7894416f077445c8a04880fe60481125b6cc0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-858c6af-202602111003.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-a4e7894-202602111405.0_1770818853903_0.2214708651125583","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-a4e7894-202602121013.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-a4e7894-202602121013.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-a4e7894-202602121013.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5599a7cbb6e21f4039781cda07892912802a1eb8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-a4e7894-202602121013.0.tgz","fileCount":462,"integrity":"sha512-XAvBfNHqzOeY52naoWAN/SdkmBDSAPXj+ivteI8UHb5SJYhEoQyB/SUmgMwbT4262UCdNO/owQZ6kDiszvEyuA==","signatures":[{"sig":"MEUCIQC7svFcxt1YWoZ5+2vXuKTWZoGj1nk6mckmDkQReWKF6gIgEeoJnvk43B+j/zpd4jvOAEgGtQU7fIGb2mkvRKOI+x4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37760654},"engines":{"node":">=20.x"},"gitHead":"a4e7894416f077445c8a04880fe60481125b6cc0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-858c6af-202602121013.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-a4e7894-202602121013.0_1770891321708_0.7352619256112156","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-ec858ae-202602121028.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-ec858ae-202602121028.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-ec858ae-202602121028.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"70fbaa4194ca978e96dd97a89430b231ddcfb77f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-ec858ae-202602121028.0.tgz","fileCount":462,"integrity":"sha512-juF/tZeOSYKdHM4WBXU0cdTxRujflx/wv8ZTyqpJ6yX98KMJWHR5iPg7y3c7ang5MthsmX/uSuGaSbBAm9rTpA==","signatures":[{"sig":"MEUCIC/NpOgBHPS+NedRsXQWNW6277KjtMBBuqbi2HKTYQEBAiEAsGRVbb1PhMO1bokvqN9f/GmMidmj0xVe16xezU4PLZA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37758606},"engines":{"node":">=20.x"},"gitHead":"ec858ae253346f02c855375d6cb072f4498efc7f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-858c6af-202602121027.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-ec858ae-202602121028.0_1770892195890_0.21994965723682425","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-ec858ae-202602121036.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-ec858ae-202602121036.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-ec858ae-202602121036.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0ba276fe24af59aba10c404927f66b6d0d02d7d4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-ec858ae-202602121036.0.tgz","fileCount":462,"integrity":"sha512-YQ8EAPlchoiMYju+I6ko7eIETfscMSfBBys2c/p07F4WH3jOuSwEICziDnFdj1tT8Sf/DC6fS7KlbGqcU0VRyg==","signatures":[{"sig":"MEUCIBYGqEbVMWNzSTKEzuqOhl4VJKsPTzupX+ErZu6azCfMAiEAqEqVY4DjWwQaT5wFi8YGV3oby2YYtrvsDPkBKThMHYo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37758606},"engines":{"node":">=20.x"},"gitHead":"ec858ae253346f02c855375d6cb072f4498efc7f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-858c6af-202602121027.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-ec858ae-202602121036.0_1770892662743_0.9016023698824809","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-3caaf56-202602121050.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-3caaf56-202602121050.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-3caaf56-202602121050.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e72772eea8734882ef290ebc9e5ded0f2cdd7c59","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-3caaf56-202602121050.0.tgz","fileCount":462,"integrity":"sha512-3oM0448yE4hbaMKvQmX2iTC56CUPAWTSWrmSekTJp1XDoycEWlniWAsfm211KZG/JsCgULiBiIAT6sYZI5HyBQ==","signatures":[{"sig":"MEQCIHwlp2mrc5A5imXaCHZ2za1eKTFJR8NyWvQSqIeKYz6jAiAIRaWV/WgIRSbrN7JQSWSdnS9PtloY6pXNC/dBlwPC5w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37758730},"engines":{"node":">=20.x"},"gitHead":"3caaf562760152506660c5421f1342bfc6015e51","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-858c6af-202602121050.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-3caaf56-202602121050.0_1770893543059_0.04469836430673624","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-3caaf56-202602121100.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-3caaf56-202602121100.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-3caaf56-202602121100.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"75f686c1f857dc22262dac2d3ccc6378942cf10e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-3caaf56-202602121100.0.tgz","fileCount":462,"integrity":"sha512-H2CsiB9M8G2j7dgTDcSUPHpH55+7FvFdF+1rCeuI66kq9je7xWTTxxcurdmtX0uVJan9jqnGJqFFV/FQirUPDg==","signatures":[{"sig":"MEQCIDhoByRVeBFk0r0ZJ4BpeC7+21lKgqtY0uF4kdiR1pqEAiAXZWeJWrvBF1McN+He1TWT2YMdoB89UnGlQS0Z6pAzAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37758730},"engines":{"node":">=20.x"},"gitHead":"3caaf562760152506660c5421f1342bfc6015e51","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-858c6af-202602121050.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-3caaf56-202602121100.0_1770894111700_0.09313394318009993","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-3caaf56-202602121105.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-3caaf56-202602121105.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-3caaf56-202602121105.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3fa23d5342d51753cf662b16c86dc0c9ce6d93fb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-3caaf56-202602121105.0.tgz","fileCount":462,"integrity":"sha512-0wt4cYOKWfh/O/HRoF0y+cvxGyeNjU9uZc5MJNpHy4CBG1ryngCq/81zh4kQjlqYtVSVeeFAvpsIPoeRZUn77A==","signatures":[{"sig":"MEUCIQCUJzzOxbccN6hQyOoHoCLdjkIFvkVxBbyJZBb0eeA4tgIgc+5xwKBDs8G2b1w/EkdT12IIrfOJ8KZe90JZJqGEDeA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37758730},"engines":{"node":">=20.x"},"gitHead":"3caaf562760152506660c5421f1342bfc6015e51","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-858c6af-202602121104.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-3caaf56-202602121105.0_1770894431162_0.9014869968191952","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-3caaf56-202602121115.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-3caaf56-202602121115.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-3caaf56-202602121115.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"788b57a2ed63c69039e0e93ec912604e2d390846","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-3caaf56-202602121115.0.tgz","fileCount":462,"integrity":"sha512-dxaqsa/JMavUgoAvRhiA2F1HdddR27vuWdyrkuuMrJA5MqA76gyc00A+tQOk1ld7a5rT+9XePKgVl2YwrZ8awQ==","signatures":[{"sig":"MEYCIQCHl+LcSIQuiQwY4Hsso4mb5g3hCX7GgeqYSEQn+rjHYwIhAJpk1KFXeJBM8KH59yDt0W3s8df8bvYT+p/HHcGJuE7L","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37758730},"engines":{"node":">=20.x"},"gitHead":"3caaf562760152506660c5421f1342bfc6015e51","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.26.3-9e6c28c-202602121114.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-3caaf56-202602121115.0_1770895002845_0.7367515428342051","host":"s3://npm-registry-packages-npm-production"}},"2.26.3-864dab1-202602121119.0":{"name":"@flowfuse/flowfuse","version":"2.26.3-864dab1-202602121119.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.26.3-864dab1-202602121119.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"613d9ddc4dfc095c3a765b6479718345f608c244","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.26.3-864dab1-202602121119.0.tgz","fileCount":462,"integrity":"sha512-XDpgEXcolNmKqhUFrGQOG3SyIGCEPLYX5gcdtCiMk5FHN6QvxE8kUd59tF5i7GZRUVY6ckFp/Y0r8gwqmmQ0Mw==","signatures":[{"sig":"MEYCIQD9UM7w5MDr9/LI3u835CqildmajtAHGdKuJRWqEVqLSQIhAKAq6J+6p4c/6po6T3zFhVlcai6/0yZOarbMmGA4YWO+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37763329},"engines":{"node":">=20.x"},"gitHead":"864dab1572dea68cb40bbc4134cf7cb05e32d14a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-37dbf19-202602121119.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.26.3-864dab1-202602121119.0_1770895313869_0.7444989261952815","host":"s3://npm-registry-packages-npm-production"}},"2.27.0":{"name":"@flowfuse/flowfuse","version":"2.27.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2c5e3e651e8e4bfb058e506eea671af3de5dc6b0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.0.tgz","fileCount":462,"integrity":"sha512-aq3wmeX9PL9HDUIVkLGoEE/3AxAj1Lb99jcZC3zHd/TQbl2V1dt2aiW6xp54Q7pNIlPo9WUumQoqUSDBU4AXWQ==","signatures":[{"sig":"MEQCIETeIfT5MZt5mqpGeq/ZUhRu3JxdUJGPZ10fF3cHTxoXAiBDkYqKXbCIRU9N68mCZq+zFqVyOf6U8OP5XFC2AfPk+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37762650},"engines":{"node":">=20.x"},"gitHead":"0d338c17edca8c107502760aa65782d37e810f37","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"^2.27.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.0_1770895614996_0.4889504167241676","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-0d338c1-202602121125.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-0d338c1-202602121125.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-0d338c1-202602121125.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e5640d8343439ae307d51952732d9f41beda761a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-0d338c1-202602121125.0.tgz","fileCount":462,"integrity":"sha512-bu+F9kJeGb8Ji4mWt2RbT3L8pUWZ1fcyiT03iYHmcsidI0xuEme+0jWAF0JEUdwt1F7tFYydqRbnMHliX00s+A==","signatures":[{"sig":"MEQCIAmoilDFQ25wocRtOJIDN3+4yLNgXWjM9kl25j5y0y6fAiASEtJSBFwSRHWuwp1y+pDVyArNL1zSUa3lhOvg3atIDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37765831},"engines":{"node":">=20.x"},"gitHead":"0d338c17edca8c107502760aa65782d37e810f37","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-37dbf19-202602121119.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-0d338c1-202602121125.0_1770895619054_0.775486258018989","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-0d338c1-202602121141.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-0d338c1-202602121141.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-0d338c1-202602121141.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4f8d066d42cdebde6a0511797d4fb40ab2500de1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-0d338c1-202602121141.0.tgz","fileCount":462,"integrity":"sha512-dD/ChlyYb6uZauLqYeafMS0OqnVJTwA1IXPqUNIJDTSiNtLyV7puCXV/6irWCnsGCVZFkl3e8yCmHvMegnCcIA==","signatures":[{"sig":"MEUCIB8rvFv1xb3mXxbrWFC0PTINQ5auLsARDvUKuuJvIr0+AiEArl94yeZ5vVhXe1AyxtgXREKyBb3tZz4xdH6B/PXxSew=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37765831},"engines":{"node":">=20.x"},"gitHead":"0d338c17edca8c107502760aa65782d37e810f37","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-37dbf19-202602121119.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-0d338c1-202602121141.0_1770896567809_0.8728180095512887","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-e93f39f-202602121338.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-e93f39f-202602121338.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-e93f39f-202602121338.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6946c23e7db47580c2a0d2da096a0aa36a3506f9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-e93f39f-202602121338.0.tgz","fileCount":462,"integrity":"sha512-peefDSnv0PS5sn+2GaUMImjgExSNgYAZLHKOtsSlJ7GeUkXae7G+QW/tDzf7Pq9GdmU51tEiW0H86U0lOJezew==","signatures":[{"sig":"MEQCIHT9/0du22SEDKnuphEodyGQczOrjYNun4UTVWKilVHOAiA+SupNqkfqeqM3GOQa5njIZ/NMw2Fd+BAS0pjFf1hDkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37770537},"engines":{"node":">=20.x"},"gitHead":"e93f39f64f4f7df72ba73305199a93c0d9bf9918","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-37dbf19-202602121119.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-e93f39f-202602121338.0_1770903624828_0.29563610949122787","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-4b418dc-202602121530.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-4b418dc-202602121530.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-4b418dc-202602121530.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"874b568b1bae2795e30e7eeca7e97755f8e9549d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-4b418dc-202602121530.0.tgz","fileCount":462,"integrity":"sha512-T2bMRwxtnvDN/gtSqxlKkLOBwQF+uEAEtCMsWWAmw4g2i27fD0blADR5v6QjXGvNwM+F0slhorNQujy63iwAng==","signatures":[{"sig":"MEYCIQC6sLlVp7Hy2Q/jGHVP9QSxO8jvYcz4z7lM1C7fuUGSNwIhAJPIE0mW7VryPZIU884AsBk5QYIOE1sOSUX4S/TAWHdl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37731101},"engines":{"node":">=20.x"},"gitHead":"4b418dc2e69f74db7a96eca64f1a286e0204fa7a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-37dbf19-202602121119.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-4b418dc-202602121530.0_1770910359093_0.7625321490127563","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-79c9fd9-202602131509.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-79c9fd9-202602131509.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-79c9fd9-202602131509.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"46b31239b62430e5146fa9dc7472a89c39c24eff","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-79c9fd9-202602131509.0.tgz","fileCount":462,"integrity":"sha512-mbWx9uQ2LH6wqnAzR0SNcA5gjz8HPkH9l9YVLwXaoAxbYkMtjAGmAgWcdSLGr1o3C3FROsW0xzSowayfIosE0A==","signatures":[{"sig":"MEUCIBfacwNHsQyTVD/jQ0w2oiAMzPp0n7gznXvw8S/cSweaAiEA60Tyh3kU8vDw+TRrfOrM2nVv2DJSxmO1q/n7DuRhrLA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37730862},"engines":{"node":">=20.x"},"gitHead":"79c9fd937bc25dca3b5b0c865092da536dd43ccf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-37dbf19-202602121119.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-79c9fd9-202602131509.0_1770995454366_0.0965348705246325","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-7989b5e-202602160658.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-7989b5e-202602160658.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-7989b5e-202602160658.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0d205fb1a677fc4c57045a674e158e840eeb567b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-7989b5e-202602160658.0.tgz","fileCount":462,"integrity":"sha512-rloHWP+6JAXUdeiEX1J0s5bLkbZyrvX6qLE1TQIzhrG9y5uuKJeOOSWnQ8KIvPq0sSeB0oEvK6P1WjEpbjejkA==","signatures":[{"sig":"MEYCIQDayTwFB0GaopIZlKc8zvc623pwxiSKz2gxsMbn4SsR0gIhAPL6M+mmuvYQIMUBsbeGDluLj6vvIowDeZPZdbMXreCo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37730289},"engines":{"node":">=20.x"},"gitHead":"7989b5ed54df87b1a5ffbc3505754f0f6bc17b13","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-37dbf19-202602160657.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-7989b5e-202602160658.0_1771225203376_0.20139407273629306","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-7989b5e-202602160706.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-7989b5e-202602160706.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-7989b5e-202602160706.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"af9c870c777cda417a7c9c440ab40b4bf6baa98a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-7989b5e-202602160706.0.tgz","fileCount":462,"integrity":"sha512-EWBvx4T+jIPtVrTP1Z19CDQfpf7KIC+6q0Eap9Y0zUMRhihwYN7t0HCSaCxmC6s1y+7FrjDN/sJ/kA7J4zu0aA==","signatures":[{"sig":"MEUCIQCDbe/igRKhtdt2D/eD83yIegAK7Adfd4GLokqYMPCdtAIgaGgtorjADlkWQwCYwtK2fvf1LKZiDUqxAEjEL6wa/i8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37730289},"engines":{"node":">=20.x"},"gitHead":"7989b5ed54df87b1a5ffbc3505754f0f6bc17b13","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-37dbf19-202602160706.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-7989b5e-202602160706.0_1771225710039_0.12327155175101878","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-7989b5e-202602161111.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-7989b5e-202602161111.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-7989b5e-202602161111.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"974dd052466184912157f63e7689b7eaa5d899d1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-7989b5e-202602161111.0.tgz","fileCount":462,"integrity":"sha512-NrFRzRx6Oc1/gSuUpxsug9l3VT1kD1WRmy1g8OJPIAnpv+pgY1MN1vBVLGC9M1XILhKpU/Y6uetRLkeIys4AZQ==","signatures":[{"sig":"MEUCIDFJTeY6ZvIorjFupPlxbhDUDOSdjacTsEIsQd7KKE78AiEA5YIpos/zgDTCCrn68TVN6gu8sPPj3jkDeqWZpeJ+ZzQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37730289},"engines":{"node":">=20.x"},"gitHead":"7989b5ed54df87b1a5ffbc3505754f0f6bc17b13","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-8e95bd1-202602161110.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-7989b5e-202602161111.0_1771240364692_0.9256677738211954","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-7989b5e-202602161135.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-7989b5e-202602161135.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-7989b5e-202602161135.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bdcbe528f52faaa070a8cc1bb79174b3f84823b2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-7989b5e-202602161135.0.tgz","fileCount":462,"integrity":"sha512-ugoKx045PcWAXe9hUi2ma30bNcDcGKthwh5nQVQY8mKLAbynrw/cdgwQMHg171CjzXT9xWtxutwbOAlNC4DxWA==","signatures":[{"sig":"MEYCIQDanlbvnFQpoccIAySN5zDv9gOrMs5AfR8D6+Mq0DKOZgIhALBsh3oCqAu5hDBT+NsOV+QezdU5SN7NYrVPVG15FTzF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37730289},"engines":{"node":">=20.x"},"gitHead":"7989b5ed54df87b1a5ffbc3505754f0f6bc17b13","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-8e95bd1-202602161134.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-7989b5e-202602161135.0_1771241817230_0.5811411951363483","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-7989b5e-202602161148.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-7989b5e-202602161148.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-7989b5e-202602161148.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"58ea01693a92f9ac6b1881b41cf4d7ca26b1a64c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-7989b5e-202602161148.0.tgz","fileCount":462,"integrity":"sha512-OGyZwTs9aOjQW+Hi2eREKCCuvkWsha+KNW66+S2VS61giTLCX5ajnwDTyvhIeitvzj8X4Kbsr+4hDv0+yJCqaQ==","signatures":[{"sig":"MEUCIEbGkKRebeN3tRBYG9+2gcj8qqrJArr7d53iBSpRdD2SAiEA3yH8/WbEG0obX7yKw7mkohhhaj+aDlbLezizg0NcR28=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37730289},"engines":{"node":">=20.x"},"gitHead":"7989b5ed54df87b1a5ffbc3505754f0f6bc17b13","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-8e95bd1-202602161148.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-7989b5e-202602161148.0_1771242631381_0.33873031865088454","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-392a993-202602161154.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-392a993-202602161154.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-392a993-202602161154.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f84ce674a8bc7f511d91552cb03e9e8b4962182c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-392a993-202602161154.0.tgz","fileCount":462,"integrity":"sha512-NKIuOXYZ8wQKIQkMWDfoDd4sVzG1yJe9jcaoI4GlKJuFtr/oL16xD3qiCFDIlyd/ucgrISJlhFS6y4TRh+DNNw==","signatures":[{"sig":"MEQCIHVsPs+lh9iE5e2J1PzzHK9V1eac23JmIORGSUqjNsAFAiAvEi9r7Xr8UaBeLMgy6p+AA2aM39ziVQWrSrbXpZAOnQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37777640},"engines":{"node":">=20.x"},"gitHead":"392a993bd6dc4e03dd8f988113fc59ef099c6f2c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-8e95bd1-202602161153.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-392a993-202602161154.0_1771242967285_0.9374461072551101","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-392a993-202602161156.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-392a993-202602161156.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-392a993-202602161156.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1357c51fe8111ca2865a0868a31a7b77a6813e2f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-392a993-202602161156.0.tgz","fileCount":462,"integrity":"sha512-QvGttCQSKdbEBm/b6EkI00746gzqSKIoIrz2/9D5lHiOWOv5WU+hdVPWesvhHdru+kMUiDkPz9vE9cXMPI7T/g==","signatures":[{"sig":"MEUCIEQbibrUiSaMKVHExHePICR+dsGfEwKQebmUn7JdCeGDAiEAkXYoVWDzEyP63BiTCjRiV9IFOkfXPQtv8+HBNsb9uIg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37777640},"engines":{"node":">=20.x"},"gitHead":"392a993bd6dc4e03dd8f988113fc59ef099c6f2c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-8e95bd1-202602161156.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-392a993-202602161156.0_1771243103831_0.0515228795639282","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-392a993-202602161201.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-392a993-202602161201.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-392a993-202602161201.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a674cf4b223a222c9cc78a51781d67ba3102522f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-392a993-202602161201.0.tgz","fileCount":462,"integrity":"sha512-wF2PyDmwNWGHgbxsei1/8Vu0NJUeAf6JxFU832SdWttvOWWBqJkymkhUm+kE0Jn9uUToIu/0WoWNCQMdVU8NNQ==","signatures":[{"sig":"MEYCIQChrFsIEm9JZH/gxA+hiPO7yVDokstKQM3HWac5jFeuMAIhAIjqr3s8aJIXLhVU2WPwBIQzlfRynUnhwCJYQ4jctSUy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37777640},"engines":{"node":">=20.x"},"gitHead":"392a993bd6dc4e03dd8f988113fc59ef099c6f2c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-8e95bd1-202602161200.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-392a993-202602161201.0_1771243366383_0.9356086122478733","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-392a993-202602161206.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-392a993-202602161206.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-392a993-202602161206.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0f6e6addd4f2be2781d49a49136c12b89e425856","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-392a993-202602161206.0.tgz","fileCount":462,"integrity":"sha512-hTm7xtCphkSVLQeRekBa3FsRIgsviomQKIXIqPOGmORBhKq0WfUJEYcYO2QrlNDL5tIMi14x6EmapygzxgvAcQ==","signatures":[{"sig":"MEYCIQC/i1mdhhf9WZsFx52BpKPwgvk/LTT9zQEvDoMwRva4zwIhAJVabrOxYUcNPn48RF9aNXeUYLfTs9+PJ0aBBrCerEWG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37777640},"engines":{"node":">=20.x"},"gitHead":"392a993bd6dc4e03dd8f988113fc59ef099c6f2c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-8e95bd1-202602161200.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-392a993-202602161206.0_1771243690361_0.8689134206217317","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-392a993-202602161322.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-392a993-202602161322.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-392a993-202602161322.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a016c132b6613c590b2040dc4784bfdfd1017015","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-392a993-202602161322.0.tgz","fileCount":462,"integrity":"sha512-a1v2ynu+3RUe+gChMnVomgFEn5fEX68z6dCM1YmfHSqLEo4PqyZcF4PCfu0LR65l1iQcfQGyXIdjGZzjE7olWQ==","signatures":[{"sig":"MEYCIQCY9FAzltNYex3KrVNJn/BevoiHbBwhRHJgN/wEij7DOwIhAN2oi9IKNgDZF+dc8rx3ik6giNHEzzt70D37vJtQ5AFB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37777640},"engines":{"node":">=20.x"},"gitHead":"392a993bd6dc4e03dd8f988113fc59ef099c6f2c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-8e95bd1-202602161321.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-392a993-202602161322.0_1771248240349_0.7110375560866871","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-392a993-202602161456.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-392a993-202602161456.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-392a993-202602161456.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"44975ad258dfa77b27d7ce41ed6f0d2507ce3a3e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-392a993-202602161456.0.tgz","fileCount":462,"integrity":"sha512-unrjwXiVJDfDRFIpC6MAm46YqHjmkrmmjMFw+tPi/QpxtEI4z8MY6rI14a0j8xnbrThGauE0pJG8FmUk0i8bCg==","signatures":[{"sig":"MEUCIQCPi8WRmuUNVbpzDYzIY7+L0Mt6GT45RDWNvJqiNBS0ogIgDUjmIxZNezYRdCcOvX/sGSpqW1uxFc5Z/L3gM+9Y8SQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37777640},"engines":{"node":">=20.x"},"gitHead":"392a993bd6dc4e03dd8f988113fc59ef099c6f2c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-8e95bd1-202602161321.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-392a993-202602161456.0_1771253870653_0.675089579429772","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-4949d70-202602181301.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-4949d70-202602181301.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-4949d70-202602181301.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4102021d6a1f08d4d4fea68d8a9c1cb67bc3d7f3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-4949d70-202602181301.0.tgz","fileCount":462,"integrity":"sha512-BSTp4OByCqJxc2sMiUayBgcaDzrBBQ03XoiwOI/LWO+EE67hPRcJfgZcDSJt08Opt7MlAx/0VXbnO2O3AM4gyA==","signatures":[{"sig":"MEUCIHKAP/nsU/r/VxmY56/ffciX3VR9NC0o8FP1iF+4PEiVAiEAv6D6WHlRYaJeDoYq0IdTsnx4QKZVAfsIORUKnL2/7K0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37778554},"engines":{"node":">=20.x"},"gitHead":"4949d705243bdf117fabf8e7a7299daccaa561e4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-720df6a-202602162050.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-4949d70-202602181301.0_1771419816906_0.7941990504018559","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-a3417f3-202602181504.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-a3417f3-202602181504.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-a3417f3-202602181504.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"81a452813b6eebb7c79ff0a14adde0d2501188c7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-a3417f3-202602181504.0.tgz","fileCount":462,"integrity":"sha512-Qq9K0h5Q1qgsO1mMxrtHHzznSfMHFrOdU8zjwDszQme7doqZpVtxB8FtLjaEgsxbs4tgTEkBA6KA868c+0xrXw==","signatures":[{"sig":"MEUCIG9CXyYWYyhdfOeGDk65l6UeicwQZe5Eia9f8xkdn+CKAiEA3hr6Zs9BxgU0S2MEWARVYD4bprZvpOA8dg3iidfrLXE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37777914},"engines":{"node":">=20.x"},"gitHead":"a3417f3ccbd8b7b8562eb2f1ea966f624bde639d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-720df6a-202602162050.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-a3417f3-202602181504.0_1771427167126_0.19894428683443155","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-ec96996-202602181543.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-ec96996-202602181543.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-ec96996-202602181543.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"97e2402828fc2c0e61707eb9282ef8f802ef56d9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-ec96996-202602181543.0.tgz","fileCount":462,"integrity":"sha512-ho3WOMN/vftT4UCzh0MAHBbmBfbJH6kmH8ipIBHnZMdI+XygljJ1kx4e+JW8tK2cXIC3BDf09VKeSDrG+qt5Ow==","signatures":[{"sig":"MEUCIGLYybdKFAHuZc893uxEXpK6b5ch+jy2ZDINdRfgz0Z0AiEAz4Ctv0ebM3zknPi+snH5UWASYwmN+OM8hrT6b2PJDtw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37777914},"engines":{"node":">=20.x"},"gitHead":"ec9699646dc9321c4731b31a8682842e4b41adba","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-720df6a-202602162050.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-ec96996-202602181543.0_1771429515349_0.8966155238827807","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-ec96996-202602181558.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-ec96996-202602181558.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-ec96996-202602181558.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8855d9ecac65730211403dfa8161d56b04d9fa49","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-ec96996-202602181558.0.tgz","fileCount":462,"integrity":"sha512-FYeNqos0XaGTCmenVWW39SBTQpiP1qZec5kjG/ipkXM8X3Ye2Jh5Q9Lm9ytxSLonfXWXj8Ycf0kcXPNvgpmqkw==","signatures":[{"sig":"MEUCIQCpS+6LtTt8arIkl8QSxFG3J2byjzZqqh6hg8pMTSKqjQIgI8YOICvAGOx+OGnqQWqz+R/q0gpntJXqxw53WMXnjUY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37777914},"engines":{"node":">=20.x"},"gitHead":"ec9699646dc9321c4731b31a8682842e4b41adba","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-720df6a-202602162050.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-ec96996-202602181558.0_1771430449726_0.6480900284104367","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-ec96996-202602190706.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-ec96996-202602190706.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-ec96996-202602190706.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d39e61d85518418786ad416bfdc4cd463e01821f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-ec96996-202602190706.0.tgz","fileCount":462,"integrity":"sha512-o9LC3WMKgTG4i9LFJ2uAcSs7GUSt/cMcNlKXcLvuCfQ7xDq4H871k/iMAhzLjIMXilvwy40Vr+Hy6Jc9ieapug==","signatures":[{"sig":"MEUCIB7/JM4dKbSK4tgg7/X+Elg87sMSO4LAsN6gOMPdj8gGAiEAptHUwzsK+J8KMyQYBQoJk3QhoJ8dc8uZMGOKiucvPog=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37777914},"engines":{"node":">=20.x"},"gitHead":"ec9699646dc9321c4731b31a8682842e4b41adba","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-720df6a-202602190706.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-ec96996-202602190706.0_1771484891881_0.7209726594197705","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-ec96996-202602190735.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-ec96996-202602190735.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-ec96996-202602190735.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fb3d5d1a6c5abfc5bef2a8bbe36490953021bdb0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-ec96996-202602190735.0.tgz","fileCount":462,"integrity":"sha512-5d44+yJVFVG5sPYtxIGAIK8f6fA3HXj+VPGTgFnH1pSoLgMtVRrQTKjoVXUwMb50bzy+Fun6k+z4crcqHTjolw==","signatures":[{"sig":"MEQCIHHZ+0t3RtHo/0Vqpzir4IWscx60e7Fa4LMXo1zeYRCPAiBx8aCqpmTW1LOV1l9qyTlTxm0yJp/9wJ8+n29ucH3t4g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37777914},"engines":{"node":">=20.x"},"gitHead":"ec9699646dc9321c4731b31a8682842e4b41adba","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-720df6a-202602190734.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-ec96996-202602190735.0_1771486633463_0.9631825060786392","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-ec96996-202602190925.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-ec96996-202602190925.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-ec96996-202602190925.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"62b5c36654aa6c06dd87ed2312a92ea15ac3f61d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-ec96996-202602190925.0.tgz","fileCount":462,"integrity":"sha512-IKU2BOUG/lX37W3p7vtx6/JxwBHITEmzkqRFeobDH53MxKU+IXnm3ZFEI+mW0ChbkNTa7gM8TuMOiE/fFQrbBA==","signatures":[{"sig":"MEUCIE24ZJQr5Em6Le7AIq6R/KKrVSlpnFXoAjmi4B52/8ntAiEAq094bMiby294cN/d9WLH6/2AiGyRrB5/HTOKXvKdQLc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37777914},"engines":{"node":">=20.x"},"gitHead":"ec9699646dc9321c4731b31a8682842e4b41adba","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-720df6a-202602190925.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-ec96996-202602190925.0_1771493246290_0.41766489335452683","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-ec96996-202602190931.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-ec96996-202602190931.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-ec96996-202602190931.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0c29d58c978c926cec76d0a49b214e4c232332e2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-ec96996-202602190931.0.tgz","fileCount":462,"integrity":"sha512-yF+/Mg+A65uC88lnGuJGB9apRZXKoaddvw4wuq7avB+Wc5A1FnQdLyziE65zr7aQ/yRZMzg9FIeooMZtJPTNBw==","signatures":[{"sig":"MEUCIBmt2Wd4LJgvrMTeFHFvXIzxAJwAi2Z3zHqjLj5EsC+jAiEAkuIEE3XfbJKdUBPed9X8gtmb53/gKuYCYWsQLELmMrM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37777914},"engines":{"node":">=20.x"},"gitHead":"ec9699646dc9321c4731b31a8682842e4b41adba","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-720df6a-202602190931.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-ec96996-202602190931.0_1771493616335_0.32993567674756186","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-ec96996-202602190935.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-ec96996-202602190935.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-ec96996-202602190935.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d3b1ab2b3654aeb90d966a0e8445fab4931eaf0d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-ec96996-202602190935.0.tgz","fileCount":462,"integrity":"sha512-5modtQYvmXxOCfJ2JiW4ueWdpJEmF+7UjsNUiWUohjqreDWs/fnhi8Buap5rffROyyvwr+pQix8Pj+hnMKMDrA==","signatures":[{"sig":"MEYCIQCtV7Ll3dGpcmOe/xKyjB0MoS0XfDqtAxbl1iHlW1Q+ogIhALG/8WniMOSYZdCCOKnbxO1gKEVUb86q/rniNQjR1T+z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37777914},"engines":{"node":">=20.x"},"gitHead":"ec9699646dc9321c4731b31a8682842e4b41adba","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-720df6a-202602190934.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-ec96996-202602190935.0_1771493824325_0.19927568104550497","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-ec96996-202602190937.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-ec96996-202602190937.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-ec96996-202602190937.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"07f87bb346fbede99ff802f2a9d54382acbc8c4f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-ec96996-202602190937.0.tgz","fileCount":462,"integrity":"sha512-Wi7M7yhLGZTMD6Kwbdgxfbzzgr89ht1r+KBu1R7mDQ93w6LRvcH+Z6umYGonCf9eyeB7VgP6dPE3Uj0x82OoRg==","signatures":[{"sig":"MEYCIQCfVp3hsiVuIncEJdT0MoaJV6JWX3t31tlCit91IlfzsQIhANmpWQE2zLUpJOR6ve/oaHbxNCmQOjQ/A0Wm7cIeKWz1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37777914},"engines":{"node":">=20.x"},"gitHead":"ec9699646dc9321c4731b31a8682842e4b41adba","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-720df6a-202602190937.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-ec96996-202602190937.0_1771493961292_0.09558343025135585","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-6a2bf39-202602191028.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-6a2bf39-202602191028.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-6a2bf39-202602191028.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"69e0e1744b306bba606aa86e5d0acb8b606ac8f1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-6a2bf39-202602191028.0.tgz","fileCount":462,"integrity":"sha512-S+Jdkk7IOZCpFR2ZFqsO13NTJtJevtsojrHUh7oZPTdKOudE5jtOZknSjMWdK3zwFwkNPNYtye6sXPkXJNOVhA==","signatures":[{"sig":"MEQCIFZ1O+Sd8tphHyippMjo2YQmwathYdhgzs5Qq2xmuD4QAiAEy8LUJncjZshwnAzLJcFUIOkgSyk/GIUo4yGqfVbMzQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37777914},"engines":{"node":">=20.x"},"gitHead":"6a2bf395b04dc47c7379ae5b5deda52cf0eaf64c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-720df6a-202602190937.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-6a2bf39-202602191028.0_1771497001336_0.9417963700112002","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-93ad7ee-202602201550.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-93ad7ee-202602201550.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-93ad7ee-202602201550.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ba4a3d177ad14173ba5db8c822566a6f4dd461a1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-93ad7ee-202602201550.0.tgz","fileCount":462,"integrity":"sha512-HqmYKa5a32gZzhLCnkkSGuZaeuFNzizx/WEPEJitDnDAR3xn1AwdV6XlPRsYmMCndqhFHJDfRybXZ4kr+EmyGQ==","signatures":[{"sig":"MEUCIQCE902OTlwmXUDEGpne448/a5WkuPfCfoyRpPQa0bAQBQIgFPa6/qda233QggfUyco1VdzB08vLwJYMxIQ2g2tfpvU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37783362},"engines":{"node":">=20.x"},"gitHead":"93ad7ee5579f77dec3f68084fa9f881ec9d494f6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-720df6a-202602190937.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-93ad7ee-202602201550.0_1771602743424_0.6718965381547135","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-dd54f52-202602251838.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-dd54f52-202602251838.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-dd54f52-202602251838.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"90da29d12af716dd481c2c3a467ceeeec8a7b0a8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-dd54f52-202602251838.0.tgz","fileCount":462,"integrity":"sha512-A+QoO76Yw7pUX9HWeULdOZ+JsFoDXqUxoCivKnSChtG/kMhnU4fTWa75daGJbL0TaUZ3FHOvxFxsp1eDCTvFgA==","signatures":[{"sig":"MEQCIGHRfum7ZfIGHeceAxSXQ8iRNhvPdHej8fgGpaUrXu2+AiBSru13kb89RC+L8VoEl8Gxe8VffrQwjcP2SBp6MNG+aQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37783345},"engines":{"node":">=20.x"},"gitHead":"dd54f527c72de5a52dac26847e7f6333eed5ce47","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"null","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-dd54f52-202602251838.0_1772044841162_0.06687756407834455","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-dd54f52-202602261119.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-dd54f52-202602261119.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-dd54f52-202602261119.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a107d5070ee1e4432498d628b78a03096144142c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-dd54f52-202602261119.0.tgz","fileCount":462,"integrity":"sha512-yrTw1RSvaZJY66eoyU1uc+QH4xEiFTjK433kVpK2c1vIi3n1MFNiY9exT2YrPnJrBqEymds+KOwc9NmDJblOTA==","signatures":[{"sig":"MEUCID37LVpmRt7ELoCRKlgJZN9lpvvllO3I9lLUwyhnvd3VAiEA5hLIDjjOPyXhNbTifRCjKKx7PpZXJQmQIpPLsWcx0KY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37783370},"engines":{"node":">=20.x"},"gitHead":"dd54f527c72de5a52dac26847e7f6333eed5ce47","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-720df6a-202602190937.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-dd54f52-202602261119.0_1772104868094_0.16629183083361454","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-512ec7a-202602261648.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-512ec7a-202602261648.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-512ec7a-202602261648.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f0adaada859b69f4c4cea6b52b6fd47bc65fea27","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-512ec7a-202602261648.0.tgz","fileCount":462,"integrity":"sha512-WvD4MzLVWBvLFIFRAO4UiZwCrRcZvtM0Td0C+KfLzc6Hqlqw72ibfDqjrsQ4juGt3FufYNDpV7gqeHto3Q33Og==","signatures":[{"sig":"MEUCIQCkivkmFtm9KNkWxvgMPughgh8KPtrF2E69JBVDJYwzoQIgICgoXLcl7zFs++NqhpjvtCrJ3axdZ6bUVDBcQkvJI1g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37783370},"engines":{"node":">=20.x"},"gitHead":"512ec7a71cb8e54054133560f318e4d15657091d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-720df6a-202602261648.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-512ec7a-202602261648.0_1772124623781_0.5506816893037243","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-512ec7a-202602261702.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-512ec7a-202602261702.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-512ec7a-202602261702.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1178365a021a9eb0cf05f4b06a0952eb3773f0d8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-512ec7a-202602261702.0.tgz","fileCount":462,"integrity":"sha512-ff993mgz9w+IIH/f1wLbr130jIJmn8ny/dlB7gakSiTX+Du0DxgpDAGtzyxAipRU81svTDVMoL/8FaBjEaWvwA==","signatures":[{"sig":"MEQCIA3CdhgQjVUyirGA80mYlRNm8McgeMvY4SstF0GC+egLAiANjrlEdfJg+mpzv0IT0pE9YuZMSi+4/zuhCuFrgxdWwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37783370},"engines":{"node":">=20.x"},"gitHead":"512ec7a71cb8e54054133560f318e4d15657091d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-720df6a-202602261702.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-512ec7a-202602261702.0_1772125476626_0.88543011886579","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-512ec7a-202602261710.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-512ec7a-202602261710.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-512ec7a-202602261710.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"21c6d7bd87768d7a99890b3ece617ade5ab28851","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-512ec7a-202602261710.0.tgz","fileCount":462,"integrity":"sha512-1n6aWhg3EzJfEUFkpuKp7jsJCGW0bqalk4PET8jNh7y2dL12z/DwQJsYUD0TJsCFdJCvxtTkVzGk18g6JLEgWg==","signatures":[{"sig":"MEYCIQCPi2uzrqHkADGraiW3hqvMNyRjceqsqlmJcYNJK7acugIhAJUugBBCJ5WjI0nQ1OgUKJ1yeo5mxzBUNyvrl0rsk8Gq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37783370},"engines":{"node":">=20.x"},"gitHead":"512ec7a71cb8e54054133560f318e4d15657091d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-720df6a-202602261709.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-512ec7a-202602261710.0_1772125928433_0.9057624816144287","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-512ec7a-202602261712.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-512ec7a-202602261712.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-512ec7a-202602261712.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"353cb7d0d1fc3fdcea8aeda6dfad85697eed6109","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-512ec7a-202602261712.0.tgz","fileCount":462,"integrity":"sha512-DCXnWNBuFm9Nv53Ap03MOx1EDeoi642B4+YN/LKu0zHLT5DQi5SAD6cb9tta4cu2RAW1jF7wfuz7Qh5AiX7RzQ==","signatures":[{"sig":"MEUCIF4yjFEUGG28fq2/YFL8snHKOpPgHMtrA/sbKSaAwHpCAiEAgvsbtgMoazgY3QlZ/HTkm6vTUqMbkP5yT1eFOVq5qRQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37783370},"engines":{"node":">=20.x"},"gitHead":"512ec7a71cb8e54054133560f318e4d15657091d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-720df6a-202602261712.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-512ec7a-202602261712.0_1772126076130_0.3069775754335593","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-512ec7a-202602261715.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-512ec7a-202602261715.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-512ec7a-202602261715.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"da1c0ec8a9b00e02a57c6d1db2e281f5e7ec0788","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-512ec7a-202602261715.0.tgz","fileCount":462,"integrity":"sha512-algR/VDycNqCO4Q4Ob/I0bwuqZ+E289POc2/cvlzXp05PuOf4cuAZNV57h9e0OvcpircKcVOzbIRnF10tbGPYA==","signatures":[{"sig":"MEQCIConWFxCU6Zc5F5lBm3zaPK4jpz/eukUvKVU7r/PsgvSAiAy3VWHvl0PPCGdyIS7xZVYU5gu8Dwn4Kjn/ZLIJYZrDw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37783370},"engines":{"node":">=20.x"},"gitHead":"512ec7a71cb8e54054133560f318e4d15657091d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-720df6a-202602261715.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-512ec7a-202602261715.0_1772126267741_0.4912821976350237","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-512ec7a-202602261718.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-512ec7a-202602261718.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-512ec7a-202602261718.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f5bfb0988e605950df26fe875bbdb6ee74cd9d68","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-512ec7a-202602261718.0.tgz","fileCount":462,"integrity":"sha512-oDSwEeSTWRKO36C6Gz9JX2YPcE+CnpoUIupZxDrazuUhi0ImaOb9Gx9ZC6YJ4wgf5AikmMXRtK/7xJ1ajXDhgw==","signatures":[{"sig":"MEUCIBLc7Tgs0Z4V+Wzudbg4v374sTJ4yI2HMGxWL6NPMqgSAiEAk1hVqjvb4KWl41viQ0rYFM5VCNdLywqcMSnUFwJVEcc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37783370},"engines":{"node":">=20.x"},"gitHead":"512ec7a71cb8e54054133560f318e4d15657091d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-720df6a-202602261718.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-512ec7a-202602261718.0_1772126415655_0.5674954508398429","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-512ec7a-202602261724.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-512ec7a-202602261724.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-512ec7a-202602261724.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"166b9d18419cb5b556327f924ca04c71fae095ee","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-512ec7a-202602261724.0.tgz","fileCount":462,"integrity":"sha512-9xFNvdMyyuxFl/Vn2mxjeN3mxg1emQBZY+NcE8pBELEDVjmGh+HUuOhQoPRy+rn+uSQ3bKNyj2xG764pTH7YZQ==","signatures":[{"sig":"MEUCIBcpAW6HOqA9Ox2MpQLI58zfwh75x84Od1kmK9P/SAOcAiEAq9aanYdYfU1d7SSKTofdNYxI58srkjCys/F02OMWRIk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37783370},"engines":{"node":">=20.x"},"gitHead":"512ec7a71cb8e54054133560f318e4d15657091d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-720df6a-202602261724.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-512ec7a-202602261724.0_1772126793349_0.7931820097245621","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-512ec7a-202602270832.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-512ec7a-202602270832.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-512ec7a-202602270832.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9411f28446a49333bb07b026d435bee125597279","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-512ec7a-202602270832.0.tgz","fileCount":462,"integrity":"sha512-ayDHP/ERIitbZ2bMz3SA5+dRZMBrkGUYChhIJLvmFnkoeKPWQwyd8GwKciZUH77nJ+wHJNEFqArIFGKrCiSs0g==","signatures":[{"sig":"MEUCIEXQZqMZB8bfCj/dwYLD5fo5U49t/KMimICIUP6aFmgRAiEApgpLtLmHs+lte4yoAxvWsGSDBBPjJA+UUdHPUkCkIA8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37783370},"engines":{"node":">=20.x"},"gitHead":"512ec7a71cb8e54054133560f318e4d15657091d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-720df6a-202602270832.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-512ec7a-202602270832.0_1772181268053_0.9429433671498824","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-512ec7a-202602270836.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-512ec7a-202602270836.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-512ec7a-202602270836.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f98f18d1ee0fb193ffc9e18bbdb86c89a7e676b4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-512ec7a-202602270836.0.tgz","fileCount":462,"integrity":"sha512-fYDakEO8/Dhh/HkYyw5uq6t+I8Vo++AcoaPfxzMEd/MO6qzhrWRHvRY1g+2lXbWnOKF+8MKm1sR2fs+YNXHaSQ==","signatures":[{"sig":"MEYCIQCYQYByJAmsudWQjU07fYAnkn0XOH6g5RwoZa+guDSB+QIhAJs1bsp1CWubMlnOFyPYn3Dp3dhvSvwhJnctBUCs/l1K","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37783370},"engines":{"node":">=20.x"},"gitHead":"512ec7a71cb8e54054133560f318e4d15657091d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-720df6a-202602270836.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-512ec7a-202602270836.0_1772181507338_0.5787346763801353","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-512ec7a-202602270839.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-512ec7a-202602270839.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-512ec7a-202602270839.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"93767963342546a4b6e2cbf843aed4f8c9b09480","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-512ec7a-202602270839.0.tgz","fileCount":462,"integrity":"sha512-gXDMIXNqSoFQFeTADfk65nar/20UBdwLALQ9weUeTdrgvppbv2mzzrtkVSe8bpceF6u6ovxWlE2hOfwbxcIewQ==","signatures":[{"sig":"MEUCIC4kr3wcEJImkx8daWBHnlYUGZJATbaczKPZwLGIP7PsAiEAzfzUf8r9eNrBt0rkxcG2W4xgGEdnDNbgijlrNRZEYN4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37783370},"engines":{"node":">=20.x"},"gitHead":"512ec7a71cb8e54054133560f318e4d15657091d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-91152db-202602270838.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-512ec7a-202602270839.0_1772181657134_0.9222072507470265","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-512ec7a-202602270842.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-512ec7a-202602270842.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-512ec7a-202602270842.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"24897d64e23a3df22291a9a283e60756902056ed","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-512ec7a-202602270842.0.tgz","fileCount":462,"integrity":"sha512-J0kE7f3JG3IidbYktwhwAHtz8pECZcGG52QJ9DP4vX6lTQuGJ2D5qCWMbyIv4Rr4kk23tibbfGYZE155xXpY/g==","signatures":[{"sig":"MEYCIQDKnKi+aVa6pBOCr8Ew3OrJH2fmTCpXyIu/OPcJk6b33wIhANrd0bKmCb4euAaxOmPTLQJ80W/w9NdVK2E8uAK0FiAY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37783370},"engines":{"node":">=20.x"},"gitHead":"512ec7a71cb8e54054133560f318e4d15657091d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-46d8d1a-202602270841.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-512ec7a-202602270842.0_1772181847087_0.9738915245241475","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-be1b2ab-202602270918.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-be1b2ab-202602270918.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-be1b2ab-202602270918.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"72c853727474943420e65e17394df3862f82f716","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-be1b2ab-202602270918.0.tgz","fileCount":462,"integrity":"sha512-eqatHbgRjczFnl7nQBNymjtfwgZmlm8dDCx9osHI5hDSniOgvEuYAcVVWUXtulS2bkIHg1AQLoJ9LLOGFpOZsA==","signatures":[{"sig":"MEYCIQDlVCvh3nwB/MSTetE01mMSH0R5H+m4kYlUL5kj/WaMKgIhAOAvIvLcrTCrwZK6kphJvWgWaDhZnK+dl3vtNa/TDdNl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37783370},"engines":{"node":">=20.x"},"gitHead":"be1b2ab0c175b2e1b3634d741820c4e8a5d3330e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-46d8d1a-202602270841.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-be1b2ab-202602270918.0_1772184147462_0.4101153735170546","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-5b6b2c9-202602270935.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-5b6b2c9-202602270935.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-5b6b2c9-202602270935.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"27117cef8628e1b09a9e2785291e9f46a077cf66","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-5b6b2c9-202602270935.0.tgz","fileCount":462,"integrity":"sha512-SE2N3hVAsn7Ngvv4YcFHXLAPCtdNO5aoolEmiWFwBwKfdaxHm8vShdfbnA8MvvsXgFhlYatbU7mSn+VtmO4Axw==","signatures":[{"sig":"MEQCH1+Q+nsTrj6bUy8X5uDZnpWCTCeR3bqzFkL8UoE41FoCIQCcdpVWJHKm4z4HJ5eIMkig2OCpvL5Iv0XVejKv9xySQg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37783370},"engines":{"node":">=20.x"},"gitHead":"5b6b2c9a2ec6346168ee7eab8fe09ed2288ff378","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-46d8d1a-202602270841.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-5b6b2c9-202602270935.0_1772185050476_0.47772738264095316","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-89bd194-202602271006.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-89bd194-202602271006.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-89bd194-202602271006.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"30b47551621eafb9d13c7b7941647c04205c24b6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-89bd194-202602271006.0.tgz","fileCount":462,"integrity":"sha512-8sviZ/GHNt5hZsNH833AWl+bPMQHb8yQJLlGzEmxjXvCZYSUq58MY2yGq6YHDtjL7GRDUDcFKmPKqDBv6JX5Aw==","signatures":[{"sig":"MEUCIQDWwlJ1V6UlFqBVpQGXlpqcagn4vXwFeUEMFZ97ErUz3wIgH8lwAHqxrMhijpHxt2+OATL2xi6VlSC5q42f9EspOo0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37783370},"engines":{"node":">=20.x"},"gitHead":"89bd1943588f6b2563d1f11dff9aea3de8c660e5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.1-46d8d1a-202602270841.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-89bd194-202602271006.0_1772186891758_0.733017429952254","host":"s3://npm-registry-packages-npm-production"}},"2.27.1-89bd194-202602271044.0":{"name":"@flowfuse/flowfuse","version":"2.27.1-89bd194-202602271044.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1-89bd194-202602271044.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ccfea8e574ce26f9097af3c7c9e7a2c87fce3f0c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1-89bd194-202602271044.0.tgz","fileCount":462,"integrity":"sha512-OtZ71uOmUI/VEdWFvrXX6WFwKNm2zBoYRw1p9qpKHVYLO6g5nEzx6Lwd8TwAYBUznoeNxk3rdTSWaq7HLzbzVw==","signatures":[{"sig":"MEUCIQCeew3KyuEL5SW3WP07zvlBYnTzDOreM4ChRjzrWgevUQIgN+vfiKOj8Xexp7YOiiGvw/UivQp5TX1iqzgIpb7W9j0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37783370},"engines":{"node":">=20.x"},"gitHead":"89bd1943588f6b2563d1f11dff9aea3de8c660e5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-e7a7ec4-202602271043.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1-89bd194-202602271044.0_1772189150126_0.507044355190936","host":"s3://npm-registry-packages-npm-production"}},"2.27.1":{"name":"@flowfuse/flowfuse","version":"2.27.1","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.1","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1cb256a8b8672952bf90710e9ca7373403b96601","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.1.tgz","fileCount":462,"integrity":"sha512-uoBcNiV+A1wqGAtNFECX9YkeyFB7EKr5G8hXtyA9Bs/6kjcLkYgmJpJ/ieSxpml2V/z4wPkuRxN1MJt153XY9Q==","signatures":[{"sig":"MEUCIQCUxv8w4b7HCPZ9pFjJrjayrLWYXqA2alBB4WgDZsAwzAIgNXJ48qCIZoSrbfIb1/8QmAMQ2qlq3aVZrCf88ULegB4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37782327},"engines":{"node":">=20.x"},"gitHead":"28bdb448baf726662e8d2d028fbc3610a8e203e3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"^2.27.1","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.1_1772189768952_0.965439611093168","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-28bdb44-202602271106.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-28bdb44-202602271106.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-28bdb44-202602271106.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"194dbd226022b672d3681d49636d6dbf79f7512e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-28bdb44-202602271106.0.tgz","fileCount":462,"integrity":"sha512-aGiS04dKCcF6a/lJjdnZbcMrs7JmSyMlQp992iDyi8FfEzS2uhFVq4qV+SEAoeVeWTZhshDFPyjD956JyXI2kA==","signatures":[{"sig":"MEQCIDFLZEk9RG4a/bdVUDXsd2lc9OSWA/5o1ZBr8aKLEUglAiBh70M6Rpg3cHjXqS4F6hSzoCBB78qBcpUTSK7abhb81Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37785508},"engines":{"node":">=20.x"},"gitHead":"28bdb448baf726662e8d2d028fbc3610a8e203e3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-e7a7ec4-202602271043.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-28bdb44-202602271106.0_1772190462206_0.7034998781024107","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-37d3bda-202602271657.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-37d3bda-202602271657.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-37d3bda-202602271657.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1ff422f6a8083c7c83fc2175389d5aeeb739720e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-37d3bda-202602271657.0.tgz","fileCount":462,"integrity":"sha512-IR6DTWxrCDzIWtaOPyHYuwT2Qe0A54joGR7Gfdg1udnyaS7Q4daJtlBfJPwBQJcVwv3H3RBfm8h5DLqAp8jgJQ==","signatures":[{"sig":"MEUCIQDS7fSK+TUnXfBwbJ7V7RBzEZ8/KqW0MfLafjySLDqKEQIgJE7/7kBkA+EsCU5CwpdVrUpj2C8wGw7fAerK5Z6At6Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37785508},"engines":{"node":">=20.x"},"gitHead":"37d3bdabf6abd2ef9cfcd6b04075568faf8e451e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-e7a7ec4-202602271656.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-37d3bda-202602271657.0_1772211568318_0.6471714832874946","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-37d3bda-202603020624.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-37d3bda-202603020624.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-37d3bda-202603020624.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f9195d128ed06a728b5b5afc68a197ac476e188b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-37d3bda-202603020624.0.tgz","fileCount":462,"integrity":"sha512-3H1UeHgLHONnQHxjhf9pCFRC6kr1K61uyMdQ44sf0IKsFVpL8NrIzUsJ80t+LxF78+fc3fiMn/PQQRGVyD8J2A==","signatures":[{"sig":"MEYCIQCoMiAb2PvNgqmcW7Jjvd3MbXvOvhOV7MPRdf/P3TCLlQIhAIn+ntD+U7mPl3UAzoutcHSJNk5X2DZF8Ud7f81EXxLl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37785508},"engines":{"node":">=20.x"},"gitHead":"37d3bdabf6abd2ef9cfcd6b04075568faf8e451e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-e7a7ec4-202603020623.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-37d3bda-202603020624.0_1772432751678_0.353856536603542","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-37d3bda-202603021321.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-37d3bda-202603021321.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-37d3bda-202603021321.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"68f55f6101a95dd7f3bdbc3cc3a7ca1909cb9064","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-37d3bda-202603021321.0.tgz","fileCount":462,"integrity":"sha512-08B3+jDGJyJmXFeq9L1SEdEU0jgnLB245f7ercF4nIbBfsFBvhjqXWy3I32r9FR9zV/05dTErcfoo/DkI93xpA==","signatures":[{"sig":"MEQCIEsAUYnnK/84UefAZo8ruk0knGI/b21CkHGNOnW3L23FAiBrjNWAgIItAXJxXYVOgekMLrkmhblENoVLzbLmGVqxeQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37785508},"engines":{"node":">=20.x"},"gitHead":"37d3bdabf6abd2ef9cfcd6b04075568faf8e451e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-e7a7ec4-202603021321.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-37d3bda-202603021321.0_1772457820141_0.6075917558432646","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-37d3bda-202603021329.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-37d3bda-202603021329.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-37d3bda-202603021329.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1ecafba09f56d8deb79021c121fe96abba92b7f5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-37d3bda-202603021329.0.tgz","fileCount":462,"integrity":"sha512-+3fdPz/BuNWFf0vG/a2oaEDI7XUY3Rj60VF/8ltRikdzxha6sn/OrL5B6uxDjufGdeYrhEoV3ywYAS9TExSoVw==","signatures":[{"sig":"MEUCICKEAR+BhgtqpfnrD49ost1pse/tfmFo7hrKpxjDTCvdAiEAynsliQhAz+bGvHjS4Xakc5pHt7Oc1x6mOwnU9o/PMaY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37785508},"engines":{"node":">=20.x"},"gitHead":"37d3bdabf6abd2ef9cfcd6b04075568faf8e451e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-e7a7ec4-202603021329.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-37d3bda-202603021329.0_1772458286497_0.7956707139214243","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-37d3bda-202603021333.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-37d3bda-202603021333.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-37d3bda-202603021333.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6520e2c510046e429bee6fc8ca4d5805f3ec0ffe","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-37d3bda-202603021333.0.tgz","fileCount":462,"integrity":"sha512-uhBWIfQxgHuEritWfthhFedq/LH9VQxMqRe1UG8WGhDVDvrW3C8+rQn7OFe/SI40+XlW6fXKZRV1mTkVh+SHDw==","signatures":[{"sig":"MEQCIAHat3EsyFEBOJgwH3xpBzdJWmLEbBmucf+UUtqVICx1AiBrI7htKZ0rPJtfa5JWlwEjwC8uMbXCYeCINoyO8WO/Xw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37785508},"engines":{"node":">=20.x"},"gitHead":"37d3bdabf6abd2ef9cfcd6b04075568faf8e451e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-e7a7ec4-202603021332.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-37d3bda-202603021333.0_1772458511384_0.9093672000187707","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-37d3bda-202603021344.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-37d3bda-202603021344.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-37d3bda-202603021344.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c5ac87c0fe6599200843b26c7033a89ee7595953","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-37d3bda-202603021344.0.tgz","fileCount":462,"integrity":"sha512-86dqYq9wOptppQUCTJvWATbPu05JO9qfBHH1J6yI9DGNGnc8XJxZTXircaCvqsqVP7UP3XI8MpMTV/LmS6jRLg==","signatures":[{"sig":"MEQCIFc5s7BZKp5t5k6DCLH+QCc5x1tpEzmZe5ODXJL0YwWDAiBeKo0iKs3McX8wRpA8K6xxJFdH2OGaG9rYRJOmqzwPow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37785508},"engines":{"node":">=20.x"},"gitHead":"37d3bdabf6abd2ef9cfcd6b04075568faf8e451e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-b11c67f-202603021344.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-37d3bda-202603021344.0_1772459179151_0.5436419014801348","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-37d3bda-202603021347.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-37d3bda-202603021347.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-37d3bda-202603021347.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"aca9c4831e17c3d52ffb372bac3726934795cf05","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-37d3bda-202603021347.0.tgz","fileCount":462,"integrity":"sha512-W8+CexkIQIX8mzixZcggW5xEKkTnQNuYU0665DGf9ndXTAYzHB0iwoiYEXFP4ncejqGU6H253uhhevqPgvmYbg==","signatures":[{"sig":"MEQCIF9mkcomBr8IURsGJSrp/9d6NJBFcIa1SVnitK5q0XswAiBmfYG8qc3Ard2MSuL1nSDPgq5k+/ESRupQN+FnmoFwmg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37785508},"engines":{"node":">=20.x"},"gitHead":"37d3bdabf6abd2ef9cfcd6b04075568faf8e451e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-b11c67f-202603021346.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-37d3bda-202603021347.0_1772459335771_0.2062362361883916","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-37d3bda-202603021605.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-37d3bda-202603021605.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-37d3bda-202603021605.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bac4bc5b08ee900211eeb48d3baf44459303c634","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-37d3bda-202603021605.0.tgz","fileCount":462,"integrity":"sha512-UPkmCu0t54YN6xXW/aRczerDJEuJYqFmI/jxQyGFrcQ1e02pSomjZmFqlX7uS6kx0Kqo4GTlSFBwP6vYHjCgTA==","signatures":[{"sig":"MEYCIQD5GtuohKPdMCov0Feb8FIOqU2lHoXUAsG1vmjHCnDIzAIhAMxoyjFA9KxstNEYkcgAKgqfghCo5M8Cop1PzfS33XRL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37785508},"engines":{"node":">=20.x"},"gitHead":"37d3bdabf6abd2ef9cfcd6b04075568faf8e451e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-b11c67f-202603021604.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-37d3bda-202603021605.0_1772467612574_0.8945650027895886","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-85e3a09-202603031220.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-85e3a09-202603031220.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-85e3a09-202603031220.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"71db079aa9ec62647dd54671d3e0c9b785302019","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-85e3a09-202603031220.0.tgz","fileCount":462,"integrity":"sha512-ayANHenSbbBmNevk/aYx1Ep79EJdBy4QCTz7/UqTRCzQgtPBwtpd/iAy8EGD/o5Rum18yE7rsGzBisExN7OT1g==","signatures":[{"sig":"MEUCIQC52faNOQt3iiJOzQsGVO/X217cxeFkLUzt7PIwDLI5fwIgf/Fe8gqapKm/4kxa62NzPwl/Nod6mGt3iNYNpc8f55k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37785508},"engines":{"node":">=20.x"},"gitHead":"85e3a0978ec9ee4ecdc4d174c06df76d0759e1cd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-b11c67f-202603031220.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-85e3a09-202603031220.0_1772540563307_0.6059714052634759","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-85e3a09-202603031410.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-85e3a09-202603031410.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-85e3a09-202603031410.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"44765916eae64e3f167c64493cf303d5085a1250","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-85e3a09-202603031410.0.tgz","fileCount":462,"integrity":"sha512-mtaTElwkgq+OK2vNWOac2l/9Jb8u3IkIWKsqymIPYxrbHSaxXj/wOJqqZfRcJ/RInOgIads4vEhbKLA/YTL5HQ==","signatures":[{"sig":"MEUCIBB6LuaNmQpnekHL2+Q2+4XRtRpHwRpImyZhnbVoeF4zAiEAvyZNbmAiHrJdL3OOgqQE1I35rZjxFeMq8mNUFhffYGI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37785508},"engines":{"node":">=20.x"},"gitHead":"85e3a0978ec9ee4ecdc4d174c06df76d0759e1cd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-b11c67f-202603031409.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-85e3a09-202603031410.0_1772547129050_0.02156178393970931","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-d958009-202603031429.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-d958009-202603031429.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-d958009-202603031429.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d0b156e7ebd97ee86aa6ed6e9f1af18f33524942","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-d958009-202603031429.0.tgz","fileCount":462,"integrity":"sha512-smbHNA01MPxWel7TuakhMw6UIcbpKnhCUkG77lpTfDU0B8gFvBCIcc2JeSL2Bu+Zn1vnaZjsOxChQNrUEcJQBQ==","signatures":[{"sig":"MEQCICTwfQmtPWXQ43xTdNW24uqAVM8E3lNq+KHUaH2yd1s1AiA8L+TD88cGysUsEuA3U2k/Xee9JpUmGWuhC+RlNF/zdg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37785508},"engines":{"node":">=20.x"},"gitHead":"d95800915643e7334b517dabbc9d6f8a30da924e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.8.3","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-b11c67f-202603031409.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-d958009-202603031429.0_1772548249801_0.06119043577911376","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-80b80f7-202603040927.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-80b80f7-202603040927.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-80b80f7-202603040927.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2f1942e09d3d0b682112692d5477843341c56eb6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-80b80f7-202603040927.0.tgz","fileCount":462,"integrity":"sha512-ALjXCibAe/cIrd4nsi69WhqSBRABAU4uf6Z0sV60GlXP88abZcl3d8hAK+qdHTuzBiDktNQG5+C/w2qxKSPNqA==","signatures":[{"sig":"MEQCIE1A8jA8VjLMIj57O2A1hPem7WVI+1rOjUQsA6Poss+5AiA1sTvNglzA9Ar0vZV2L3TcLqrMFz46RSAsVqiKzdF/GQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37786460},"engines":{"node":">=20.x"},"gitHead":"80b80f79d1272bd803392110d4942bd8d42c04bb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-b11c67f-202603031409.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-80b80f7-202603040927.0_1772616550248_0.37378135832781334","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-f279512-202603041230.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-f279512-202603041230.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-f279512-202603041230.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7ba0055cd3bd293f7d7c0bbf41a825477624373f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-f279512-202603041230.0.tgz","fileCount":462,"integrity":"sha512-MlBDiGtP39gQoPJDv24wrUI9AyvTCMN3g/gdi5NWpqMONhqekIs+HKJyWufaImc1Q+kPrl04ggFeT7vOHGjuXg==","signatures":[{"sig":"MEUCIQC/lbUJN4g1IOi5x+igna8rJTyYfsH+cGYK5VtExTrEBQIgEyLf426nOJqrSiiuQyNU3INx/wdUxXbTZKvwxNll+Qo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37855901},"engines":{"node":">=20.x"},"gitHead":"f27951290ead23438fe9213012709d028769deb1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-b11c67f-202603031409.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-f279512-202603041230.0_1772627512021_0.15827510216363527","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-262a406-202603042036.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-262a406-202603042036.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-262a406-202603042036.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e3224fd931a68f3b0bf4b82e213d2d0a21b5e96c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-262a406-202603042036.0.tgz","fileCount":462,"integrity":"sha512-83FNVz/7CuqcSucI6l6giIhcI3NhigVpRO55X1UdZHwHeWSzXbfpiGcJZzR2+l5ZxSTLRPNJfgzEetQaCL9L5A==","signatures":[{"sig":"MEYCIQD4M1ZmSP1o6RFbMExIrqnDrnnMtf3FlnD6AEI7RKVyXgIhAIELadxiQJ1ezFWyoZQKBAGAW+Xwr7Quad+d+Q8gPEFS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37859416},"engines":{"node":">=20.x"},"gitHead":"262a40613633e5fefb0001dfd65e4d772a630103","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-b11c67f-202603031409.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-262a406-202603042036.0_1772656734297_0.22251517595402426","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-d66318c-202603050811.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-d66318c-202603050811.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-d66318c-202603050811.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"29ce76a3cea80e9db08fdc0d10ad26d424d68d22","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-d66318c-202603050811.0.tgz","fileCount":462,"integrity":"sha512-VNAe2G16ClseJD0zvQcN4FBdV9pqBcd/sdtwvMiyxBTSOTbAeSR18mw0mAdsPB0TetHFlq8nQ+5hx+sP5hTxvQ==","signatures":[{"sig":"MEUCIQCF9Hx3tZ5TkmveALSiqwuyRwU3EZPqRmH/IVeHhO197QIgAPcfwvTKWddz6BN3Yr3xnC4ytr5K3xKgw0TgRb/lhsE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37861601},"engines":{"node":">=20.x"},"gitHead":"d66318cb093273a0743d55d2c52edd3b3d0ec442","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-b11c67f-202603031409.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-d66318c-202603050811.0_1772698417772_0.8269173432785835","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-5a6825f-202603051104.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-5a6825f-202603051104.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-5a6825f-202603051104.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c674de50429ad7c5a73921f8cf03edbef1def9cf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-5a6825f-202603051104.0.tgz","fileCount":462,"integrity":"sha512-cXozX/nVA+v56BVVSFYObVOD9Bdsz0kbQsqnraql1qojtsnAF3N2XvaTEm4p8jKMlAKdtpFTFfF6fnTPx74IhA==","signatures":[{"sig":"MEQCICCsK8Uaf5epVMwHFrKerOXzL41KUZ2ETGvVf+Q+z4ziAiB8fvJXu8gt5j2PgyDDOBJEOLW274W1cy/iWus0Iqv5qQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37861601},"engines":{"node":">=20.x"},"gitHead":"5a6825f67f0f7298ec874f33000dd4b75f0c70f8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-b11c67f-202603031409.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-5a6825f-202603051104.0_1772708750506_0.14349764526107034","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-43dfb76-202603051351.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-43dfb76-202603051351.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-43dfb76-202603051351.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"959bbc15ed41059c5b1a2c20fe6ba29498df3f25","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-43dfb76-202603051351.0.tgz","fileCount":462,"integrity":"sha512-rFLWdAW7ew9FkOpC5aZPSxYVStZHYZGLmTzVi7AFd62h0JuaWmHJ1IKtKzGpyNZqxE+47/mVN1t2+M4YWlsSAA==","signatures":[{"sig":"MEYCIQDqVl3mfi8lVVTusgHPVr0q/ZPzWTkuZYfJm62dZg7AuAIhAL9MdVjsruaIsWVtAxqJylaJgMBr8haHc8B5HkTtq5s5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37861607},"engines":{"node":">=20.x"},"gitHead":"43dfb76ebd36e1d4897e00604036ebea568a9586","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-b11c67f-202603031409.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-43dfb76-202603051351.0_1772718797826_0.8993157960167615","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-acf04b8-202603051559.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-acf04b8-202603051559.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-acf04b8-202603051559.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f2c52878f562a4919597a4bf84e8eefebc20d201","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-acf04b8-202603051559.0.tgz","fileCount":462,"integrity":"sha512-0TEj/kx7f/xcNAb7D3TYcHc0X2DJeh7Q0WIIZhfbD0E+GHE0s0jcvhTpl9XLD8Zz5fEGDDUSj+guFl8ChGeX1w==","signatures":[{"sig":"MEYCIQCghd1mV9W0lkA2e//SrEsrltATo31Y/x3ESHFZNJnfXgIhAKZ2vlLSd1jDJ4RhyuTLOZmWx11OpV4D/irPZxWYxphC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37895182},"engines":{"node":">=20.x"},"gitHead":"acf04b8c1fdbc1a307eaf7875e0fb009ddc801b2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-b11c67f-202603031409.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-acf04b8-202603051559.0_1772726447998_0.6217985149201624","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-5ab6e21-202603051745.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-5ab6e21-202603051745.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-5ab6e21-202603051745.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c1776b3c3d80f333a2c3a7c5714c272257e9446a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-5ab6e21-202603051745.0.tgz","fileCount":462,"integrity":"sha512-+b2peee2Msde2UEcpy6nTW7hxZ3+bXrSpllGA+QKGgZjszO9gJP/iij9h697/enQQ85/NTr9WXpJy+uVdp1TWA==","signatures":[{"sig":"MEQCIBe5OkYpcfB7PcLWirwoo82AvneIgYOm3gIG4Qs5MWbkAiBSy4zDk3OZ8J8iwHcfM43ny6cu7nOg9WsZPc5A2xKz8w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37959156},"engines":{"node":">=20.x"},"gitHead":"5ab6e2197411f69870de081ae2099c615b05f5a7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-b11c67f-202603031409.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-5ab6e21-202603051745.0_1772732872723_0.23717561259514297","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-5ab6e21-202603051807.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-5ab6e21-202603051807.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-5ab6e21-202603051807.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"60f809d7eea6a9050f4558af35d87b6ffa519faf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-5ab6e21-202603051807.0.tgz","fileCount":462,"integrity":"sha512-cU3MMUNvAJwCkBM5/fodVDhrf0cJ0BMJPEz0/I1lGpcweA5k8PlSTeMKGTt0UIgP2cWfHEgra2ZfGRiegqex+A==","signatures":[{"sig":"MEUCIQDo1a4bjPrOEFl4XfzlParTi4/8wjH/R8do3OqpKw5ttAIgAmgAIA50C9HQ05pZ6RMSvAqqx0xb8EiJloUtSV8qgPg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37959156},"engines":{"node":">=20.x"},"gitHead":"5ab6e2197411f69870de081ae2099c615b05f5a7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-b11c67f-202603031409.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-5ab6e21-202603051807.0_1772734166368_0.43144135294623576","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-5ab6e21-202603051812.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-5ab6e21-202603051812.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-5ab6e21-202603051812.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e1fdc8dd051598d1a40a3f2bc38986f511c3c6a5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-5ab6e21-202603051812.0.tgz","fileCount":462,"integrity":"sha512-26/q+U3iiw6ZWScw4qfHe+69zuLWhaYsiMOD71iAsYrj05s+K4pnkYHJtkMsZN13cCKWxVftUV9YP2wuI+4dfQ==","signatures":[{"sig":"MEYCIQD88CA3poA4ON8D4bzlSZouYhuiHXW5USqnEcsVgTuHPwIhAMAnb8L7ph8fJIXGiDDoE3K8tHmdY8QAkdm23y7PgLlD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37959156},"engines":{"node":">=20.x"},"gitHead":"5ab6e2197411f69870de081ae2099c615b05f5a7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-854498e-202603051811.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-5ab6e21-202603051812.0_1772734425520_0.9978667049454537","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-5ab6e21-202603052157.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-5ab6e21-202603052157.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-5ab6e21-202603052157.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7e9dd662a42e85340b706df7e2035cf13a0bd58b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-5ab6e21-202603052157.0.tgz","fileCount":462,"integrity":"sha512-lbvwU38m3d2R7+RDfznukVYevu5ugxKXpdqHRykxt6RNY7P1lkm4+biAHumR/AuYfNMEFOeyPfg+3I5QsYPzYQ==","signatures":[{"sig":"MEYCIQD+7n/kgM7+Jvajr8aOeweHiyTfm1tk4a8xkR/KCo+igwIhAMC0rO8NMgeNMkr4nuLBNc5Sr470QhDf5bfrdDuGijj2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37959156},"engines":{"node":">=20.x"},"gitHead":"5ab6e2197411f69870de081ae2099c615b05f5a7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-854498e-202603052156.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-5ab6e21-202603052157.0_1772747946005_0.9836177115508138","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-83bcae4-202603052200.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-83bcae4-202603052200.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-83bcae4-202603052200.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7c686cd2856be7e8dca936b52d096e9507e9a6dc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-83bcae4-202603052200.0.tgz","fileCount":462,"integrity":"sha512-Bia2+JgmYhB+Tr70WBZJKGKXQ/4Z3bi3xBEcoH/BMlM8wQ5Pfs6uBeyofdutJ+bWIy+nyqkRZku+9BsjplPL1g==","signatures":[{"sig":"MEYCIQCRdUHwamHtzMxPLPOli21Sb1CHgPZxFI7JEgNUQSMHbAIhALMI6qwJimm5rPmzjVdhjre/EHMHGKbIDnlvK8Eg0tWS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37959156},"engines":{"node":">=20.x"},"gitHead":"83bcae4484924612227c6a440d0a1b8cc37383f4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-854498e-202603052159.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-83bcae4-202603052200.0_1772748127086_0.8624850882447932","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-83bcae4-202603052209.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-83bcae4-202603052209.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-83bcae4-202603052209.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"14aed903c14bd0dfeb6063c80f03077c3d612b4e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-83bcae4-202603052209.0.tgz","fileCount":462,"integrity":"sha512-00nsIXBP1F5291BL7Q9kAkuCw87WDbSq4jANARLaIZJSIQ5VzLxtJxeeyaZEIP9XkR8DaZjnXJ34wWoAjKK8Zg==","signatures":[{"sig":"MEUCICVQQDMTpn88KDswSQHezQlBbo+aarW8lrHUIGLdWSWXAiEAnbztf0fwrzEnBG+ABmYwDQi+ji1FvtcNgVCiT8rLGo4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37959156},"engines":{"node":">=20.x"},"gitHead":"83bcae4484924612227c6a440d0a1b8cc37383f4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-854498e-202603052209.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-83bcae4-202603052209.0_1772748699040_0.8697337198234438","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-83bcae4-202603052215.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-83bcae4-202603052215.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-83bcae4-202603052215.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8103dfc06a0081ac69d7df76e7667893f2f0c0ff","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-83bcae4-202603052215.0.tgz","fileCount":462,"integrity":"sha512-Y0/eEcmaDrkkjPkPN16uji18CZVXpJtQXUmwWRT4zW3AaQDVnii9YyrfmlNj3DSpfWxrWBd39z1igPfZbL8Rng==","signatures":[{"sig":"MEUCIEcWfIHrk1Ju7L0fcahrDldqLAniRXklfXwdeaTwlv9EAiEA21Cs0q1eLTtCWReCFiC8zV8Lo9oxg4rlVbYpTlyNAW0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37959156},"engines":{"node":">=20.x"},"gitHead":"83bcae4484924612227c6a440d0a1b8cc37383f4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-854498e-202603052209.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-83bcae4-202603052215.0_1772749030880_0.3413011844486098","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-177fc53-202603060629.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-177fc53-202603060629.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-177fc53-202603060629.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d111f0a82f3bd11aa8e87bedff390e4911424b2e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-177fc53-202603060629.0.tgz","fileCount":462,"integrity":"sha512-1UMNprKZek9mUFBPzoGzKWJVdE4K//J1UJuBQI1vEmmHYGXFQupREsbhTaxLS5Z4Ytbdd3eCn9LNNbQVuhd03Q==","signatures":[{"sig":"MEYCIQD4aG2qjKoDIVJ799MqUHEFUitWn/eQyafz178SvtjmNwIhAOUqTyCoU9McNKuJgJUB2F17b3qU+Rfs34tBskMqwI9J","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37959156},"engines":{"node":">=20.x"},"gitHead":"177fc53f5e775c0d02932e1d8a016e73c29bab72","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-854498e-202603060629.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-177fc53-202603060629.0_1772778692758_0.27125488758170424","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-177fc53-202603060631.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-177fc53-202603060631.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-177fc53-202603060631.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"adb4c48bca8bc4c0b2dd5779dae941ced433d66f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-177fc53-202603060631.0.tgz","fileCount":462,"integrity":"sha512-NwNByTJBY/GxKhSUsmDIu6IaEuyFOfqQT5QTm4zNtDQ8IUg3+jsnMwjqZaeZliOSwHzd40dHL4u0Lgq/3TZM/w==","signatures":[{"sig":"MEYCIQDMOGxGNQ9H1I01SaM0s3m7WjsdUA2lKieNMBQQO4Ov/gIhAIgswqT9J7qnND04/oKDPZ9+0RMB2v7xxFhzxnxpx/+/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37959156},"engines":{"node":">=20.x"},"gitHead":"177fc53f5e775c0d02932e1d8a016e73c29bab72","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-854498e-202603060631.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","node-sass":"^9.0.0","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-177fc53-202603060631.0_1772778816975_0.794143217093987","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-9216c01-202603060925.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-9216c01-202603060925.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-9216c01-202603060925.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8c83c0efdb539386c16d0f2769c0a21819399cf5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-9216c01-202603060925.0.tgz","fileCount":462,"integrity":"sha512-ARKMcNbwHU2d4uRwY5/LjNWmhKwQdUJoE8hvJiFIsqXUn9VAkvL3/4RMTuRpzyy6kT0sdAcYGdPtYWoNbaWg/Q==","signatures":[{"sig":"MEUCIQChCUzdlmc+z1H3ChGtSODdjTML9NiYmMy+sWjb8i9tQwIgTfCgtP6giCrc6HLP7syefJ8S1DEMikCMGSczAhKMHjA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34823591},"engines":{"node":">=20.x"},"gitHead":"9216c01f20d9380c7203b89ee1cc37cdcfbfd192","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-854498e-202603060631.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-9216c01-202603060925.0_1772789234882_0.25613494114279023","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-9216c01-202603060939.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-9216c01-202603060939.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-9216c01-202603060939.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fe754be920ecbbb2c4f961fa697c964358bff735","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-9216c01-202603060939.0.tgz","fileCount":462,"integrity":"sha512-8WBWwsUywawZcJpbJCe3dhNJxdvKUghi9uKOOUl8O8QRNH3BpjJu/MKCmZYgEc6OfSpm+g01OZkcg7Rr9S07ww==","signatures":[{"sig":"MEYCIQCReFEHdIXzR4HIJKEdCj3E8EC4UrydG871kmqQTgxPHQIhAJkbRt7RWKBocqKrfJ3iXPl7Ow7uQKzWlSdqyFrGptqg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34823591},"engines":{"node":">=20.x"},"gitHead":"9216c01f20d9380c7203b89ee1cc37cdcfbfd192","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-854498e-202603060631.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-9216c01-202603060939.0_1772790040197_0.004441143084546573","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-9216c01-202603061036.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-9216c01-202603061036.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-9216c01-202603061036.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e6923c84145457b0b6ba0178124e255defe038e4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-9216c01-202603061036.0.tgz","fileCount":462,"integrity":"sha512-ccrVUjffyZ7lbGxAX45tHSHYjFnSdROF1yx2s4YW+VVtSgJdg7+E97aNdZOclV/yS1ye183vp7DP8Wmq0bNCvA==","signatures":[{"sig":"MEYCIQCU5mGVjQllz9jCKQtDF6au662dRFXq+QQhIUhLd5KkvgIhAOyvAA/rQUOzmzc73Ks2ESxy+oMNIP/dsiAKVeuPuFEU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34823591},"engines":{"node":">=20.x"},"gitHead":"9216c01f20d9380c7203b89ee1cc37cdcfbfd192","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-854498e-202603061035.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-9216c01-202603061036.0_1772793470977_0.21527571385099087","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-c8dedce-202603061540.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-c8dedce-202603061540.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-c8dedce-202603061540.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"072dfe49c7c582d7b5a9d77c4cda06c93f8f73f3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-c8dedce-202603061540.0.tgz","fileCount":462,"integrity":"sha512-K7xvx1+V1HQSq0/9pBKWBxdHAIq70bvDqXT1VK4K5SBI7At5htN20+eb6sm9/kstFW7/3cuD7YjH3Gq0EpJjOA==","signatures":[{"sig":"MEUCIQD7LPoVajwDGnhh8475xMy2sJcR4a/vH+/hSo6peKg3nAIgCLYdti6HszisUhZAiTRLFMZNrplZO5BdqDZWbGMNs6s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34823591},"engines":{"node":">=20.x"},"gitHead":"c8dedce7d08e9613a9a970b2534302eceed1f3d7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-854498e-202603061540.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-c8dedce-202603061540.0_1772811742794_0.43790198962525806","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-c8dedce-202603091032.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-c8dedce-202603091032.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-c8dedce-202603091032.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d2642aa5fe310276c6fe13a9595925d306671d2b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-c8dedce-202603091032.0.tgz","fileCount":462,"integrity":"sha512-Q3khYX+35shTb2p5CuCIDLXNG3ptNhAbMmD05j+HGnGSnF6Wifj4Yo51rQdmjufqSFaRz9MA31IYC5x+69q12A==","signatures":[{"sig":"MEUCIE6pJPSTzycw/d2od1py8x7kBL8G1etMXDbLHWYO0sBFAiEA5DR2C+gWBrsgLY4xBdc43CrON3X3XtaeQ3XaXDW1+tY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34823591},"engines":{"node":">=20.x"},"gitHead":"c8dedce7d08e9613a9a970b2534302eceed1f3d7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-854498e-202603091032.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-c8dedce-202603091032.0_1773052451423_0.2761420105745642","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-c8dedce-202603091140.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-c8dedce-202603091140.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-c8dedce-202603091140.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d0f31973a4235abd26c96251e58b6f1950f37c9f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-c8dedce-202603091140.0.tgz","fileCount":462,"integrity":"sha512-DZUW2K4/IS6BF0DyVHIjozs1JeVShebHdtys7mAyy6jzIwrDEmq0bAfrnP33SryD8aQfrCCMw29G5mWA+Xwfww==","signatures":[{"sig":"MEQCIExB0l6aW14ogJBXyxZiCSCAgLaH9lXHFRCSfFwawm4NAiBiO7K7Ouby4RRu+RWtECz4mHBZ6vtbo9aLehlxChz2cg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34823591},"engines":{"node":">=20.x"},"gitHead":"c8dedce7d08e9613a9a970b2534302eceed1f3d7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-854498e-202603091139.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-c8dedce-202603091140.0_1773056518485_0.38460940782614617","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-c8dedce-202603091146.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-c8dedce-202603091146.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-c8dedce-202603091146.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7a3cceccb343d4f85f8ad1a9607e4323017441bd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-c8dedce-202603091146.0.tgz","fileCount":462,"integrity":"sha512-OEW6LKzwAIwNTg2olFA9/w5HzKl1HUPhkJAiZiPdv5/bKnBAvHUOUPa6cZogpq+IWPD7Jmp6/YXNO1nn0TcyfQ==","signatures":[{"sig":"MEYCIQDRJ8+RL3QnVqJpGPZjVRWaSUT5rx8/bkJvarRTg1pwyQIhAKSMnZvlKyZ1SYgIEFRdioLrO7h9buTr+bTYY0PeewBP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34823591},"engines":{"node":">=20.x"},"gitHead":"c8dedce7d08e9613a9a970b2534302eceed1f3d7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-854498e-202603091145.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-c8dedce-202603091146.0_1773056884515_0.6753106956716279","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-c8dedce-202603091154.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-c8dedce-202603091154.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-c8dedce-202603091154.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3458c5f2203c43bf05fe57185384fb1d3fc19445","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-c8dedce-202603091154.0.tgz","fileCount":462,"integrity":"sha512-dHN2GeZ6Qe6nVQ1Cz7K2NhzEIsRaoO2Hgcf5+alrTRFzF0tj+LGRnKCyJdobqmZb/06sMmlRhVSjZbrdR6MJiQ==","signatures":[{"sig":"MEYCIQCjwIWgECaMyDscbyIOGpdDslBWX37UYCcBxFDuVmy9QgIhAORGxHKfpIa2oItaZZF/ZgKQo/jMCeusVG1r6H9ltp0J","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34823591},"engines":{"node":">=20.x"},"gitHead":"c8dedce7d08e9613a9a970b2534302eceed1f3d7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-854498e-202603091154.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-c8dedce-202603091154.0_1773057399227_0.6841641176496318","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-c8dedce-202603091205.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-c8dedce-202603091205.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-c8dedce-202603091205.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"419fad541179e8e35c9410261fa994d056dd5ed6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-c8dedce-202603091205.0.tgz","fileCount":462,"integrity":"sha512-u67Xu5befEtoDSIgw5e4tgA6e4gWcL8R1++sHPOEmq18NTckCYJljU1wA6ZCfowYKFtQPWCz3TD4+eYnxh8HdA==","signatures":[{"sig":"MEUCIGiVP+l0DnnvB8pldpFSCtxeyF9UawGxZYktOZY1eM9TAiEA4IMl6kSHVG3ogQGlWnfisj4UDDBdwAdNSQq5nA5+eA8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34823591},"engines":{"node":">=20.x"},"gitHead":"c8dedce7d08e9613a9a970b2534302eceed1f3d7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-854498e-202603091204.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-c8dedce-202603091205.0_1773058016209_0.8196723325777782","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-c8dedce-202603091214.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-c8dedce-202603091214.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-c8dedce-202603091214.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4f25275afb30ae20be634526f8ca3b9e69199aca","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-c8dedce-202603091214.0.tgz","fileCount":462,"integrity":"sha512-uREByq4Oex1j+40y5+6MsUxtJhZ2Rnn0QvsFgbgsWWopbeXJu/l+o7UgGzNLQWueJI6jQC4LkzmWDsmeaHPeMw==","signatures":[{"sig":"MEUCID71ztNwavJbpZQdLUwAgOMEztCQCn9FC4aRbIkb/wOQAiEAgpJE6Uagd4VXY4mVOygmY73gRHRpD5K9xIB2K33glZQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34823591},"engines":{"node":">=20.x"},"gitHead":"c8dedce7d08e9613a9a970b2534302eceed1f3d7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-854498e-202603091214.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-c8dedce-202603091214.0_1773058582935_0.8439055955221804","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-c8dedce-202603091218.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-c8dedce-202603091218.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-c8dedce-202603091218.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a565e966efadc656b32420d19e47462fcfdb85ec","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-c8dedce-202603091218.0.tgz","fileCount":462,"integrity":"sha512-gTwqN174MMaEp9gFnSqszKkGA/oGdT0HklgkQN+sHIgI80/B92OlTsY+UNXybTQ/AFGMuLxwUazpg6KRQqKrSg==","signatures":[{"sig":"MEQCIF+f/xBIEozBlbAr9MlJfI2deAYzbJlqYi1ZDXeVDB1OAiAYlFwL0FvaqZfKAH6enWrYSPBu1/sMgzDwPmSaS5+PuQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34823591},"engines":{"node":">=20.x"},"gitHead":"c8dedce7d08e9613a9a970b2534302eceed1f3d7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-854498e-202603091217.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-c8dedce-202603091218.0_1773058791713_0.443075626977818","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-c8dedce-202603091300.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-c8dedce-202603091300.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-c8dedce-202603091300.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"19aafa84993d46865a5e25a4f87390ee6dd719d7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-c8dedce-202603091300.0.tgz","fileCount":462,"integrity":"sha512-d7l+4PYak05DWowo6K7b6ED7n/xVdnjUJ7bK8iW7b2JqAUZ8HLPHqHspkmvVERhQ8CnA3CvGjheMfb2+CuzEEA==","signatures":[{"sig":"MEYCIQDUFYWBYzy9ifrRYZaOYJE8qHRlwlHh6/LnzlZunNhZBAIhALu0sj5RrvUb3GJtqDyF9TtPCq4l0SwgHUUyBDvbcjbB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34823591},"engines":{"node":">=20.x"},"gitHead":"c8dedce7d08e9613a9a970b2534302eceed1f3d7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-854498e-202603091259.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-c8dedce-202603091300.0_1773061347997_0.31915050516856747","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-c8dedce-202603091311.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-c8dedce-202603091311.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-c8dedce-202603091311.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dd0a7c73e6b7e393d9b05d277eed4a4afe35d58c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-c8dedce-202603091311.0.tgz","fileCount":462,"integrity":"sha512-tyHSEEDnFmdNLh+zF6vhu/coLzIl1CrtZD6L00PYokQW5635U1eRMACCxyRGI8H66MjJt1uD3/mrhJwFEWq0Mg==","signatures":[{"sig":"MEYCIQDxINKQMvsHMGLQ25fCqubMVsCJ5SBheKMwfEtSWHc+gQIhAIYgz2h8tL45HYekSuVzaHqA5CYAD7Hwa6YerjJbwyDt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34823591},"engines":{"node":">=20.x"},"gitHead":"c8dedce7d08e9613a9a970b2534302eceed1f3d7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-21826b6-202603091311.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-c8dedce-202603091311.0_1773062002901_0.6484731864571751","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-fcfbdcc-202603101033.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-fcfbdcc-202603101033.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-fcfbdcc-202603101033.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5a88d9aedc3240669b8ea1f295824fdd661728e2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-fcfbdcc-202603101033.0.tgz","fileCount":462,"integrity":"sha512-2kCHXH4xvXH3JKmRDM1jInN+YbUJoxbXe2RSDb0F3qSqE8LbouyY/QON0ah6qh402GPVo8l/cY2iXCnqmGQ0kw==","signatures":[{"sig":"MEYCIQC7/IZwQ2Spy5CnzpOIvjeYjARShIPXsjG0pMPo2zEWDwIhAM8EBqvR1WUU/3x5wSgseg1tXRt0a1hD1pLWMYz5OqVf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34827048},"engines":{"node":">=20.x"},"gitHead":"fcfbdccffe041159e75fa6bfb4bc6f04e63513cf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-21826b6-202603091846.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-fcfbdcc-202603101033.0_1773138910982_0.12228861957763693","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-784ded5-202603101128.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-784ded5-202603101128.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-784ded5-202603101128.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"006b8b4cdee67bd78c2fd95faac9fa903f02117e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-784ded5-202603101128.0.tgz","fileCount":463,"integrity":"sha512-MVi0kT9XJPs/5yPlQ/npZwAKV5fW1vVYpMAaqYfNqkmPk5uBtIK3QNMaYCDqeRdGd/RFD96e4e+u7ii03oHnyg==","signatures":[{"sig":"MEUCIQDFClIriPArfq1xLtCe/OE6eatpqz58dFmHfEIUNzZSfQIgXzhnZdpQhQImOrihf7j/uSt2tNvfBBdPA7frQwtssdo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34830406},"engines":{"node":">=20.x"},"gitHead":"784ded56b2b34452f7f2bc4435e884ccc4ef8759","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-21826b6-202603091846.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-784ded5-202603101128.0_1773142184615_0.3775118211969044","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-6508364-202603101148.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-6508364-202603101148.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-6508364-202603101148.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a0c6afa8ba04675946d87605fedea4d94251e591","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-6508364-202603101148.0.tgz","fileCount":466,"integrity":"sha512-56BM77IRucKJ6p68tMRY3iV0tgRdqFSqSwKVpUlhRz3Uad6PDqLP67JMAI32a3jDinbukQ2HEzwHGR77vYGdQw==","signatures":[{"sig":"MEUCIQChqe5Qw1CVq9Y9EYLXZ5ojhx/bxSJRPHQUDTdEPyyMcQIgIR+nvr2mMy4yfLTMFVyb1O2jolxq7jkpJwhKyeLUj/0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34837205},"engines":{"node":">=20.x"},"gitHead":"6508364c64390af20325eae70bdf5042e2a3d36d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-21826b6-202603091846.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-6508364-202603101148.0_1773143416664_0.17391391924891542","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-acf3666-202603101542.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-acf3666-202603101542.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-acf3666-202603101542.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0ebd7628a9e7ff1ee471819be13ae49b66d45ed5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-acf3666-202603101542.0.tgz","fileCount":467,"integrity":"sha512-888Gdl2p7Bem+6nbgnZ4PCUQsviX8sYpjmLo1HnaK2bKGsnq0yra00sLufR5PC375Y00Qo7JqckIjng0dvzlDA==","signatures":[{"sig":"MEUCIQDU19q9xLJqw7F0lsvJpMS0Yjg3mUZZvgF4l678GHCPnAIgTiiXy0eexibEV9e4WIWnJBmmU2FW0yLfDLlx7wJn/yw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34837349},"engines":{"node":">=20.x"},"gitHead":"acf3666c8a2a76dc05a780a7a2d266d2828d91e5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-21826b6-202603091846.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-acf3666-202603101542.0_1773157479237_0.5085172990648259","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-acf3666-202603101805.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-acf3666-202603101805.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-acf3666-202603101805.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cbc2e5cac96fd27c9d9df1233755ac35a120d6ac","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-acf3666-202603101805.0.tgz","fileCount":467,"integrity":"sha512-At28QmhrqCKZ676AdanOM07jGVV0d2YlNwWFFNHqTHpKM4fCA8GYd69R/jGPTZMn2ahIMQW/CM3SH//58e2LgA==","signatures":[{"sig":"MEUCICr+z26OXG1Z16D7M3ymea3qgunY6rFjq3PECJrL5okKAiEA2i5/8TanCmjNuqjym82xR/JT3vxnTJWmyQ/qmIVA0SM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34837349},"engines":{"node":">=20.x"},"gitHead":"acf3666c8a2a76dc05a780a7a2d266d2828d91e5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-21826b6-202603101804.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-acf3666-202603101805.0_1773166024494_0.1857094072553298","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-acf3666-202603110645.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-acf3666-202603110645.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-acf3666-202603110645.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bc1e9f0300460b8751e23ddbffbdd484e97a9c34","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-acf3666-202603110645.0.tgz","fileCount":467,"integrity":"sha512-lncJg2lyEi0taGw9b/UyZaAc2o2Uyvu7/64ag+aJopSk+KpzC0aeNTRS/fuULeEnkurb4MVENP4MM1tbpYLuMg==","signatures":[{"sig":"MEUCIQDJSc/hfF6TmfNsOpo8Hk6q7DmHon7SWliwh+AxAIl4zQIgaIL8nHlhWRRgw1ONBfVKpEDw/7Usa/9IyWWp9vkfIbU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34837349},"engines":{"node":">=20.x"},"gitHead":"acf3666c8a2a76dc05a780a7a2d266d2828d91e5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-21826b6-202603110644.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-acf3666-202603110645.0_1773211611901_0.4269100025366679","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-b0b5cdb-202603110925.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-b0b5cdb-202603110925.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-b0b5cdb-202603110925.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dddca8a169f43ce0a775bbcba6bef88095d06ae0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-b0b5cdb-202603110925.0.tgz","fileCount":467,"integrity":"sha512-1IjD8ePJacKdNId4JGCgHHzgd16MTduB8QhqyiACqGTNXQlyvk7YbQvpMHTpBrDD4h41ELUXgaYPTK1GXEpFjQ==","signatures":[{"sig":"MEYCIQCEaYkecapYmIGlZKP2vOMilUbqIoihBycTtongrV/NlwIhAPQz2Braqx4y/In+fNdV8U7u3SE+zynbaC2HMGU9LY2f","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34838107},"engines":{"node":">=20.x"},"gitHead":"b0b5cdbec0b4e0084f51bd715add93a395853e94","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-21826b6-202603110925.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-b0b5cdb-202603110925.0_1773221250474_0.08194624549592655","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-b0b5cdb-202603110929.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-b0b5cdb-202603110929.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-b0b5cdb-202603110929.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"16e1a159b0c5a0e1c5b42f3e3990a99a20ae9ea4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-b0b5cdb-202603110929.0.tgz","fileCount":467,"integrity":"sha512-i9tef3eBJr0JpmKqvrTIUHWkw/k783Cf02nQNP3Sx6HTbBMbtwBLCF/Z3V5zupTCJgYsjFsDzqK+0T6Rkeq16g==","signatures":[{"sig":"MEUCIQC5FH/v0Oi1HKI+ZYEtgrapCsCR34gm01JZdxGecvL1FwIgej6Vetzbph+K2F0ANcXxCztpyjgHT8tRHyERfvh6Ehc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34838107},"engines":{"node":">=20.x"},"gitHead":"b0b5cdbec0b4e0084f51bd715add93a395853e94","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-21826b6-202603110929.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-b0b5cdb-202603110929.0_1773221479073_0.15477501562399554","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-b0b5cdb-202603110945.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-b0b5cdb-202603110945.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-b0b5cdb-202603110945.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"60cb7d347b589049a43d68d48c5e3456e74a3618","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-b0b5cdb-202603110945.0.tgz","fileCount":467,"integrity":"sha512-sR0gP0aX4Phy9dclAo1uOgfjobJRaJYQsf1zuzdHf/OhImZlXKehDgZTtUDuxHG+UZY4ABsG+H70UvYDTpLQ4g==","signatures":[{"sig":"MEUCIQC2RlKE7Xum1ECcxnCR/Cs2sZaaSLcURgWKoF3I224TqwIgAbgaf8fgXvzhrfK1jxOr8oPetfIp/INIIlHUd9erYeg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34838107},"engines":{"node":">=20.x"},"gitHead":"b0b5cdbec0b4e0084f51bd715add93a395853e94","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-2e61ec9-202603110945.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-b0b5cdb-202603110945.0_1773222450963_0.7952787334135292","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-28b9c33-202603111049.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-28b9c33-202603111049.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-28b9c33-202603111049.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"179c9d5a92316ddbaf25b5b5d583b1b00545f2a0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-28b9c33-202603111049.0.tgz","fileCount":467,"integrity":"sha512-XsIDFuIOd4aGNuud4kqlxSVxhCaDTNYGeGth7OLTmCRtgtiJLoAJKtAS5Ssbi2e9RP1VHSOpW8PacVsMJgUhqg==","signatures":[{"sig":"MEQCIBYgyZhOjjS9x1QkRtXUf2iNHdumTcz2harca7RhI/dAAiAw1QpayvWOVTCYCoaJ+t08EvRijZbZGN/hI2nN35AJHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34844166},"engines":{"node":">=20.x"},"gitHead":"28b9c3336534c525a51de1800e81b966853eed16","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-2e61ec9-202603110945.0","@node-saml/passport-saml":"^5.0.0","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-28b9c33-202603111049.0_1773226275290_0.10275479749517857","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-01b0ac2-202603111141.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-01b0ac2-202603111141.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-01b0ac2-202603111141.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bb07c9231169783f335bcb16c27e898cad6d8677","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-01b0ac2-202603111141.0.tgz","fileCount":467,"integrity":"sha512-C4W3H470LlFY0uTAUcxTf3umKKVkdKNr45x+BHebquNo0P6inJ1Qu3FTKjIt6DO4G+ZxFFjbxvX+ScQy/32PjA==","signatures":[{"sig":"MEUCIQDJcpTIce6L2BE2YvR2bxR2iS9CHy0l5E1ghxWi2KoLUQIgUB8I2O6gufVjreit1dZm/B72Xqx7VewuiMVjk9xAoQM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34818539},"engines":{"node":">=20.x"},"gitHead":"01b0ac2797ac50b81976dbab98a573adfd71e016","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-2e61ec9-202603110945.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-01b0ac2-202603111141.0_1773229410842_0.43479224521407467","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-fd66ea6-202603111535.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-fd66ea6-202603111535.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-fd66ea6-202603111535.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fb2abd9cecf9c354f00ef6fa55af18daab92c84d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-fd66ea6-202603111535.0.tgz","fileCount":467,"integrity":"sha512-Zo0E34S7lILDDXohk7IbO33LeqldDQ1PriPIITDy44xmZ6GVq5dq2YRYYdTNPAp3g9ZTT0l1SHX+rm7eBSCsWQ==","signatures":[{"sig":"MEUCIHtMele5iVov6dBmACCo81aBaaRDxFejNP5urXrwjR+4AiEAnrgkn8lL290TUSDwJgEuX+/HLr1VpPb7FOkbdxoAyms=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34818634},"engines":{"node":">=20.x"},"gitHead":"fd66ea6b12d3bd5aa72639aa8fead43e2a532493","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-2e61ec9-202603111534.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-fd66ea6-202603111535.0_1773243444126_0.30654613153739296","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-b8b483e-202603120959.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-b8b483e-202603120959.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-b8b483e-202603120959.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"874c91c8766dd0810cf19afd751c50f5d8e91bbe","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-b8b483e-202603120959.0.tgz","fileCount":467,"integrity":"sha512-j7+cjcbm1D0aVrN3AePItdvJVGNrsi4/CKIxrjPdHVqUe6kKd4M+rT8pNGDVLOcCLT4qfuy8191cLA6lENwutA==","signatures":[{"sig":"MEUCIQDYoxF75m1Z3t+9aYSrsO5RFGxO9meR9rKVYiILjzYOswIgB0tK/gveg4ZDeNqxHMZrPGdOTQ6Rvs5ZRSGXgXjEFi0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34819988},"engines":{"node":">=20.x"},"gitHead":"b8b483e35676bb2031cda9ba1795c2372c1b438b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.27.2-2e61ec9-202603120959.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-b8b483e-202603120959.0_1773309683513_0.32735525692552603","host":"s3://npm-registry-packages-npm-production"}},"2.27.2-b8b483e-202603121029.0":{"name":"@flowfuse/flowfuse","version":"2.27.2-b8b483e-202603121029.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.27.2-b8b483e-202603121029.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9945fdc4397e4f26263d3c1f7a8a2dfdc9f26951","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.27.2-b8b483e-202603121029.0.tgz","fileCount":467,"integrity":"sha512-4QN/YdMJXocolRxVMQ13dBOdqMI+CJvsQnhPBOQ04kngL3x2VotSRri7SqpNvb4BP9cSIaMcBg8IYY4PW1OJrQ==","signatures":[{"sig":"MEYCIQCfp25cvce4/h27sKEM6eR+u1t2duESRCCsm0dEG4mn2wIhAODR2hHI8qbg9huBrfUFcG7zCmn5Al7VqGzuHSV+XWLa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34820211},"engines":{"node":">=20.x"},"gitHead":"b8b483e35676bb2031cda9ba1795c2372c1b438b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-f11c2d1-202603121028.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.27.2-b8b483e-202603121029.0_1773311465828_0.7582768583446786","host":"s3://npm-registry-packages-npm-production"}},"2.28.0":{"name":"@flowfuse/flowfuse","version":"2.28.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3db4ac569b66d419c72dc7a41f16057c158a0672","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.0.tgz","fileCount":467,"integrity":"sha512-rmJrWx2+lxh3Mv1gugr5K66JZECC4IiUwybMoV7l9Cl2cUlg0NuKEAI1smVAYcTntTuVISLyyBGJfhJFjjf7Qw==","signatures":[{"sig":"MEUCIQCDob00NtYKnhYfprupHqB6t4J2ws96HiIKsjksmYquGgIgJ8I96su/JsM+W2ilP+RhBuVQYB5jHGA3SzaTYmqxB5o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34819331},"engines":{"node":">=20.x"},"gitHead":"f8a465570306c9e3d50d9403a8ba716d3d0b21eb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"18.20.8","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"^2.28.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.0_1773312206943_0.5164787271121116","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-f8a4655-202603121056.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-f8a4655-202603121056.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-f8a4655-202603121056.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b23397efa70802bd73e9329ed38f07458b86a478","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-f8a4655-202603121056.0.tgz","fileCount":467,"integrity":"sha512-s8CxH7WumLSojEzSN4L15jb6yYQXLZfqrR7iNjVMtPN9Ms6ta7FBnV3pEBwuVp96tqR6hu17zSxDduKP7ZnnzA==","signatures":[{"sig":"MEUCIQCj8lEtB5Nl0ssfaapBgzGQhhTiIcyD3Ywqo8iqcLNP2wIgJeAx4PEYmUnveHOXeBIMu5AC1mtPU58oT2tL+UN6E44=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34822910},"engines":{"node":">=20.x"},"gitHead":"f8a465570306c9e3d50d9403a8ba716d3d0b21eb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-f11c2d1-202603121028.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-f8a4655-202603121056.0_1773313086735_0.08639887579359584","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-f8a4655-202603121627.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-f8a4655-202603121627.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-f8a4655-202603121627.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"900e93deef21247e8dc56043c21d815a4a6bce64","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-f8a4655-202603121627.0.tgz","fileCount":467,"integrity":"sha512-D5coDqQqkRdlzgDFkTqGW1kqC5UETFjF8nRnkkrPwAKqsNFjn2eMBM2Tc9DoXsvMz8WkoUW9UFDelJRa/RJZuQ==","signatures":[{"sig":"MEUCIQClVOxcwpuZ3+BXe3bOaSAeGwJsnYntLGghHOieEeH1+wIgF2INhgeb5xtZJj4+w5XI66mCr6l44y87E1OfMcNs41g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34823344},"engines":{"node":">=20.x"},"gitHead":"f8a465570306c9e3d50d9403a8ba716d3d0b21eb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-f11c2d1-202603121626.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-f8a4655-202603121627.0_1773332957732_0.2618133620980483","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-f8a4655-202603131026.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-f8a4655-202603131026.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-f8a4655-202603131026.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0598f08d4dbd774d2b82c3042b3702216da47778","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-f8a4655-202603131026.0.tgz","fileCount":467,"integrity":"sha512-kjNJGxXoGlwOXfz/lRbK0JQ5f5T4JXIHv7Tf7UQPgwJaxAsdQ/dLTKmMuU1goNgqhiogi5P321MxTE13qpnuxA==","signatures":[{"sig":"MEUCIQDcmxqZFL11DHECW4m3uAF3KG+YaKZkoF34j+cts4yjXgIgDdjaAgP07GtB2eSyp+Mrj1QhnsQzvs91TlQTKgVmm3M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34822970},"engines":{"node":">=20.x"},"gitHead":"f8a465570306c9e3d50d9403a8ba716d3d0b21eb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-f11c2d1-202603131026.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-f8a4655-202603131026.0_1773397693581_0.9262094972505004","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-f8a4655-202603131028.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-f8a4655-202603131028.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-f8a4655-202603131028.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ec1a4462f157bf313212eec7324b00fa3e765f34","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-f8a4655-202603131028.0.tgz","fileCount":467,"integrity":"sha512-zmkwvN6nSO3qOfzxEn+z3CpWns2gXuvqy314+8XDcn52bHFb3OQkRUNMDKXDfBjMDtH5Td58/qAdIMbF3DqOTQ==","signatures":[{"sig":"MEYCIQCFXG6l3W8TviIuEBtuF/sqaUz1RY6MieFAvDHkouX80gIhAPQuuT+lEXWmAiNjr48lvcKgUb8HUbr9uGxtmkD1+a4A","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34823333},"engines":{"node":">=20.x"},"gitHead":"f8a465570306c9e3d50d9403a8ba716d3d0b21eb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-98ad0b5-202603131028.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-f8a4655-202603131028.0_1773397830222_0.43874281677989857","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-1627d9d-202603131335.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-1627d9d-202603131335.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-1627d9d-202603131335.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"45551d49673612d0c68582f51383706f08e57c0b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-1627d9d-202603131335.0.tgz","fileCount":467,"integrity":"sha512-wNxR9XXWDWIBj7ZEMPJM/y4uW9HD6Am2RIr74udLGCwJ0eAZxjSmH0AbGd1E2E1GzfRw9jFHtQB0db9EVF8ktQ==","signatures":[{"sig":"MEYCIQD61sKltTnRF9aT1jvPGRfSRVnYau8aRxtkOuHiuKiECAIhAND3Yj02I3GYnydo1uXk0QxDcP5xdyQnCQIj/OE+oJLf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34822970},"engines":{"node":">=20.x"},"gitHead":"1627d9d7995ef51a7c7e75ab5aaee5a8fb0c716f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-98ad0b5-202603131334.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-1627d9d-202603131335.0_1773409034714_0.21438345791257785","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-1627d9d-202603131342.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-1627d9d-202603131342.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-1627d9d-202603131342.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4a6015ed3cf21d4995856d427330472ad4665f09","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-1627d9d-202603131342.0.tgz","fileCount":467,"integrity":"sha512-Kh5Zc7EVgLNK8h72T2awsASFT5LB8Don89F0/Ta7pEqjS9bnCujWxgW5He6kfeGFGqhhvSDfTrC7bs3Rz2IL/Q==","signatures":[{"sig":"MEYCIQC7PiM7HwxqUv07QS/m2ObDyHYhDp3oFAb/3NI8ovfiHgIhAMvAEERCBicpwXl+SVifCuefyjc8XoekXN0ZBwunVdq6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34823367},"engines":{"node":">=20.x"},"gitHead":"1627d9d7995ef51a7c7e75ab5aaee5a8fb0c716f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-98ad0b5-202603131341.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-1627d9d-202603131342.0_1773409446583_0.5458373405442487","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-1627d9d-202603131350.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-1627d9d-202603131350.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-1627d9d-202603131350.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"432be8f70d4fb569eb15ce30710682395348cfa8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-1627d9d-202603131350.0.tgz","fileCount":467,"integrity":"sha512-Sm8DqaFReVoJ6W6t0cy/vxoxZu/kUCiA3ywlPikowMjaCzioQO7G/+MxtJjZ8ZdLXOz0BD6bRAiTqHkEBkTAOA==","signatures":[{"sig":"MEYCIQCfshDgLlDjcEC2EnDvLKr5yipqYuL0yAtPMdx8VzdZMQIhAJvV54bWmtGG/auOxlwCDAFjM4tB3eZkeS7aeYUAWT7c","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34822793},"engines":{"node":">=20.x"},"gitHead":"1627d9d7995ef51a7c7e75ab5aaee5a8fb0c716f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-98ad0b5-202603131350.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-1627d9d-202603131350.0_1773409950777_0.5749623251761986","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-1627d9d-202603131355.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-1627d9d-202603131355.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-1627d9d-202603131355.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b5bde1f76bd2cfaff66ef477f21e7a0e5fdf85fd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-1627d9d-202603131355.0.tgz","fileCount":467,"integrity":"sha512-kCqzKTIhYOvlQ+AyKQsyna6ei+3VOitfwa+quLkYtfJbueDjNi4nZLZQym83EKo6G/H4WLVDFlY3AQaktwpsvg==","signatures":[{"sig":"MEUCIQDEH82MEnRnGR5XYo9xOxSztESULrrlfevpSRi0Kk0zsQIgTAgQ+/V9EWwluS9fMRgWCbzWwhGQq48qIuCoMKj1Byg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34823273},"engines":{"node":">=20.x"},"gitHead":"1627d9d7995ef51a7c7e75ab5aaee5a8fb0c716f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-98ad0b5-202603131354.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-1627d9d-202603131355.0_1773410227393_0.501039407033012","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-1627d9d-202603131553.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-1627d9d-202603131553.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-1627d9d-202603131553.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4886b9d51217039089cefa79a4bb6e27f5a262de","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-1627d9d-202603131553.0.tgz","fileCount":467,"integrity":"sha512-TBdn01dDD2+afAzGwz9pJzgopiNQ7M5vHRwSdAbKItHzpcWtKOHv3iyFCKAAME5sassYUvXASv40c0YrQhCHpw==","signatures":[{"sig":"MEQCIELTzvMTOTkwjAEKYkQWCkFEN3/NcSilwM0SKVv4HsZHAiAZALKan/mjd0Ag1LocuqEmGIvQ5//WYqsqQoqkERmJkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34823168},"engines":{"node":">=20.x"},"gitHead":"1627d9d7995ef51a7c7e75ab5aaee5a8fb0c716f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-934beba-202603131553.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-1627d9d-202603131553.0_1773417332340_0.3704238943935938","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-3c3b2fc-202603131602.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-3c3b2fc-202603131602.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-3c3b2fc-202603131602.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4d981c2ce415df4975a861302ee37a2431741965","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-3c3b2fc-202603131602.0.tgz","fileCount":467,"integrity":"sha512-ZoMxPKWOwjU5DX9k1TzaTjW8p9LNUcymH8V20lacX9l/q6Hd5aQ7SnsOTjZfScD75XzKmZLDMM7xlSwTo1k96A==","signatures":[{"sig":"MEUCIHwSk3scE4M2kiKLvJ7Ztky7IRUaex3k+uvoluoyHN/mAiEA7dV3CVjYxMa1C58ZzWgEbcDzYeyEQa3HndmlQivT03M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34823175},"engines":{"node":">=20.x"},"gitHead":"3c3b2fc46935c523f64695100eb4d7dae380b3f1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-934beba-202603131601.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-3c3b2fc-202603131602.0_1773417826676_0.3710954557860173","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-263cbca-202603141959.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-263cbca-202603141959.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-263cbca-202603141959.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d6cbe4294db2175c109894259d9fa2cd30ff93f7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-263cbca-202603141959.0.tgz","fileCount":467,"integrity":"sha512-uWincs0gLI6vX/LexENNzIBbWGQus5Ywy78srmHf5HIOaj49ZNF7krqb5H1PMZNSlbN5bAl95qvbEotDqtOoHA==","signatures":[{"sig":"MEUCIQCYtLK3pB9/KuP4nMzsGW16pKT0qVcKiLFKbnna7cjW7QIgGkJoPKpM0MMqwNk0Kt1x7Xa7Q8FdZW6d2CUA23ZocQI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34823636},"engines":{"node":">=20.x"},"gitHead":"263cbca4221672651ab2f7fe6978e6ed3835a848","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-934beba-202603131601.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-263cbca-202603141959.0_1773518490762_0.38981710964007155","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-dca5302-202603170935.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-dca5302-202603170935.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-dca5302-202603170935.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"576b44620994752b8e3bbcee870a9aa298c1b8a2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-dca5302-202603170935.0.tgz","fileCount":467,"integrity":"sha512-vazyEhW+N1l4mf5vR1IgWd3dgcPWvpky4dxu2tRz3uUFyMKvvp18URbXpswW6AGJ1Hjvc5Ql6BmSQWVQMjrfYg==","signatures":[{"sig":"MEUCIQCYv37Qj3/2Es6GcG9tZJz9XPpPM6vCUyFqz0yTevEiAAIgCVEsmjKmQ8vT8PinHNmCWtfd0ii+/XG33ncdr7VPW+c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34838099},"engines":{"node":">=20.x"},"gitHead":"dca5302bd18502b570211be66cbbb027e4376aad","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-934beba-202603131601.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-dca5302-202603170935.0_1773740231550_0.6754674499207138","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-afe6a74-202603171047.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-afe6a74-202603171047.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-afe6a74-202603171047.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d3704ad61e2601ea5a749af474440907e79b1d6f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-afe6a74-202603171047.0.tgz","fileCount":467,"integrity":"sha512-zxHqS4P0Xifmyn+10zbmn9bBXiSFZ0kc+gWz4rQ6vlkiKp7Z47oHyDKxhY2lkK2OGoExheS3aSiAy/yPlSn/Cg==","signatures":[{"sig":"MEYCIQDo7l514OT/tyt+2Fh1uU7ZrvGTBj9x+sNCoOzWRLfbwQIhAP2IlowFv4RusxS3whM2HZMY5hoOySkyAn3LyF3e7GG1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34838836},"engines":{"node":">=20.x"},"gitHead":"afe6a745aee5e2b4e21c8a1501d9d3a926206179","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-934beba-202603131601.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-afe6a74-202603171047.0_1773744549384_0.8714603622267627","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-e7f08d6-202603171355.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-e7f08d6-202603171355.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-e7f08d6-202603171355.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3f427b394f13e10e78a6bac78f13e487afc6f6e8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-e7f08d6-202603171355.0.tgz","fileCount":467,"integrity":"sha512-vOwNXJkhSNhJoQUx+nHFwCE2sNqk2nw1oowBFswHI5089hviFiJjVrHlVg1eC+CpjnvN6CmFypf1q1s0xavD6A==","signatures":[{"sig":"MEQCIBBF/xxaIwiyMF75Pt5sGKSsRHyjNaZUr4Q2oxL2s+OqAiBeFZLlVYKcMwkcq2VXQ2hF8xhAzgurSywMh6sDaLGAGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34836162},"engines":{"node":">=20.x"},"gitHead":"e7f08d6e90566244a1e8bbde986abe2449e30efd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-934beba-202603131601.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-e7f08d6-202603171355.0_1773755844163_0.24315560419981508","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-8ba182d-202603171515.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-8ba182d-202603171515.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-8ba182d-202603171515.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e24a37853532ecf8065aa6c04bfabdf17db68b57","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-8ba182d-202603171515.0.tgz","fileCount":467,"integrity":"sha512-0gRumizfnjxTTB1FQRWuzA1ed6ptKLZmR4nom+RB45EEjSndNFmPZX66DIGbvZPYJVd4c0ZUzop5l0zjhBke8Q==","signatures":[{"sig":"MEQCIFx1g67klcifDS8E/jGvDbid3oYIIIiVkJTylfOP0AiXAiA+wkPz11yME2wrOHjfgQVqm3DC0QUykL3XAsC8/Ai2Sg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34840201},"engines":{"node":">=20.x"},"gitHead":"8ba182df41a88452ce26509ef802ba3001c5d0b1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-934beba-202603131601.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-8ba182d-202603171515.0_1773760623916_0.09219251652040827","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-35df20a-202603171534.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-35df20a-202603171534.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-35df20a-202603171534.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"aa98c904c73be715804741251b1fc614dcd5dcb6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-35df20a-202603171534.0.tgz","fileCount":467,"integrity":"sha512-gtkr3rx9miwNqdiZeAmJl1QOT1pGheNhgyNDKAq4HH7rIz/GMjtSUsdnAPpKuqpUEOeUCk3EzGTRo/kcst82UQ==","signatures":[{"sig":"MEUCIQCqAjWwcqZnl36zh1vK4XTHpZKyqAHYNCRK7Ymrrk+rwgIgZ+/inqkScN0LyW5e4bjRll2f9XQ2aeXuM+d127B3cO8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34834697},"engines":{"node":">=20.x"},"gitHead":"35df20a68d9702bce9524d20b73fefbc5150abe3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-934beba-202603131601.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-35df20a-202603171534.0_1773761781521_0.6100534919537597","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-2f51062-202603181137.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-2f51062-202603181137.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-2f51062-202603181137.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4dfeb72bb71f7420e8e9bd4765c62045cc5ba8dd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-2f51062-202603181137.0.tgz","fileCount":467,"integrity":"sha512-zhQaU+1sJ3XqB7MCCHlnH74E5QCtplaqhFLk87feeFaDWOnAqG0DMTmmhMskDa6OiOrmcAPtIiNI8aU3RS5UaA==","signatures":[{"sig":"MEYCIQDzgrwabvUmn+yrpVxIoA/8JvgsgnRtdBziyTxwF4djDAIhAP8ZdsAZY7tApTewxjWFpSwQH9z2ZrXP33gQxq0eubp1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34835285},"engines":{"node":">=20.x"},"gitHead":"2f51062dacb9d2b44ccdab57a847284606375e31","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-934beba-202603131601.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-2f51062-202603181137.0_1773833926706_0.46530086474801924","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-b8758ac-202603181556.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-b8758ac-202603181556.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-b8758ac-202603181556.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fe329b6b2d96cea09fcb2afc78b9ee616953d539","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-b8758ac-202603181556.0.tgz","fileCount":467,"integrity":"sha512-QDKTvOJvy/K0ILrqNeU+mSeYb65IA+KNbygcuZokaedZ4GG/y6L7Ts9RzOmd4QNhIok/KZulpgeBhLxE7nvGsw==","signatures":[{"sig":"MEUCIQD8OSlPEZHulNt7y5Tp9lAhBahaUngL9d2RTZ+0AYKGVQIgTgI5uMyxVUL2W0Jb+8kET36V7FxjH7XepHrgZAj2IpE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34971946},"engines":{"node":">=20.x"},"gitHead":"b8758ac367862393a24e084c7f7222875036190d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-934beba-202603131601.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-b8758ac-202603181556.0_1773849521513_0.7353626412110532","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-1a05eda-202603181618.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-1a05eda-202603181618.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-1a05eda-202603181618.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a62c799c04d4ce72c909ac6fc3cf221c71bf05b3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-1a05eda-202603181618.0.tgz","fileCount":467,"integrity":"sha512-o6rtwk8xOI4+DlDzWewmOAeGHjRDIR+4rTTTwcy5PaGQm6/0d/Pjk0mBcRLcGylmTnteXeDE8ua7B3XYfJZoSA==","signatures":[{"sig":"MEUCIGk2UMNOckhNvRIWQMwx9ICZqs1v+HUiqdDM3jwChMlcAiEArzNrZStGhstT718d0cLYx5vwssdcS0c6JDVjhjuqSFE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34988457},"engines":{"node":">=20.x"},"gitHead":"1a05eda6d09541812a2d8e2de4f30866657a304b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-934beba-202603131601.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-1a05eda-202603181618.0_1773850806665_0.6541979049911286","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-f4ecf2f-202603190924.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-f4ecf2f-202603190924.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-f4ecf2f-202603190924.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a53ce9072b6b06ecdd4c19263f83b3b617d89d9e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-f4ecf2f-202603190924.0.tgz","fileCount":467,"integrity":"sha512-p0sbEIkFz+Mh57PfP/bRbj3bI5l6/5k740tUZu1TbnvdatGbsZbkgoMKGx5J3hwOuoBfh4Gm5e3JSl6cELuRfw==","signatures":[{"sig":"MEUCIHpJJhquqQxB8er3pd0NXWZq784OsiLn/fmVSWT+dBFkAiEA9vHXNvqY7bnE7j4HMCdud978ZWd4GyHxgGIPkLTu3WM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34988724},"engines":{"node":">=20.x"},"gitHead":"f4ecf2fbbdbdded0537d5c5ec6b0f912eb07f3ee","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-934beba-202603131601.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-f4ecf2f-202603190924.0_1773912392617_0.5539976643807307","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-4766cca-202603191743.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-4766cca-202603191743.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-4766cca-202603191743.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"477ea827c38d0f86ed6733c6d5ace5937ffe2f59","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-4766cca-202603191743.0.tgz","fileCount":467,"integrity":"sha512-AAWbZK5jcsROPb5bcCp/YXxWs1HATH1SZNFR9IqS9Hd5oOZEJnQ4mll4NuYdd2mEZ3r4sgiOIYyXj85HATuINQ==","signatures":[{"sig":"MEQCIQCrRCZJuhsk8VFOmrFqHaJ98AejcBagftVPZyc62kIX+QIfVk0ASCLelWnzjIUUun+UrHU4Bkn61s+g8q66wTQ04g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34988649},"engines":{"node":">=20.x"},"gitHead":"4766cca62ac4908d8aed06791d273a1dac64b55f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-934beba-202603191742.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-4766cca-202603191743.0_1773942300533_0.24193515225139817","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-7823186-202603200944.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-7823186-202603200944.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-7823186-202603200944.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b52b843c632eb7c2036b4f9802dfc77d6fa64bc6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-7823186-202603200944.0.tgz","fileCount":467,"integrity":"sha512-Axty4BPjaYnZwzprcST5EgupWVUVKH21gDY3dY7HJGNCPf6VSUtkOype6I1bUxNO3rlLpV3aWpIUv2IL8dou4g==","signatures":[{"sig":"MEUCIQDseJn8QzAwjlsOOvkQ+KfxJTOaZRhDWiUoMZ7kXC1XdwIgRkdvr4CCGiE/+TMd6hA4c21w8lOLv0/Qz5Wbea04GQU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34993193},"engines":{"node":">=20.x"},"gitHead":"78231866014afa46928343263931c45cf18df6af","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-934beba-202603191742.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-7823186-202603200944.0_1773999980997_0.6313784580937216","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-27cb9b9-202603201421.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-27cb9b9-202603201421.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-27cb9b9-202603201421.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4af75b0359cb69f43565f4339abda231bac81d89","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-27cb9b9-202603201421.0.tgz","fileCount":467,"integrity":"sha512-Ls2cPbmOXA+cIjaDMnfwyyHSNjNocySwfCgmE3DcW0SnofQHp7dWK0SbKv0PgNJQ8D49bPXOTpmmgVSN2lLgcg==","signatures":[{"sig":"MEUCIQCeud6qyKbhp1HW0OdvLHdUaRcvICuRTHxJJuaukXMFzgIgUS0lM2Egyhhpl6+g85oA6GTMlujNjL40aIwWo5VLMEo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35005804},"engines":{"node":">=20.x"},"gitHead":"27cb9b90afee54e0f715913aa5d7fd6ae71d9d0f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-934beba-202603191742.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-27cb9b9-202603201421.0_1774016565304_0.16914610816700182","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-ae02fe1-202603201630.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-ae02fe1-202603201630.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-ae02fe1-202603201630.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"98f2712389a972c0d1805fce8432f041a67b199b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-ae02fe1-202603201630.0.tgz","fileCount":467,"integrity":"sha512-tBbdtPvJ4VazDWzJgWZddqlO0Yky9AW07HV2MuaImbbYvNhH6keAYaJ7CSV+wkQQryY4anwtSoDDfKQ1bGODRg==","signatures":[{"sig":"MEUCIQDBlYsqonR6N4X6FEtPPzNJoDPhbtLwFrRzbowdOd9+mgIgb/KRbKdiBtR7IHBoroKI7h3tm2bNPJTkVHUOmqmuuZ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35006273},"engines":{"node":">=20.x"},"gitHead":"ae02fe1de836f0e2450216e2d166fb431bbb2b9c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-934beba-202603191742.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-ae02fe1-202603201630.0_1774024361561_0.38221603962357675","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-5ff8364-202603231021.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-5ff8364-202603231021.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-5ff8364-202603231021.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"231243f510e05e713d8c75c68412bcfb9c137471","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-5ff8364-202603231021.0.tgz","fileCount":467,"integrity":"sha512-5gjnXr1V0cHhY2Y8lp1Ms+nYJDjI9EuwH4DXCd9qULksfl547JrzP1kBUdvz4NNIsazd43dyRw4hl7hiBTTF/A==","signatures":[{"sig":"MEUCIQCGE4SCT+2yFti7+62NUuApoW9maRLG05pM6ppUQsnQBQIgDWXle6FTj0jCLmdfYH4sOf77JU5NDhOvB02AY0LakQo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35006263},"engines":{"node":">=20.x"},"gitHead":"5ff83647dbd5157681e648cfe8650bcf5ea66c69","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-f4520d7-202603231020.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-5ff8364-202603231021.0_1774261391994_0.7190198994376609","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-5ff8364-202603231024.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-5ff8364-202603231024.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-5ff8364-202603231024.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0e64f52d7e2d38f89e3d0dcfb366b3cdcf6a3b14","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-5ff8364-202603231024.0.tgz","fileCount":467,"integrity":"sha512-+rQbqMu98HMvDF/5xSFr47rkGZ0eNagJijUg79dDxfwRYARCiAxoJctKgru82RZwAQUDXMeW58BSdxzbEQWNuA==","signatures":[{"sig":"MEQCIHHK20pXI5U+3Nu4TTeWxl9l432JTRTPxljiJpc+E9MQAiBQfAZmeZlVMPg44XSu5ecLYGGMp2rVIMBYvnsS/6VWVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35006146},"engines":{"node":">=20.x"},"gitHead":"5ff83647dbd5157681e648cfe8650bcf5ea66c69","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-f4520d7-202603231024.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-5ff8364-202603231024.0_1774261597508_0.45459938594024907","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-5ff8364-202603231029.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-5ff8364-202603231029.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-5ff8364-202603231029.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d265294a76f7d11ac6b70db78d6b722cd4ec9a45","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-5ff8364-202603231029.0.tgz","fileCount":467,"integrity":"sha512-mLBqVyS0/+MoLcvgUWGj2MsAm3TJZQizKBpMdTVBmOlpn21QmWpDGNpEp/3FSQmNkrmro+J3N9qTa55GTOKyEQ==","signatures":[{"sig":"MEQCIActhnIcoqxo4ffdcqX4oxO01qvgSViF5pyCJ7hkR8/MAiAYbRzHdEkM96mEQIXPf3YGTN/Kd9pRKlJ3NqA1mX4QJQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35005813},"engines":{"node":">=20.x"},"gitHead":"5ff83647dbd5157681e648cfe8650bcf5ea66c69","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-f4520d7-202603231028.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-5ff8364-202603231029.0_1774261870974_0.7748189282342126","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-5ff8364-202603231035.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-5ff8364-202603231035.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-5ff8364-202603231035.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f1002be6aa2310177e060f9d878f25c44a085a81","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-5ff8364-202603231035.0.tgz","fileCount":467,"integrity":"sha512-9rjtZnGV7krvABt/2INZKumb+QslV4vr2ufILL+QhezZt8sFSFOQ4zJl9iPpEzafYCT32fy5HesfOzTwkjxP1g==","signatures":[{"sig":"MEQCIDrKSvq5zL42yXTYc9jjqGifQsO6fjXj2i1KT9wWFAecAiBzDM100Y2JeX/A3UagsTH7nViI94gv5v+LqF/79gairg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35006477},"engines":{"node":">=20.x"},"gitHead":"5ff83647dbd5157681e648cfe8650bcf5ea66c69","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-f4520d7-202603231028.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-5ff8364-202603231035.0_1774262243578_0.17083168638505875","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-40c9b63-202603231122.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-40c9b63-202603231122.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-40c9b63-202603231122.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"654f326ab6b8fbccb0d8b250db086141d0ad2fca","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-40c9b63-202603231122.0.tgz","fileCount":467,"integrity":"sha512-NZdxkUsyMRbKlhHfT3XwiY9Fy2Izp6AWmLvt4NJpWDWZJcZ3PYY+L0X8JoxLx2qwbXrOgdKYKgAyhAXtcV7N7A==","signatures":[{"sig":"MEYCIQC/PNbV8RvOFsvy3WI3BblOka4ZmAqPjmoTIIKbocn26gIhAIq5dvnnUoFLY20lkJvbVSYtn0RmuKNxhHEETaovApnH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35005953},"engines":{"node":">=20.x"},"gitHead":"40c9b6381b3ad84002e2de429f9a6e5c555f6238","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-f4520d7-202603231028.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-40c9b63-202603231122.0_1774265038011_0.23915503587993792","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-e5c0b09-202603231153.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-e5c0b09-202603231153.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-e5c0b09-202603231153.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fdb885f4be9f41442f653aa4d37d4336da2624e6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-e5c0b09-202603231153.0.tgz","fileCount":467,"integrity":"sha512-Nbas5jvBz8mqXIOs0rLEQa1nUP/ydpYkmkVXyZWV5nNiNj0f1kj78ZgmJXFuklB1WV4lCjZ1gMbbp4X5m5iMzA==","signatures":[{"sig":"MEUCICaPuxhdHd5WB54YwJHZLuzbxE9fOdSVw3d9LulyIS2jAiEA29XOWU9QCFxTr8YnjGoDrBRvuTgOE2K39wytKCTYJxI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35013677},"engines":{"node":">=20.x"},"gitHead":"e5c0b09940c0b4e836eb0f462066b815418b4dca","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-f4520d7-202603231028.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-e5c0b09-202603231153.0_1774266917753_0.7079736075448808","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-cbe1fea-202603241525.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-cbe1fea-202603241525.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-cbe1fea-202603241525.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b01067c4aa059b8090fa557ac05659b5fddad67d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-cbe1fea-202603241525.0.tgz","fileCount":467,"integrity":"sha512-oCuOqD2tlWmPjA0TYhsbIk5KuG1k/8R2BdSchdek4NSAzFrs27I6g6fi5olAjHOtMiWdTx9S4Exdh9SXfMfAmg==","signatures":[{"sig":"MEUCIEOrCfvzBWtFuO1kqnakmoqE1OVYNjVSgbJOZCO0HBpRAiEApI22mgpegNB9t0hKKTYfyRSCvBn9Y5P55ANN7XrE7Xg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35013720},"engines":{"node":">=20.x"},"gitHead":"cbe1feafe9783c874b578bdd970cda308db8fa91","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-9a06749-202603241525.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-cbe1fea-202603241525.0_1774366040724_0.016742582760121083","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-cbe1fea-202603241532.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-cbe1fea-202603241532.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-cbe1fea-202603241532.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bca6e5bfc791a1b24fc46114753f24af9018114d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-cbe1fea-202603241532.0.tgz","fileCount":467,"integrity":"sha512-yhhmImzSEpS6kWZP/RuHE2CNLPN54obk2eb3VVK/3U9rVnMnDElrOg/X2+TBTsPydZNIxtdWvHT7IwwgT0O72w==","signatures":[{"sig":"MEYCIQCLEWYim2IcVP8xwzd6zhAFCObbcmtJ6I8kfIVwjCPlZQIhAKcyNgFBtV7ks5sv247nggaKeJCaqtbnJWAhTdJBaZP4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35013171},"engines":{"node":">=20.x"},"gitHead":"cbe1feafe9783c874b578bdd970cda308db8fa91","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-9a06749-202603241531.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-cbe1fea-202603241532.0_1774366423472_0.630453130721309","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-9e8c0fc-202603241634.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-9e8c0fc-202603241634.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-9e8c0fc-202603241634.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"579dea9292ce2519b823b3dd268cafa66b4a3245","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-9e8c0fc-202603241634.0.tgz","fileCount":471,"integrity":"sha512-DL4Lb306/OmGHAOhKz7eesPUZjzWrUjMm7vcJm/W475IWGPj1ghk4iPa196v2T842gg/RIW9y4oetacP5+jTYw==","signatures":[{"sig":"MEYCIQD3SyANq1Imic5AYaidqcyqa8FrPouMpUm4SkR0er5BjwIhAJ+iFoXFyUYhgLc8Jqf51TXMYuH7QCYKF6Hk0A1JQv+f","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35048944},"engines":{"node":">=20.x"},"gitHead":"9e8c0fc10b6c24fec99d459d847da2ac11bc7d80","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-9a06749-202603241531.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-9e8c0fc-202603241634.0_1774370182876_0.42419317130027134","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-9e8c0fc-202603250938.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-9e8c0fc-202603250938.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-9e8c0fc-202603250938.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"888e69206bf74693fade19549b49148b29c3dd6b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-9e8c0fc-202603250938.0.tgz","fileCount":471,"integrity":"sha512-4+dvtWSLVU6vvSOw+XQidjMvqTZNQhXFqZITeFRRe3y1zLs9zzuWzg1Ci7tto++rO5FqYVdZK+MIbHhL5MKCiw==","signatures":[{"sig":"MEQCICY1+Xhzdup922yXdFjW+0LgGKWX2VX39ZFYrbTTTdpYAiBKEbWZwUcaM/1Jw3CVD+AnJRLVWRDWVuatogevCbDbBQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35049019},"engines":{"node":">=20.x"},"gitHead":"9e8c0fc10b6c24fec99d459d847da2ac11bc7d80","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-aacebc9-202603250937.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-9e8c0fc-202603250938.0_1774431592418_0.35404285191946294","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-9e8c0fc-202603250946.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-9e8c0fc-202603250946.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-9e8c0fc-202603250946.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fe79b6eb190e076c130efe46b82efc4130918306","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-9e8c0fc-202603250946.0.tgz","fileCount":471,"integrity":"sha512-AHnzKHCEy+afZicRp2cD1l1vbnQjRwoXU+puenf/SUB/FUwh2K/WWwqtzs7N48+/JkNFH2aNYs4XI15Zm6Npfw==","signatures":[{"sig":"MEQCIBQMd4I/m9eMKn/OX2CLN37TjDyLQMArbqYkUd89np3aAiA8wIPzOIkVB3mx2jC6ZFcoynpMENy5lkR9w1n5Q6w6cw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35048965},"engines":{"node":">=20.x"},"gitHead":"9e8c0fc10b6c24fec99d459d847da2ac11bc7d80","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-aacebc9-202603250946.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-9e8c0fc-202603250946.0_1774432110754_0.29096340832802925","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-9e8c0fc-202603250949.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-9e8c0fc-202603250949.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-9e8c0fc-202603250949.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"652a93f67e9c5115ef87732ef87771123c7caa45","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-9e8c0fc-202603250949.0.tgz","fileCount":471,"integrity":"sha512-r+vbHrNKgPQ+UfvKhRkpI8+umh8guefDsuVdawKtlprlV/5sJcDSJfQfrihdQIw0oURSyT2sDvuOLnolfUpX6w==","signatures":[{"sig":"MEUCIQCLTtNTv3S+D1vmtWwQTRr7XgvzDZP1EkBi6AXbUgz3AAIgKIjipRIRFyejl20ii11RccqtUTP118NSiYp4uysrsKA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35048668},"engines":{"node":">=20.x"},"gitHead":"9e8c0fc10b6c24fec99d459d847da2ac11bc7d80","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-aacebc9-202603250948.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-9e8c0fc-202603250949.0_1774432236341_0.09651171043570295","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-9e8c0fc-202603251425.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-9e8c0fc-202603251425.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-9e8c0fc-202603251425.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bbc3734b5f49c7e552023afb226375f7ab7b49cf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-9e8c0fc-202603251425.0.tgz","fileCount":471,"integrity":"sha512-/Fmx6rjnpfS8W3dF+WkPkpx3JJOVsZGKK3LkaMgSleNrrswQgQQRc2Vat1PQUeM0kYNaNSSLPAEDHtGTN3xHVg==","signatures":[{"sig":"MEUCIE0OyMTRNLP0SK48XMqlDOw9DCxJ6lzOO8YMe3IHVjFWAiEA8O8jWPksiXeuSHJo5wsBBnpgl3NOeOg94sb8e8L/iz0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35048576},"engines":{"node":">=20.x"},"gitHead":"9e8c0fc10b6c24fec99d459d847da2ac11bc7d80","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.1-aacebc9-202603251425.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-9e8c0fc-202603251425.0_1774448845599_0.8951977149086605","host":"s3://npm-registry-packages-npm-production"}},"2.28.1-9e8c0fc-202603251429.0":{"name":"@flowfuse/flowfuse","version":"2.28.1-9e8c0fc-202603251429.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1-9e8c0fc-202603251429.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c563129df8aa62113fb06e492c4a96a1765a815f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1-9e8c0fc-202603251429.0.tgz","fileCount":471,"integrity":"sha512-baMzuxA0KkaRNgPfv9ATQGCZ5hXFznrhu1milWF2tOYcr9TRED/z3Wkz6s6KLtIazuugBlvOj13GequLHNuyWA==","signatures":[{"sig":"MEYCIQDIo5Lpl2LNaUV7blECAtLPu5SUl+z5s1jlDHnZbuH5fQIhALeV7qLRyC0KHX/XFGJKrm9SEBYApHWkAgzdlwte2QJQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35048981},"engines":{"node":">=20.x"},"gitHead":"9e8c0fc10b6c24fec99d459d847da2ac11bc7d80","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-b48ccfc-202603251428.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1-9e8c0fc-202603251429.0_1774449049281_0.6446879942173696","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-1b61939-202603251548.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-1b61939-202603251548.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-1b61939-202603251548.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f7fb56f6f2f38a030a4108ba37bd93725dc4a76d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-1b61939-202603251548.0.tgz","fileCount":471,"integrity":"sha512-EuC93417udBaoFQmOP7GuhKS1f5ojRUH4hjSFNNAkBWR+u4J1CBTppmtc5LVD729c4h1bFDLSccCq0Fp5MLWdg==","signatures":[{"sig":"MEQCIAeA1HgzAHYlEFLIfvINydi+MdOWzvrFYqZxo4PPC+/5AiBuDlxJwcDeCmaNnVBrXJS45FBc6fcBhS3AubIUcxxOfw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35050830},"engines":{"node":">=20.x"},"gitHead":"1b619393494cd9c46838acb39fe3b2f92455fa7e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-b48ccfc-202603251428.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-1b61939-202603251548.0_1774453845178_0.7117021364254656","host":"s3://npm-registry-packages-npm-production"}},"2.28.1":{"name":"@flowfuse/flowfuse","version":"2.28.1","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.1","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"612cbaa1b3fd0ebfdf635d455047ee856c8ea5c1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.1.tgz","fileCount":471,"integrity":"sha512-OiZCqvOeIijv76SceOPG9tzOu6srczUq0maPcqC0cg0fC/9nTdq4+Rh9aofxHteaRtzFo59yqKpsG8Vb/5Bmpg==","signatures":[{"sig":"MEUCIQD6Y0kK4OiqLaisKBD59/Xmu1YUYYmJbKf4/7OUzf5vdQIgOeDDFLdpZdzdpJhw2fwz4GYSCoVEuhI2j18g8VnPOYI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35047581},"engines":{"node":">=20.x"},"gitHead":"1b619393494cd9c46838acb39fe3b2f92455fa7e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.9.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"^2.28.1","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.1_1774455319044_0.49656797800331365","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-b14a552-202603251642.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-b14a552-202603251642.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-b14a552-202603251642.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6f02215b1d0302f3effda3bcd06d68c00811393e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-b14a552-202603251642.0.tgz","fileCount":471,"integrity":"sha512-5YgX/ITxo6oTF810nDm7knSUueiGIZM6mz/g4SOLJYU+wFkuL1mCY6sIWc6j7d7LIh7QX5/b9q1+94UuGgYUiQ==","signatures":[{"sig":"MEUCIQCkN9AfKQHrdl0LrHEojNXxiScDVKRp7BaRPl7gXZDsmAIgGIzyyxNgvcNqB8429zBAS3i0ibVBg2nMkPzPeL2WgYw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34975551},"engines":{"node":">=20.x"},"gitHead":"b14a552b7464ee3124dc885889170e339c5b1235","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-b48ccfc-202603251428.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-b14a552-202603251642.0_1774457043433_0.22435557810440265","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-b14a552-202603251658.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-b14a552-202603251658.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-b14a552-202603251658.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"40e82254a73b85a8169d5253bb19925cd22e0360","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-b14a552-202603251658.0.tgz","fileCount":471,"integrity":"sha512-McaOUgufWr0zjDDE5i1PP68m/2c/do31MFhE7Ue90EkSViXujhkanS2WR7WHEjOvQjIGk0Y0LHSDEXO0seFx7Q==","signatures":[{"sig":"MEQCIQCHNQu9Sj0JJtSeYrn0nS8y2vqBoQYyQQNMqCMdchN4ggIfT57kD6vvBowyC1TZBmmS2Nkda0vVyo00+7eNmWh6Dg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34975828},"engines":{"node":">=20.x"},"gitHead":"b14a552b7464ee3124dc885889170e339c5b1235","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-b48ccfc-202603251428.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-b14a552-202603251658.0_1774458015886_0.16825499292442858","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-039de9a-202603260945.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-039de9a-202603260945.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-039de9a-202603260945.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8b65c2157bd8343e4b8a2b97f756e47c3e83d851","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-039de9a-202603260945.0.tgz","fileCount":471,"integrity":"sha512-odnwnSPWicsi8y6W6e7EerfuujFL1MtOL7l+VfSMD25YZT5y/b+aYIZQgsaew99DWDCHD6qB+VU4Cb7CiVVfzA==","signatures":[{"sig":"MEYCIQDnC58EQmc32b1nkUbej5UEaO6cfBrP+hdNHnOIsY81tQIhAO5dud2R+UlB/KNDUo0OMDZCXjl2hUpPSEh3R6ly6HWX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34976022},"engines":{"node":">=20.x"},"gitHead":"039de9aaa2dc50a52d88d493bc26b96cfbf4b763","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-b48ccfc-202603251428.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-039de9a-202603260945.0_1774518454272_0.39477455046603205","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-039de9a-202603261051.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-039de9a-202603261051.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-039de9a-202603261051.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a7d3345bb44a88a55adcdb25c8f325a3f71ac4d2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-039de9a-202603261051.0.tgz","fileCount":471,"integrity":"sha512-8BEe3nHVvfpBhunGC5AWdn0wnA31WV01fEDxzsQhEUlpGfF6wkThO0gmEJBdKfg1AP97qPPDyY0cXBuglKnnXQ==","signatures":[{"sig":"MEYCIQDCJimVyMuRppS9atwwWo64dcDy0c40pfIxTMyZE98P2QIhANIEMWRM1QuPRsYfRu/S6jFzuy75QxgwKs0JbH3bPRIz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34976011},"engines":{"node":">=20.x"},"gitHead":"039de9aaa2dc50a52d88d493bc26b96cfbf4b763","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-b48ccfc-202603261051.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-039de9a-202603261051.0_1774522415148_0.9767683372338305","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-039de9a-202603261100.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-039de9a-202603261100.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-039de9a-202603261100.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"02f2adf1ddd9e601b410997335141a770251352d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-039de9a-202603261100.0.tgz","fileCount":471,"integrity":"sha512-GEIzwX5A9siqifpJatAGDRFF64tZrIDJdDHtXRHQxSCDDPKgGCagWwjLLYH+jxypxw1jeuL4qCcFFOUpW+Pwfw==","signatures":[{"sig":"MEQCIDiwL4Ug/C2EVya8DZAaYgCg2tyOloTww+tC9VZRGj20AiAtUFI+e9mrhdIn1atr1uh0FogD5dFUIZEx65IQ7aRNAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34975224},"engines":{"node":">=20.x"},"gitHead":"039de9aaa2dc50a52d88d493bc26b96cfbf4b763","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-b48ccfc-202603261059.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-039de9a-202603261100.0_1774522908806_0.7152274560073357","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-872d5df-202603261104.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-872d5df-202603261104.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-872d5df-202603261104.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5fdcc898d170bf10ae48d8d5574ccd9d23fc6d99","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-872d5df-202603261104.0.tgz","fileCount":471,"integrity":"sha512-f0k6QgkZ5YN1KdhF6pEIg0LkuFcd7Yq8pXSpOjcPFb7dCD7uCvGdTNuakniIZLaTyYLHIKwCbu8aOnmx3sqEtQ==","signatures":[{"sig":"MEUCIQC8M22V5Btdc7yULq2eTot19fZT/9eQxU8BRydbo3PcBwIgGIo+bMB5lG3dKWAlzQ6+BVOpWK7Y8H6QexBSlft7YpU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34976049},"engines":{"node":">=20.x"},"gitHead":"872d5df5550d651c4d451cf001bb21522dedec5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-b48ccfc-202603261103.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-872d5df-202603261104.0_1774523189066_0.2044146679755554","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-872d5df-202603261111.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-872d5df-202603261111.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-872d5df-202603261111.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"18c76e5695d5e68a32cf9e1504b55871cea8e950","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-872d5df-202603261111.0.tgz","fileCount":471,"integrity":"sha512-ucGRf/Jnrm3BwGdQGTtHAPWrfJpHFjWVpKL58bMawbENp2LE2Nznl2VAG6fidPkK+BG30E2TQ9Th+RpBILBY1w==","signatures":[{"sig":"MEYCIQCAg2Uczj+J61Pu1H8lFh+l944hwTDzOdUHk8SpA0LZ4wIhAOwnJceVYrLUJIUniiz7Cv+RDl+tBhouzmkXm/R6scHw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34975988},"engines":{"node":">=20.x"},"gitHead":"872d5df5550d651c4d451cf001bb21522dedec5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-97f0d48-202603261111.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-872d5df-202603261111.0_1774523597972_0.6663462650338283","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-872d5df-202603261121.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-872d5df-202603261121.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-872d5df-202603261121.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"28a30a5bcb89a4cfad5fc07ffb45a45ff3527273","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-872d5df-202603261121.0.tgz","fileCount":471,"integrity":"sha512-LxC2+GupgthU2nSIapIJZllofZZc+lEGksjdn/fSPT9tRqa2mlYQy87LwrGEeqxRFtiZ7Tgh219mTgLT5Vggpw==","signatures":[{"sig":"MEUCIQDUH0XmZ5SgYIX3QZYsqN+TYAkYSnmF60WLkQufbC3p2QIgJtGuqH+AY9xgBbZkSVj5fNemwVNossYRCzYqLAz8XJM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34976033},"engines":{"node":">=20.x"},"gitHead":"872d5df5550d651c4d451cf001bb21522dedec5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-97f0d48-202603261111.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-872d5df-202603261121.0_1774524178800_0.8164608277752554","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-872d5df-202603261201.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-872d5df-202603261201.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-872d5df-202603261201.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cfb652ffacf540af03042e127979acea51c6a76b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-872d5df-202603261201.0.tgz","fileCount":471,"integrity":"sha512-gyq/++tdQMvnIvcVnqB+BRu528O8uvo9kgm0n2XHzqonCWjUKNRbcdRh3ZdrCKddlti+CAMiYRg1qpyAZroRuQ==","signatures":[{"sig":"MEYCIQDNAM0EHSVeLvxk5bt7x3uMgWW9gs97rtaENLbvt1YOUgIhAO6GXP+2sYocUETe0NGnyfqbuymhvQGwsX0F1CNUQVRt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34975946},"engines":{"node":">=20.x"},"gitHead":"872d5df5550d651c4d451cf001bb21522dedec5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-97f0d48-202603261200.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-872d5df-202603261201.0_1774526556526_0.09062488340131702","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-872d5df-202603261258.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-872d5df-202603261258.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-872d5df-202603261258.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1197fe8e9c66a599c60945996b3b32da3d046706","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-872d5df-202603261258.0.tgz","fileCount":471,"integrity":"sha512-QPYC4MSV0d2JpbGYWGMNoFHlSSe+igKxdeggD/r7NF80Qwt+MdDo+cCgiP71xcIDpYhX6gBm+EypwFaiu+koPQ==","signatures":[{"sig":"MEUCIHu5NG0GQXLz4r37QH6f9wfFQUQPYg+D7909BSKDuhYfAiEAi6HWYQQXGBokBlHj2nrwG90q1JXGGKP8dGtgf1ZY+8g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34975999},"engines":{"node":">=20.x"},"gitHead":"872d5df5550d651c4d451cf001bb21522dedec5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-97f0d48-202603261257.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-872d5df-202603261258.0_1774530013328_0.6941331435996765","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-872d5df-202603261300.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-872d5df-202603261300.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-872d5df-202603261300.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"67ca846cb88f2506a5eb14416ce5839dd664ac7a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-872d5df-202603261300.0.tgz","fileCount":471,"integrity":"sha512-GTg/v9X17yARvdpK/pw07xfH0Wuryh3XntFZ9E7KXc3BbwhAoNtdzhZ611ob33MhqX5a8hdIGbB4fTR7dbinsg==","signatures":[{"sig":"MEQCIHwIlZBY6PGCBkKwE0WMfxCrYB24dn/xYGg5SGF+FpdBAiBMwzfaSMuSrm8/x3S4ncL1vZFqWcIn8r+l2Rpxh8gHeQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34975843},"engines":{"node":">=20.x"},"gitHead":"872d5df5550d651c4d451cf001bb21522dedec5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-97f0d48-202603261300.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-872d5df-202603261300.0_1774530157754_0.8763693089896756","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-872d5df-202603261303.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-872d5df-202603261303.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-872d5df-202603261303.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"be3f4ec5909edb920252ba629fbaaf4ad75714fe","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-872d5df-202603261303.0.tgz","fileCount":471,"integrity":"sha512-u1m2DqQkIthUBFPBFpJMF436hJErz0ODU6tdPk0G/F018dq/Qa+BgEwCeWAbj0CSEgSrakDXq6rt44kN/elvGQ==","signatures":[{"sig":"MEUCIELDJlaXvUulvREpzLogfP19zTYrlSTjiwDCczxLUPSlAiEA1Z6z5ImhnPh6xXFQDeJFlK/NxMDKdzWpRy8LNkfxELY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34976046},"engines":{"node":">=20.x"},"gitHead":"872d5df5550d651c4d451cf001bb21522dedec5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-97f0d48-202603261302.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-872d5df-202603261303.0_1774530291827_0.26921041906727083","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-2dd64ae-202603271430.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-2dd64ae-202603271430.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-2dd64ae-202603271430.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"27d63b4842e2dde9b7f3bb462b730defef70aa01","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-2dd64ae-202603271430.0.tgz","fileCount":479,"integrity":"sha512-VqvDPetcqV5+KQ3sMFDJrE5ugt+NcXygqvvfNU6OxR8V6RDGOf3bQoLJREAqghSlOzNbLOOO5kn+N2k4jiym9g==","signatures":[{"sig":"MEQCIHAPA7LH2W4dZunafdRReGwM9/qBW5Nz6li6GIPw944HAiAs5RiO3h7UsLoLyOrechgofRNyjfOm8kZGjR1pdMfISg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34939941},"engines":{"node":">=20.x"},"gitHead":"2dd64aea0a8637ed14a880f826db3878f3040f8c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-97f0d48-202603261302.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-2dd64ae-202603271430.0_1774621956030_0.7474778281707539","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-9276ea3-202603271539.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-9276ea3-202603271539.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-9276ea3-202603271539.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"97bd7e9d7c7ceb1197e0f16a3ba6afde3730ba35","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-9276ea3-202603271539.0.tgz","fileCount":479,"integrity":"sha512-6tnGQQo98zYjsTP3BnNo9xbpn+B+r6jnwCnradV1kSXrykgjrEgoy6F/eijtBUdSItnu4f//B3bqdIAxjF9mXg==","signatures":[{"sig":"MEUCIQCy9rMUcJ09aWCnAhMEpX0po+kiJPwGJvAJwT6ulKKf7wIgXHv8XFXqZqDJR0W1AJsaAm93eIWqk8OPAZVSd2Ridd8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34940298},"engines":{"node":">=20.x"},"gitHead":"9276ea39a30155b77cee1fca3355a8251dade813","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-97f0d48-202603261302.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-9276ea3-202603271539.0_1774626101249_0.6926694810881839","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-23305c1-202603271739.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-23305c1-202603271739.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-23305c1-202603271739.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"71cef91c3c6fd4ac5bec14ebb56e454d76fe53e1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-23305c1-202603271739.0.tgz","fileCount":479,"integrity":"sha512-9qp5Y9+Ti1k/HRnwEIbc/8DYzwcoqCU7beaIQwPFx9u4sDMk1lLWKfhWF8zBdEr+uLrK7KSbb6SJuvHevZbbyQ==","signatures":[{"sig":"MEUCIA2ZFsTTm7jjWUfaVJTI1zlo9VzibU/+pLrfzgdYhMm2AiEAxIvKObjATbblyZhUaMZG0+cOzOHg2wD8RVz2AaPuMl0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34931820},"engines":{"node":">=20.x"},"gitHead":"23305c17b16463417bca73ef5485b2a13f845fab","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-97f0d48-202603261302.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-23305c1-202603271739.0_1774633289110_0.6461576958805282","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-5e6557e-202603280932.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-5e6557e-202603280932.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-5e6557e-202603280932.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0d98e1d5897d2acef7959b1cbc4498829905c1b2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-5e6557e-202603280932.0.tgz","fileCount":479,"integrity":"sha512-k4aQTrtC3fe7Vzqf9zuf4UhJp66SpSxEHU4+AAQuQOjudyCRonpdgwI4EkflUkTSMUOY51TMDjWnPurxCzIMUQ==","signatures":[{"sig":"MEQCIDl8dqpfiH8Sr2K2LVAqq1VK2pjCJmS59xcK3odo6E3hAiAhF81UtjMu6btvkILDUNRIOFimO0OZypukaTq5EuCG6g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34932190},"engines":{"node":">=20.x"},"gitHead":"5e6557e235b4259e37f94c5cccc66a7321251609","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-97f0d48-202603261302.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-5e6557e-202603280932.0_1774690438027_0.8263077453000542","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-5636fb4-202603281111.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-5636fb4-202603281111.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-5636fb4-202603281111.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e7262ca97b449beef9ec7d4c45161e79cf882b59","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-5636fb4-202603281111.0.tgz","fileCount":479,"integrity":"sha512-xoxFsQl3UP1JL2QvuaTpPq77HsMTU+b8LY8wLTkeeJ+ezPGzLEP2+ydxPOs8nUFoN6yPRdKTyFjLje1T+KvWYw==","signatures":[{"sig":"MEYCIQD4njdkwvUlJgc8FkfqtlcKakLqVaalHYJDy0S89KO9DgIhANbRaCl7oEEn8DtqAVGf6G1VEwnDIPHsHPy0tGaemLq/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34931755},"engines":{"node":">=20.x"},"gitHead":"5636fb4c644f7f14e15c6b11f676a80baf17ca73","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-97f0d48-202603261302.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-5636fb4-202603281111.0_1774696408201_0.609050804673273","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-268112c-202603300839.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-268112c-202603300839.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-268112c-202603300839.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"478d6d1e71764bef8b9d973a875d80612fb6610e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-268112c-202603300839.0.tgz","fileCount":479,"integrity":"sha512-AsvfKAurDWEQ1xzRd2OnFrkkL+nHBJAcW6cEqduLORWP8LzANQC4uJFHPgbkAXgf0v2llnBJ4wOmbHio1doJGQ==","signatures":[{"sig":"MEYCIQDD3ueiN76RczzEFljoWEOOB8g14pYdLAf1Vg66PeLG2AIhAKPV0a6dBP7JGV/i78A8x5ao6YMyBdvAh7BRpt5ay9ur","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34931602},"engines":{"node":">=20.x"},"gitHead":"268112c8335a1ceb256ac02879a17cd045ac0e0a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-3800d89-202603300839.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-268112c-202603300839.0_1774860071895_0.6054345855515024","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-268112c-202603300841.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-268112c-202603300841.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-268112c-202603300841.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ce58405352572ee092855a4b03705e1389a38269","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-268112c-202603300841.0.tgz","fileCount":479,"integrity":"sha512-tTmcv+ojLlV1+hRodXF3xYwAkgNynrs6cJdsE5rIVTqw7W1RTRDrUBl/OHNRvUUuFQVFmGlgyRxNHxvSM0KKCw==","signatures":[{"sig":"MEUCIGbJ2EOgTn/IFz0GHhkIOEmUDG+lDtDXO20MBFQNgNSEAiEAqzDepin11G9eOavaNhljERak7LVnJSOOXgTqQxr9ZXM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34932031},"engines":{"node":">=20.x"},"gitHead":"268112c8335a1ceb256ac02879a17cd045ac0e0a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202603300841.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-268112c-202603300841.0_1774860207542_0.8073755233879978","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-268112c-202603300843.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-268112c-202603300843.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-268112c-202603300843.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"37d295074154ed60379aeca48dc3f71872d72d53","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-268112c-202603300843.0.tgz","fileCount":479,"integrity":"sha512-3HErkhXknDh/cw/LBa6cGZyPg7GkD65XotZtT0nVngnC5S/5l0UZ9mFGjQcNxxG4s4Biao/XZfBCCGOVoIl6VQ==","signatures":[{"sig":"MEUCIQCibSXG2dHy87gp+bHRF/bjElGWvYN3GNe2ZPwjk6nxsAIgOFeUBHBLE/j4dE6mjSh/7nPjnU2PQG+Llkw0c0WK9KA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34931973},"engines":{"node":">=20.x"},"gitHead":"268112c8335a1ceb256ac02879a17cd045ac0e0a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202603300843.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-268112c-202603300843.0_1774860335445_0.3803317571610514","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-268112c-202603300856.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-268112c-202603300856.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-268112c-202603300856.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8a66279793e163e5896c22c4ffb43beb8c623e39","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-268112c-202603300856.0.tgz","fileCount":479,"integrity":"sha512-ET6TCzsnQfVWeUHwQvRqHEhTvrSYaLQ7gs2U1A0/mfK4GI3Zy7Ng1v1oY7nljbeKWNEM3BXUB7DCSy7J6Gbmug==","signatures":[{"sig":"MEYCIQCZVhzUlCt3XMY8z8yY4rDEOVkTuzJT9qBhzeI6mIka/AIhAOmuwHzjes8IKAv1btm0qA1xfKk5oRsXmNN5UfJIN1z5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34931765},"engines":{"node":">=20.x"},"gitHead":"268112c8335a1ceb256ac02879a17cd045ac0e0a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202603300843.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-268112c-202603300856.0_1774861072681_0.17094327640776785","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-07d9e5e-202603300918.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-07d9e5e-202603300918.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-07d9e5e-202603300918.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"53bfd4ad944195f3da217f75c46433ab8f5a8021","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-07d9e5e-202603300918.0.tgz","fileCount":479,"integrity":"sha512-vZIO0mAdG+l3uKCmUufHGyJbByTbBHdzn+jPRC5cwpWDxTYmPanl3Z5jc8NgRCy/KCiip5wSNKppOzEWHHaTyQ==","signatures":[{"sig":"MEQCIBeVRu/kU32cNgR8XNfAT+OrZmKEgY6EpZ4jvUyr6qKxAiB25OQigkyogH0pGc48p2ARldfl/mrO4oTtMt14NI+a/Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34925413},"engines":{"node":">=20.x"},"gitHead":"07d9e5e3a370f15b7a4239cb98da324716a326e0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^7.0.9","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202603300843.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-07d9e5e-202603300918.0_1774862403931_0.4550331393628835","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-a9a2c86-202603301047.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-a9a2c86-202603301047.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-a9a2c86-202603301047.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1941876947d9504627bb00fab02f07f7f9b3060c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-a9a2c86-202603301047.0.tgz","fileCount":479,"integrity":"sha512-ob5eRzIOrnCdwzJ3Rl8eoPqNDxy9s8qx6YLOvHWiZkztJM+dpTFV9wYD6lRFPwxdk1Ruog8MKPpIRcdS0KJ5gw==","signatures":[{"sig":"MEUCIDEpSgD46nZLaXSQsejJ9VjjKIfDYLWnLxzOJnLu4PszAiEAr6YSmpOR4jsBPxeRGXNk8ksuxy0g8pFjrxu5ugz2s4Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34925663},"engines":{"node":">=20.x"},"gitHead":"a9a2c86c69d023e6851eb5fbf4a3398370c744c8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202603300843.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-a9a2c86-202603301047.0_1774867750758_0.7526975247249248","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-b9d9992-202603311140.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-b9d9992-202603311140.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-b9d9992-202603311140.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a2868ed42513c20fd6a87aca777227c34412e394","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-b9d9992-202603311140.0.tgz","fileCount":479,"integrity":"sha512-V9DNh84HyCN9rh7aU8TFJlNIdZvgyA7E9X3RDRLBkX+kkUldHWsee//guIjKxzOEd1KidURfPfRgZb03331J9w==","signatures":[{"sig":"MEUCIH3ck4423LjRGYi7P0VnZH8Yz09+1xfP4BZajGVwNbIIAiEA/bNOb46NMnQtXUvKqbknGquS4QgEVInnd6nD128wGx4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34925478},"engines":{"node":">=20.x"},"gitHead":"b9d9992ef1d93792c26d5bb5abef6a1a4c90124e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^5.1.6","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202603300843.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-b9d9992-202603311140.0_1774957330257_0.315895628946395","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-849757a-202603311319.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-849757a-202603311319.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-849757a-202603311319.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8755e47613be171cea70481a2600ce90b543d7ca","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-849757a-202603311319.0.tgz","fileCount":479,"integrity":"sha512-cqlvTfL4fKxZ8Zq8oNtKA6ypKpSFvoQLQXEmh3Asq4Xu11esnKP2FjTph9oZecxfGCjMqYzSE5QRvnqhFHUZug==","signatures":[{"sig":"MEQCIAnF8lm77hidPumydE8Wxf+4sLqQP389zVuw4UWW7TEMAiBQREDeGR40r8ZkAp2oOzVeaZ8o3IszwTAoK87MfW1QqA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34938898},"engines":{"node":">=20.x"},"gitHead":"849757ae2ee2f104b2386a7af6066cfeb1e1cfa6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202603300843.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-849757a-202603311319.0_1774963291181_0.43308518457348444","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-849757a-202603311326.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-849757a-202603311326.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-849757a-202603311326.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c48052ad14b68a6d6ccaaa7ffeb8759630d899df","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-849757a-202603311326.0.tgz","fileCount":479,"integrity":"sha512-iMZdAghxXWTS4X4jF0nvBCqt1PJM6PlYka3CdDtvpVzPCwNZCJJ3MCugSm/yEx3gxv74HpmwaM2ujS3hmsQmEw==","signatures":[{"sig":"MEQCIExdxRQBcUIcFXuT5YSgA9QW76U0kgHIt79FESWEfEf7AiB9oyoQymWAVt+sv+nA0XpS++kZnksQrbD9RDMbkVla5g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34939016},"engines":{"node":">=20.x"},"gitHead":"849757ae2ee2f104b2386a7af6066cfeb1e1cfa6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202603311326.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-849757a-202603311326.0_1774963714395_0.8827553466832434","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-849757a-202603311335.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-849757a-202603311335.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-849757a-202603311335.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"db3d2636ba99c31d5b0ed6a7b1806bc3a8ea0538","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-849757a-202603311335.0.tgz","fileCount":479,"integrity":"sha512-084EWDIb7D8HlnIVv2giAUf3jqfWjrA1lI8qohHXHqCNJZVnSL2JqZafJIZ32MtkpB+GXp22ssWGWsjZeQelng==","signatures":[{"sig":"MEUCIAdZH5Pv3ZNQeQtMOMkT6olSe+4D9FcaTqFJDo+76K4KAiEAl21dsElIphxJKOwjH5QJtj+Ko8SWEK5mciqGzTSLXZU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34938427},"engines":{"node":">=20.x"},"gitHead":"849757ae2ee2f104b2386a7af6066cfeb1e1cfa6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202603311326.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-849757a-202603311335.0_1774964239653_0.6463235438951274","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-849757a-202603311342.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-849757a-202603311342.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-849757a-202603311342.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"32d409338406249dc35ecd83769bc1ddf19bda2f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-849757a-202603311342.0.tgz","fileCount":479,"integrity":"sha512-+psAv9NZUUsfiXccDW2GTCQDHiyzlviY0bsCO4Wq/LZ7n0MHXY9tPmIZwOUkVoyAQKsSs3jVqtIcGSzfOrFwKg==","signatures":[{"sig":"MEUCIQC2MsyKuwR5uRiSMa+W9QEL0lhklIf4nhLtiYH7VTWZZAIgGH3w0Rx8rF89diHORi+qf0tgEt7PgZBsyyiypw4MT30=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34938248},"engines":{"node":">=20.x"},"gitHead":"849757ae2ee2f104b2386a7af6066cfeb1e1cfa6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202603311341.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-849757a-202603311342.0_1774964623084_0.872643543632438","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-849757a-202603311351.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-849757a-202603311351.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-849757a-202603311351.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"12700914d9a5f42dea03ac5d94db8b2228eb034d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-849757a-202603311351.0.tgz","fileCount":479,"integrity":"sha512-I4vubPvYFFrXcEammmJ8B76lrL+uOMQGBRTiAERSjq1qLqvVcL/NYmUAW/j4YkClUNQpzXajmWxNT7BzLSSCAQ==","signatures":[{"sig":"MEUCIQCIddprzATMht5xb0Enm+z3jRvKIzB6pcxbfMCKjJp8YAIgR6+wxDBaku7XbvTHdBD0yGnP3nB05iWMUEO1Ha//jVY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34938708},"engines":{"node":">=20.x"},"gitHead":"849757ae2ee2f104b2386a7af6066cfeb1e1cfa6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^5.1.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202603311350.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-849757a-202603311351.0_1774965171240_0.8151219234364753","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-e5ae31f-202603311454.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-e5ae31f-202603311454.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-e5ae31f-202603311454.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"03b7ddc6fe46390e7744eac41213e12f4aad39f8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-e5ae31f-202603311454.0.tgz","fileCount":479,"integrity":"sha512-7+3W6U6TK2U5YvDBHBdTvs1wdeN+fqQL4cPjPC2svWpTCiecvEvQ7DVs3N95aArUsCRmIcLHEWR9rBSWx1beIA==","signatures":[{"sig":"MEUCIQDNSdIViD2aOrXeq9WKDybzXovK7WqVeOsPtDVPBXfbDAIgCPNnxbZFxV1AFeXQUIO1XcYyCq2vZ2Ji5iBnlLKWIIg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34938926},"engines":{"node":">=20.x"},"gitHead":"e5ae31f281b29613f087ca43a05c75e4bdc6998b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202603311350.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-e5ae31f-202603311454.0_1774968982183_0.7615746081415748","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-6f3fef9-202603311513.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-6f3fef9-202603311513.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-6f3fef9-202603311513.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6db164e6f26259c326b239e6388c5519e9a10ff6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-6f3fef9-202603311513.0.tgz","fileCount":479,"integrity":"sha512-dn2WHjy4IZy+7/5jetAGt1P14Qx8jemKwhKG6i8bjZ8Rm0mjw1DnUQ1Z+H2bIUk8vOcWlEHa90QC/TPXwqswCg==","signatures":[{"sig":"MEYCIQDKZLhPJBIm19h1zgVOGeVDKNx4oyjD9r9UWYsmWgY/qwIhAJstuqWU0CK9HW6+9iUvtrky4OtoyaVFwdJvIcxaB/7G","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34938727},"engines":{"node":">=20.x"},"gitHead":"6f3fef9382625bf4e1d78f9df6ae411e6272a73a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202603311350.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-6f3fef9-202603311513.0_1774970101617_0.4470362420451979","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-6077f84-202604010818.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-6077f84-202604010818.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-6077f84-202604010818.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"75dea8319cfc682afa43f00085c25c0e058d334f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-6077f84-202604010818.0.tgz","fileCount":479,"integrity":"sha512-Iv0/0r0nGnxsktyaFUlQcpA86rRq++nSe9PnEUS3A4Cf8WPps50CCTuTbVYEOrPYVHRv7gE0tG6xhX/DqjIjow==","signatures":[{"sig":"MEQCIEGhwK/CcVlXi1DQKL0CMLgydB1ZbbAFgnHoCF/zLLtzAiAdHslhXV+p9cc0rDTRcI8GxKxDgHaA8buLlIiwMDH5Ew==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34938526},"engines":{"node":">=20.x"},"gitHead":"6077f845782c72ffe6005b81736a053f098f0447","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202603311350.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-6077f84-202604010818.0_1775031644311_0.9122965557707758","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-c8c9ce5-202604010903.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-c8c9ce5-202604010903.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-c8c9ce5-202604010903.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6ec78fe5095ac028afaacd884980d996fdab15fd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-c8c9ce5-202604010903.0.tgz","fileCount":479,"integrity":"sha512-njOOm9iB/3Ss0FJ7B08K6WGmDkdP3GdMAX9+9ql6pupu2baGh30ycrClPAbImIyRFVqlxDRBxgQIS5uljPu9zw==","signatures":[{"sig":"MEQCIEu7hbpudmtbbYEWeHq0qcYRQuL0Fd9GrPnkl4Mc4PYXAiA0HuTpQlOgSh9g2/loIo0EI+LFBhBFoKOwLVmu6ZEv5Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34939453},"engines":{"node":">=20.x"},"gitHead":"c8c9ce5d674a7daec4b6f662a1e6e251ad456aa1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202603311350.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-c8c9ce5-202604010903.0_1775034324273_0.5050586325193898","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-c8c9ce5-202604010907.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-c8c9ce5-202604010907.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-c8c9ce5-202604010907.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1e5c23e9fcb22fabd0c7ae9b0c07153b8881dea8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-c8c9ce5-202604010907.0.tgz","fileCount":479,"integrity":"sha512-ZnGqZ/UsKiJuDLJGYE2MhUVD806E44t7xEtvYLpw6AohUhV5XWb7kqkuPNyZbsT6AdnEwgXvmbtwI6x90ynqkQ==","signatures":[{"sig":"MEYCIQCPYvw1KafXZBUSoUEyF1iAEl9IZAbIFomYJ16LzLu4agIhAPnJl9G12YuXC4VtRkZUpNe+0YhssEWsM3hD2nnbkVNI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34939456},"engines":{"node":">=20.x"},"gitHead":"c8c9ce5d674a7daec4b6f662a1e6e251ad456aa1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202604010906.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-c8c9ce5-202604010907.0_1775034543190_0.2274737508805742","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-cea41b4-202604011153.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-cea41b4-202604011153.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-cea41b4-202604011153.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6c5d4f2da5f62c490fb5be46219e1ba22fb3f5d1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-cea41b4-202604011153.0.tgz","fileCount":479,"integrity":"sha512-b8wQbNYNASuNxUkW/AkMhYhSuer0Oe19L9MQGwZ4BmdtG/KpNZ07UxbgZQtR3SLWoAW4CN4y6FbNCWcOHBSSAg==","signatures":[{"sig":"MEYCIQD1+ZW/WaZgyoU1aBU8FFehRlxkdEGVWOMrKI5p2JEmuAIhALnH68kqN28eQUV6qsKi+aKrRFzPfA/JR6K6tro/qOv6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34939916},"engines":{"node":">=20.x"},"gitHead":"cea41b420a95fb8d994e727ac5dc9347ec9736c2","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202604010906.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-cea41b4-202604011153.0_1775044526475_0.42668934414839343","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-f4a24b0-202604011259.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-f4a24b0-202604011259.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-f4a24b0-202604011259.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"77be5c182952f3c970c6942e27c8710c5cc6c3c8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-f4a24b0-202604011259.0.tgz","fileCount":479,"integrity":"sha512-BgIjILxm+GmbsGZv7GVr4qOP0vdtTvrKup8eefbFRWA+GbISzVBU1mMGNbG1KAyaF3hUqPW6qzRLaYXiqdneyg==","signatures":[{"sig":"MEQCICC43eKfzIN7Y5lzCsiHbdkI1RP7Yjxhf/Cz975kqAX+AiAu+JkAxYLhxBwE0cI+XzsK0l9N/o5GfKMtOLMTJGW+Kw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34940042},"engines":{"node":">=20.x"},"gitHead":"f4a24b018c7a38a247ca684bdcde7674f6194602","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202604010906.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-f4a24b0-202604011259.0_1775048489458_0.46651997016874014","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-4b52948-202604011328.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-4b52948-202604011328.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-4b52948-202604011328.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6f5915dd52d1f72143da4817ac6a40c92fcf2360","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-4b52948-202604011328.0.tgz","fileCount":479,"integrity":"sha512-yjpHVv7MCfF+4SUWGqz1PMGYf64dGQ3u0gpRlN82m3XsWEQNSEFzda4rQLuYXLEAgNwrcG0E2JGQxq+C8V0OAw==","signatures":[{"sig":"MEUCICj8cH/1HNYbH1LBkIZzM5Tcvuxgi1HO2Ntu8SEVBGPlAiEAghlfdwCi2enYVxH5T97ZwyUKa/kfXZ3r9M4/QF9jdb8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34940549},"engines":{"node":">=20.x"},"gitHead":"4b52948ea5e698fa86a3c146bfd8e921b56628f4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202604011328.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-4b52948-202604011328.0_1775050235157_0.5741886466851791","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-4b52948-202604011339.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-4b52948-202604011339.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-4b52948-202604011339.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8ad3e90b9d6642c34230437efc1abe08ecb41f56","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-4b52948-202604011339.0.tgz","fileCount":479,"integrity":"sha512-qeBU+GM5HoKpy6gauhMZNzjepaW8KllW7A170839JXvBYGIjMWlikqssuJXzfjs37KyoeK1iSy6X4adXhuy1MA==","signatures":[{"sig":"MEUCIQCvszPr73qFFAhed5fAenIW39Y3kN8hQiwq7YkoJFMJmQIgQMDbgwLPP/3ve4dXYrlZKgWeCntRuQb5ACM22hv5KCE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34940895},"engines":{"node":">=20.x"},"gitHead":"4b52948ea5e698fa86a3c146bfd8e921b56628f4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202604011328.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-4b52948-202604011339.0_1775050844543_0.04941332928880682","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-d2df691-202604020854.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-d2df691-202604020854.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-d2df691-202604020854.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d8e9009b4fdf6d1e4ba5fb797312e01f1af8127b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-d2df691-202604020854.0.tgz","fileCount":479,"integrity":"sha512-CD8/z1QpjHWQ6kbWcM8ZHjzLhjCXKEdnVMVsA/GH7sQGa1NXJUNxhaIfT5vkQ1jPzSr9F6NVMJiIZGk32o6lbg==","signatures":[{"sig":"MEUCIEE7EIhlkHHLR2rEGZ9xxpjF7QuLOyzHOCue4NGQefRcAiEA1gcyfAmpJcAA8sBeFqi8VE7gXcfK2VctHobMNqHIHXA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34943871},"engines":{"node":">=20.x"},"gitHead":"d2df6916a9d70f5cf1593f2bf3689779aaedd954","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202604011328.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-d2df691-202604020854.0_1775120182258_0.20641215498227017","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-a30c57f-202604070826.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-a30c57f-202604070826.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-a30c57f-202604070826.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c61ff472f691d66c771bfa7499ef3489c74b54de","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-a30c57f-202604070826.0.tgz","fileCount":479,"integrity":"sha512-4FsGYNvHvcQCHdmCb2oLdTd13qDE+qw6yIOYjbAe6XF1fCXgUAzhz3z1ZxQPBNmRtFc3eEl5p/8I4aCzs4sZEA==","signatures":[{"sig":"MEQCIHdiWu/A/v/ImSaKEkjvb1F+128L4VBjYuRNYidwn0ssAiAmVW5VbLXX7S5CTs7IQ6fiLK5INzbnqOP6fNIFM08B6A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34943939},"engines":{"node":">=20.x"},"gitHead":"a30c57f3d13cbc52df080e836aaf4e1a0760683b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202604011328.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-a30c57f-202604070826.0_1775550511954_0.2822990065912985","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-2f4ad13-202604070944.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-2f4ad13-202604070944.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-2f4ad13-202604070944.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"78a425256755ba9e4826d2dae0a95790aeddca74","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-2f4ad13-202604070944.0.tgz","fileCount":479,"integrity":"sha512-vx41L0xbOrxoRvlaAxjFwOaXEbXAGVLhL2nli7ItvvpLZcUD6qL/CjnQ4DRLhJYbnS/wFCBzxxA6rFAIgLYsRw==","signatures":[{"sig":"MEYCIQDrzlNCuKwCVyi0Etugk2PB8DVpQgEUhGCdMvu0VuTcKwIhAN18Jl2OcN4igKVN8wlnXdopixFIDo1znCTC112kxJ/7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34967427},"engines":{"node":">=20.x"},"gitHead":"2f4ad13347bda6854ccf3678268d2e24a2a62f9b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202604011328.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-2f4ad13-202604070944.0_1775555159725_0.38750763245553066","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-62c9cf5-202604071230.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-62c9cf5-202604071230.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-62c9cf5-202604071230.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d944bb9887481e0628080f9c68fc896a3e7ccb4d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-62c9cf5-202604071230.0.tgz","fileCount":479,"integrity":"sha512-dTCDrIAUFK2tbKBf3wlySziycv6LqYVzCd6UE254kYBBPY12PPBKOFmMDLu/qpAGMRss8TaaTJBwY+xJoCvQWA==","signatures":[{"sig":"MEYCIQCDUrMPMTx+W+bbinbBrBgbCpKiCPkDoO5KEhHCKsl+swIhAO79s9IH6RMIFiyq8iVPrYIx+m3rqYvT6o8yPruwWr6/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34968072},"engines":{"node":">=20.x"},"gitHead":"62c9cf517aff49bd772dc83c7935e41a93e14496","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202604011328.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-62c9cf5-202604071230.0_1775565154448_0.027608336680280177","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-bbf781b-202604071346.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-bbf781b-202604071346.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-bbf781b-202604071346.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"26c47532e3a1f7d648dd53d1a3c43c5bdda1c568","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-bbf781b-202604071346.0.tgz","fileCount":479,"integrity":"sha512-RMYrSy8iWHdoyH+MMQDfiyUDD6YG7P3RrHWX75dx22jlMwtsmlIHaSbV90mPk3pX4xi/Ks5L1V3p1cSj426NBQ==","signatures":[{"sig":"MEUCICXDydZyPxOCtHiCfhZ7k0UytuDAVN1FdqBYCA9ZVUY7AiEAmQiTGWg6bh5DZQKmdMbVJWtJiR9lFPB11L+X6nmHfOM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34968103},"engines":{"node":">=20.x"},"gitHead":"bbf781b56666e5aab3c81ca17120f1d50ecee8a0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202604011328.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-bbf781b-202604071346.0_1775569688440_0.8894163007239284","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-4d08436-202604071401.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-4d08436-202604071401.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-4d08436-202604071401.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"45a69f87342b43302478b9ec7a87e31d801b6eb4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-4d08436-202604071401.0.tgz","fileCount":479,"integrity":"sha512-Yp01kvOQgsHNZuRQvleE+fpRIn88btq2d2z6cldPKnpVfujpuzMmHFLL7+JSmuPULjRJR+eC33eTXpgh9P0c6Q==","signatures":[{"sig":"MEYCIQDIMEbzIZiO/EhMfspzfgGnK//v3Rdx0gdV5na3Op4TjAIhALs/++HLqMrbFLUh+e7SFtnG4mv4EehDY0AQdZpmlvGg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34968305},"engines":{"node":">=20.x"},"gitHead":"4d0843620ece689e72a531d46bbb582371657b84","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202604011328.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-4d08436-202604071401.0_1775570617305_0.3174160977044356","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-4d08436-202604071532.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-4d08436-202604071532.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-4d08436-202604071532.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"df08feba6e5ee42b49e37129020ae24ca105b545","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-4d08436-202604071532.0.tgz","fileCount":479,"integrity":"sha512-Y/WW1EVTaXpfUCGjzXyoQGnXh7xrItLj0VHUUlk/Hp3z5fvJ2MIgeL0y7qfc+UhxTs4mp4i15WSjvFtc1ybshA==","signatures":[{"sig":"MEUCIQCryHFtoAnQ8g8IPvLOdGymRoZI59Oi7/BiUFmcB1yvNwIgGYECgBCFpuT/cmqGyz+b3HqIpcElseRjyI6q53td6bE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34968303},"engines":{"node":">=20.x"},"gitHead":"4d0843620ece689e72a531d46bbb582371657b84","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202604011328.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-4d08436-202604071532.0_1775576049989_0.15000985714534099","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-75a6fd8-202604071654.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-75a6fd8-202604071654.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-75a6fd8-202604071654.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"be01d67b0041f629db2b07666c344dcb1f735836","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-75a6fd8-202604071654.0.tgz","fileCount":479,"integrity":"sha512-xPOwYF8ikd56z6+RAnUnR9FurnTL/vKg/PXRoVTv5SevqIVKVmtQDATh7VVSFnrvHV6hhOoR+UBIxSI44YfZeQ==","signatures":[{"sig":"MEYCIQChnUwUvjznNyoxucWjcV+Bws4GupuumLHn1af2hNi2IAIhANczeLxEzYV2IqY+QKTcvE8eDb+vH3J6YAJnAZIg/uCL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34968379},"engines":{"node":">=20.x"},"gitHead":"75a6fd89c54131c448bbd44a9926ecb3bc5b2279","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202604011328.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-75a6fd8-202604071654.0_1775580958599_0.7403321287276083","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-75a6fd8-202604080824.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-75a6fd8-202604080824.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-75a6fd8-202604080824.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2fd6b8d777d3082d56b39535c836cd996f3e2297","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-75a6fd8-202604080824.0.tgz","fileCount":479,"integrity":"sha512-JLfnX321VwQWXaEhzjjKckq4kqkHzecWCJUhc3Gvf3wppA1+d9bCQNVOTkOz6iYVF0PuIWPDpodTVtxr6F6PNw==","signatures":[{"sig":"MEYCIQCoYVI5RLJg+ZXK+u96lVmH2NpkzbWKfDn0NXGEA0II9wIhALCpIBjM8b91nwddzLz9niZ29XzwAeRgT1ntorS5ttYX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34968313},"engines":{"node":">=20.x"},"gitHead":"75a6fd89c54131c448bbd44a9926ecb3bc5b2279","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-2197b16-202604080824.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-75a6fd8-202604080824.0_1775636800826_0.1599526253235639","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-29826e5-202604080832.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-29826e5-202604080832.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-29826e5-202604080832.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"924eb342235c2a5ee84bfa626aca7bb449fb65cb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-29826e5-202604080832.0.tgz","fileCount":479,"integrity":"sha512-QFpbANK71ZjamgEQpKVKWskgm6wBxYeYzgc5rRyKRKYnOEMqZ43Bp8/lMFRqknotaRO386CBVGmHDbotmqiolA==","signatures":[{"sig":"MEUCIQDprXL+ORV0ZyQF5nWSInBeTDJ/8t8+LYCkTj6lTAzGAgIgReZfAevV0lSz31VPuoRG08SmOkDp8IFHTYQ+qHM3XMc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34968305},"engines":{"node":">=20.x"},"gitHead":"29826e5a53efa5b0146c140dfee8882938e2d29b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-8c395b4-202604080832.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-29826e5-202604080832.0_1775637267391_0.8052292349108705","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-29826e5-202604080835.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-29826e5-202604080835.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-29826e5-202604080835.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"29d1c2c6d65fd49e76432830a783038990702896","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-29826e5-202604080835.0.tgz","fileCount":479,"integrity":"sha512-CGu+Mvkr6OJ/uPbERpJS5ZV4QXS3+wtrHTdl/GCs4JAr7u3VYcJNE3uLjt6HZJGcSYnAUgFWojYo6H8Relyxdg==","signatures":[{"sig":"MEQCIEYwBizt8jpBLLZwqLmpMVDTRnfVa2PSNo24OE/dr6z6AiBpV8ck0t8kUMvlf6/BOMrYHENPrFQ8g+0dMMagZXeNIA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34967863},"engines":{"node":">=20.x"},"gitHead":"29826e5a53efa5b0146c140dfee8882938e2d29b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-93b51ec-202604080834.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-29826e5-202604080835.0_1775637414242_0.12618103008401804","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-df3ee49-202604080913.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-df3ee49-202604080913.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-df3ee49-202604080913.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3a80625265b1009fd9659f8f95b3bd20c294bca3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-df3ee49-202604080913.0.tgz","fileCount":479,"integrity":"sha512-sMdSLKTGJrF1Z6poeP8J4BL/n3lm0esqN/EREi47HPbitfaqR810Vep5ZsASz4MdGp7KKUGzlZgUJ83F2MhrNQ==","signatures":[{"sig":"MEQCICzTlorLtwPHls/8Gx23+U5XP7/g4NNpFQnAj0MscbH9AiBXe4e/W2XM4t9/bjkGNQKp4UTOxkDSXa6eLQDpvTdqXQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34968151},"engines":{"node":">=20.x"},"gitHead":"df3ee49bdb246868218064bd03a0d22a461e2eb1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-93b51ec-202604080834.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-df3ee49-202604080913.0_1775639723147_0.032674316092269784","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-df3ee49-202604081024.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-df3ee49-202604081024.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-df3ee49-202604081024.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a290b1ef188e3eb8ce50628b1d0d4e6893448b6c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-df3ee49-202604081024.0.tgz","fileCount":479,"integrity":"sha512-Ye019N2UjW6IBsv461w7fwYkyXny4mILYzb7yPQiR8e1VJXWsnZbWw4hoBvbEDOJNI+e8fWXV8wu49BgssmeJA==","signatures":[{"sig":"MEUCIBcOA2wclVCqNtFRJlyLHKVjWhEW/kVCm7fLPSO4ng7tAiEAsPrtGqiZUdMhCzptJro5mtPmznjiAfcsV57N9+JFLqo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34967957},"engines":{"node":">=20.x"},"gitHead":"df3ee49bdb246868218064bd03a0d22a461e2eb1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-93b51ec-202604081023.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-df3ee49-202604081024.0_1775643975609_0.18917514260339496","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-73d584f-202604081314.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-73d584f-202604081314.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-73d584f-202604081314.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f9d9bb802a02cc67d021306352c9e1a869df215c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-73d584f-202604081314.0.tgz","fileCount":479,"integrity":"sha512-B9f8+fKjgAX/d4epcpCKy8LxmwqKoBEWGMWxhhn9ymMLpYvmmUFeJXhLVvQptaCXZhVZ8OUtJMT5Xl5fWN/OYg==","signatures":[{"sig":"MEUCICaOB7h4bMRe/5pC7pfm5WEJHz8c4k8iZwwZaUeYz31LAiEA9Y8FEISPFHpqprxmRaXGjKiigdh7EZIoBY29I2XPYoo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34969299},"engines":{"node":">=20.x"},"gitHead":"73d584f00d5f510f790c724c5455a860719b515a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-93b51ec-202604081023.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-73d584f-202604081314.0_1775654183299_0.09796439814525537","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-6f63430-202604081351.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-6f63430-202604081351.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-6f63430-202604081351.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9e6404440ff968541454e0dcdaabbb94eceb8acb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-6f63430-202604081351.0.tgz","fileCount":481,"integrity":"sha512-S8/fK+STQk0JHQDW9Q3cP6dVthfBuQZ4IM0OtleR+Es6wuqtjX2z+mhnfaEg14mdnHPh2E1Esfg90+MEmj1lyw==","signatures":[{"sig":"MEYCIQCw/VnAlnfJfZwTIYNgg6m6wSzrZhdtkc8YYLFyIO5y1wIhAM9l3vVOgIZcnw8yYKddv4VTW40oop45J9Yo/iKUQSN1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34972495},"engines":{"node":">=20.x"},"gitHead":"6f6343080e7a1b2b9bec1a19fc0b141b7b846ab5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-93b51ec-202604081023.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-6f63430-202604081351.0_1775656416961_0.1002432158215587","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-937ded6-202604081623.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-937ded6-202604081623.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-937ded6-202604081623.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a8d1d970a78f43a7ca5dbed30100bdb58907bcb2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-937ded6-202604081623.0.tgz","fileCount":481,"integrity":"sha512-TM5wrzwrweqDfJ+YbgNFdpSY/y14VihjDJBU7lMw2YA7quEmTez+xoBrEj4pT3UuIA/QmQNgmTPLpiPN4Zki9A==","signatures":[{"sig":"MEQCIB37iOQIhhCkaT9XoeiPyfw1aYFYZfkKdh2JGQ1r1vzbAiA5Z+q/Tml74poN+GeYU9/VAAzGeiITMiwru+dgaBrblg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35013349},"engines":{"node":">=20.x"},"gitHead":"937ded6bfb35bcf9b98e5095aa5ee2cf572666df","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-93b51ec-202604081023.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-937ded6-202604081623.0_1775665503901_0.6777850949755577","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-937ded6-202604081641.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-937ded6-202604081641.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-937ded6-202604081641.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4343b40783f5bf23def1ff80c08fb2a51919b85f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-937ded6-202604081641.0.tgz","fileCount":481,"integrity":"sha512-l9+fWJfiTM7ps4uXDucl6QXBxh/ROtWQ7bSbZp0FsLxh8kFWO1pJEnyQp5U2IZCobLBvHZL+bppArr3rMZgXuQ==","signatures":[{"sig":"MEUCIQCX1muJOLO1FWFvAmU6obq7dZ6QmAHPuQiDapuwpD3ACwIgfGTljJTt6O861SC1OXHzyinD1SdFb0e7EWsxsIxgLyE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35012936},"engines":{"node":">=20.x"},"gitHead":"937ded6bfb35bcf9b98e5095aa5ee2cf572666df","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-93b51ec-202604081640.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-937ded6-202604081641.0_1775666585266_0.7204587935401492","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-ce31d5a-202604081653.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-ce31d5a-202604081653.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-ce31d5a-202604081653.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f5f7ffb7f59cdf8dd9f4aebb808e90f5bde5c9b1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-ce31d5a-202604081653.0.tgz","fileCount":481,"integrity":"sha512-vbWzhJs2eHxfo5NTHmjoH7pQVEjBmJHpYCmE2a0B+FUx0IEu8xdTQLsrvqLixM4ggAkv4g4y07F8cWUQDgC1Ag==","signatures":[{"sig":"MEQCIA2SHUPzv+8qXfNBpYryLI4h9bD2SduSffKtQwMkCsmlAiA8MMW0IgsPaZT/nvjF3QktNmOkXiCOmGKjv4f6cr5Jww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35013269},"engines":{"node":">=20.x"},"gitHead":"ce31d5ad90cd3e7e437a03e23926fe9fe081977c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-93b51ec-202604081653.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-ce31d5a-202604081653.0_1775667335890_0.16680967778991485","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-ce31d5a-202604081738.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-ce31d5a-202604081738.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-ce31d5a-202604081738.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"89203c5a2a8f5a90fa6abb9c5f70e5af318eef47","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-ce31d5a-202604081738.0.tgz","fileCount":481,"integrity":"sha512-jz4OePKXOuKnrZsbf1EsmzW6UzKAQgMdd1Hqd7t8d6UDER02EcyLpJoH03Fflqws9OjmyX0mpGimpqDOWRcxIA==","signatures":[{"sig":"MEUCIQC7fMjUdlUR8Qq4lrAAfu+ylOUtoIyjg0rH9PsZ6IVbSgIgN0tBFHZHIZhSucRywkztJ9WlhtkZk/XO1jtdAygt/Zs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35013074},"engines":{"node":">=20.x"},"gitHead":"ce31d5ad90cd3e7e437a03e23926fe9fe081977c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-93b51ec-202604081737.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-ce31d5a-202604081738.0_1775669995076_0.0007484114278917264","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-6d49bcb-202604081907.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-6d49bcb-202604081907.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-6d49bcb-202604081907.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fdc16f06841a6158f58c3c9cc1037e8df945e510","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-6d49bcb-202604081907.0.tgz","fileCount":481,"integrity":"sha512-BBoEehc2S90UjA/Oho1qZOGcWvqk5YDxObYrcWlbN1x4/eKNgWOMuZZCyIr/uuak1fSMazG2xHKS54ELcuMURA==","signatures":[{"sig":"MEUCIG03wfMTHtg9rgIgTxJcufnPRRZvzQJyqLnn79tviyshAiEAv49tHVpfTcfQyiyXMeDODZIEngBmEaMk67KWvGjVWWo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35173099},"engines":{"node":">=20.x"},"gitHead":"6d49bcb061663035f9b0107ce24be3ab61976f5c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-93b51ec-202604081737.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-6d49bcb-202604081907.0_1775675346401_0.48874782142977113","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-6d49bcb-202604090720.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-6d49bcb-202604090720.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-6d49bcb-202604090720.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"af949f6a3d30183296c0319a914e3315583089fa","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-6d49bcb-202604090720.0.tgz","fileCount":481,"integrity":"sha512-xCQx01Z1HyE9N65UD7ALqqHqd6iWk3MgLPgPdiY9zHf9bv+f9K5RXtMqkb/Z1E2aOsobmcZNB/GLNs8yIs/zUA==","signatures":[{"sig":"MEUCIAP+YG1KQGgWGVlxAXDZgyH8Uo2ENgrryOMqeS2R6nKBAiEA4J6TNg4ZFmcD6Tf+Ih0tKaq3QrfJWSCuQyduFxyyZ+Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35173028},"engines":{"node":">=20.x"},"gitHead":"6d49bcb061663035f9b0107ce24be3ab61976f5c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-93b51ec-202604090719.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-6d49bcb-202604090720.0_1775719315284_0.8668408337645399","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-5c50206-202604090742.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-5c50206-202604090742.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-5c50206-202604090742.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4c329d77f764f3116250db0598f1d3663976ae37","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-5c50206-202604090742.0.tgz","fileCount":481,"integrity":"sha512-c47PUMmijhprqYebKsJqhDkq7YqZW49xHubvKbPNLVtaHl5grvJE5pc7lgQhcTpt4vEDmyW3F6tqzxP6ONxYbQ==","signatures":[{"sig":"MEUCIQC0Lcg0IFQR++x28bQbCQhYBlfmiXXZ+U+KliDd8iV+vAIgcTY0JcftrzcDGAVljXcVE4LRE+qJ0tAbVzzZ5s8Oanw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35173591},"engines":{"node":">=20.x"},"gitHead":"5c50206528086eeae33ea995fac15c02baa51f06","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-93b51ec-202604090719.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-5c50206-202604090742.0_1775720668255_0.9694663041717517","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-2dd3a7a-202604090838.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-2dd3a7a-202604090838.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-2dd3a7a-202604090838.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bd2a74159ba10a168edd53fa94119d2615076a69","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-2dd3a7a-202604090838.0.tgz","fileCount":481,"integrity":"sha512-xeVdMr14IoeJw3jmj4kWF1/C2osDnmpSscUwDvFVscg7Lf9tkgO4XPgJfZClshkqqsolPiNR2BbLYXJp3Z5mEw==","signatures":[{"sig":"MEUCIQCfWxdMtDFQyfirQDLszCqT3F3a3ANGHzM6AIQgkQqDHgIgDdajR6Fe8fqGbUZX2DkA6bCw+1rg+aqcR1MnT8IOvUY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35421747},"engines":{"node":">=20.x"},"gitHead":"2dd3a7aa684f3e28954f4103622d7ff103a66252","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-93b51ec-202604090719.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-2dd3a7a-202604090838.0_1775724034211_0.9780943503998822","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-fff41da-202604090844.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-fff41da-202604090844.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-fff41da-202604090844.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"df1acebdd5c6602b0790a03d3be7c8656ec45ce6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-fff41da-202604090844.0.tgz","fileCount":481,"integrity":"sha512-ZyfzPgqrsZlEQ8tTzBNtq3w3ajA8EqqZ/V499uuIiPy9Woue5u0nLt2wr8yLeDcBs9JS2mvWKgIidv8tSvnU5Q==","signatures":[{"sig":"MEUCIB0ABQvjekJHa1QgPip2jtLTGrvClRqPBVTaMc5ka9x0AiEA+8UKhVqkqndLkn5hJD/rnnwA3BoG6XPrj3qj9gSv2ic=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35424059},"engines":{"node":">=20.x"},"gitHead":"fff41da5fe7938d2842aebbd07badabcdd746513","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-93b51ec-202604090719.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-fff41da-202604090844.0_1775724378194_0.9515698315557417","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-fff41da-202604090910.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-fff41da-202604090910.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-fff41da-202604090910.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b9bbff8e66d9c9598e0679bce30634e6ba9f50d4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-fff41da-202604090910.0.tgz","fileCount":481,"integrity":"sha512-ucZU6NdXO3R3IXoK3cxbxxq0jdJQqr4lN/p5zjYNQ/P0BYzcWtfzIi26XTZh81bEON3rkGyRsxRPYhmeLZmcJw==","signatures":[{"sig":"MEYCIQCCzgNrUtBP2fQCIicdRNAwkbOj3hTEWK9YzZhspQvz+wIhAJ1pkpP3flKxkBDUwrzsu2tOJIsQD95RdALjBHtI77+/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35423947},"engines":{"node":">=20.x"},"gitHead":"fff41da5fe7938d2842aebbd07badabcdd746513","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.28.2-93b51ec-202604090910.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-fff41da-202604090910.0_1775725933643_0.20920607067466146","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-fff41da-202604090914.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-fff41da-202604090914.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-fff41da-202604090914.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9b767f9f1b6c725ef0fedcf976125c2e53e07565","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-fff41da-202604090914.0.tgz","fileCount":481,"integrity":"sha512-VclNW8Ioats/IQoqV2cRMeRquB8lHWMVQLGXSOi9p+SiKofcq/+jM8mewqCatMAl1bFbWucqXKK+LtJ3BjJMEw==","signatures":[{"sig":"MEUCIQC5PHJFNf1vp7TbVXcw1H8EvhNhWEC/rZkvwvMISVkDuQIgEBQ90joTUADS8RPjxYfGvR1sS9/pyidJen/I/hAz6rE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35423897},"engines":{"node":">=20.x"},"gitHead":"fff41da5fe7938d2842aebbd07badabcdd746513","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.1-2bb0a09-202604090912.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-fff41da-202604090914.0_1775726184842_0.30680773853553345","host":"s3://npm-registry-packages-npm-production"}},"2.28.2-46230b5-202604090933.0":{"name":"@flowfuse/flowfuse","version":"2.28.2-46230b5-202604090933.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.28.2-46230b5-202604090933.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"11c953633334c2a50959990910472d5f03fe5354","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.28.2-46230b5-202604090933.0.tgz","fileCount":481,"integrity":"sha512-dpfkKKFkk+1u2rH/CrGTQFbJDYIvsXemBfwHAscRzlVjg8SGCnE6L34qIFspJDdk9VPNK6GazezLl+yptCl+UA==","signatures":[{"sig":"MEQCIEvbbdu0imwXzRSjm4GHgaJGtu8uHKzfFge50G1ffy/tAiBFg5UIP4MYPDRCLmLOPpiWk26hl0xhv7OOXMZ7oY6bqQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35424044},"engines":{"node":">=20.x"},"gitHead":"46230b537b55302504c9ab72c7ce99966cd51f03","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.1-2bb0a09-202604090912.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.28.2-46230b5-202604090933.0_1775727317873_0.43485877256984873","host":"s3://npm-registry-packages-npm-production"}},"2.29.0":{"name":"@flowfuse/flowfuse","version":"2.29.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cfbae68095f500a08492d7b009fbd691dd389dd6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.0.tgz","fileCount":481,"integrity":"sha512-dN35ux26RTdqyqTrYrbzvsbHMvSwT1SkRu2gQDXeu+0giZssFAdx6o8SbtTLJWCQvuhqGoXLomWRLKliQRYO/g==","signatures":[{"sig":"MEUCIGKzciH2ZNiM8KjEV6Xv5tl/LXv+v8MzMf4EBtkn9i3fAiEAzBa/WgdKpu3qpP9LO1ibdRXAUcQghP1UUAgAgpwVa34=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35422701},"engines":{"node":">=20.x"},"gitHead":"2911d05976ad78e341a8c5cf11abf5b80cdd52fc","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"^2.29.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.0_1775727957178_0.3727241903570673","host":"s3://npm-registry-packages-npm-production"}},"2.29.1-2911d05-202604090957.0":{"name":"@flowfuse/flowfuse","version":"2.29.1-2911d05-202604090957.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.1-2911d05-202604090957.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"30cd9e0ff675f06e125bb275543697a56a65c6a8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.1-2911d05-202604090957.0.tgz","fileCount":481,"integrity":"sha512-pSjKt59g7xeFlCtoEs+dV2OR1b5154AHdHmGN6rCRCI8htwQPlrQasLsTdi4nQxRR/SZzFdgOFVFaQedh78L6g==","signatures":[{"sig":"MEUCIDlYYCqojYtMW3PiSO0kQbLFucgkhrn/pb7sa0gi5apzAiEAhf93rzXO9X4ElmZkH4kYTfKkQ263Q7io5p35eweqUx0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35427676},"engines":{"node":">=20.x"},"gitHead":"2911d05976ad78e341a8c5cf11abf5b80cdd52fc","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.1-2bb0a09-202604090912.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.1-2911d05-202604090957.0_1775728771691_0.07288358506966586","host":"s3://npm-registry-packages-npm-production"}},"2.29.1-8c0c195-202604091240.0":{"name":"@flowfuse/flowfuse","version":"2.29.1-8c0c195-202604091240.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.1-8c0c195-202604091240.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ef7d25e9e3bab7386831285b86cdaf5a8d145ae4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.1-8c0c195-202604091240.0.tgz","fileCount":481,"integrity":"sha512-UOD8DT9tB60z6Nfk7bbNgGF+yaxYGPezQOhuWlVILXpBKi6YO2V3WPZqwH3D6Ytc6MmORr7Vi4+/rvoCHboVQQ==","signatures":[{"sig":"MEYCIQD0yevLyx9VdKPBzyETelUZhMrLHJm45wCf7WG00Jp+5gIhAMP0H2XvcHQkzzTb5G6c9cyNOZk4iuFCfLjaUJ1QspJR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35427564},"engines":{"node":">=20.x"},"gitHead":"8c0c1953310acd3282282d4dcc836e4f1280a304","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.1-2bb0a09-202604091239.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.1-8c0c195-202604091240.0_1775738538345_0.4151306320542085","host":"s3://npm-registry-packages-npm-production"}},"2.29.1-8c0c195-202604091357.0":{"name":"@flowfuse/flowfuse","version":"2.29.1-8c0c195-202604091357.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.1-8c0c195-202604091357.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"84074335b956fd0cef60ac98bdf0bf42ae649547","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.1-8c0c195-202604091357.0.tgz","fileCount":481,"integrity":"sha512-9bXSAT7V/L+L0QXvsC/LnsGCj2JASNnHunqCW44f2z28jSX2GsnHSR8GGPI3HGfhFo8rVduSXw6NJScy+vylQg==","signatures":[{"sig":"MEQCIHWcsoPIH7k8SyNARzldDQ3hjAh4ZhOGc/cVIiAzlqSsAiAqcGr+dnbSnVKAnaP6JeFRc1YdeTRQwbI5F/OUts/JTw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35427393},"engines":{"node":">=20.x"},"gitHead":"8c0c1953310acd3282282d4dcc836e4f1280a304","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.1-2bb0a09-202604091356.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.1-8c0c195-202604091357.0_1775743123745_0.25993523395021545","host":"s3://npm-registry-packages-npm-production"}},"2.29.1-8c0c195-202604091400.0":{"name":"@flowfuse/flowfuse","version":"2.29.1-8c0c195-202604091400.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.1-8c0c195-202604091400.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a2336de42307eca28d8ff61546cb41ba2086512d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.1-8c0c195-202604091400.0.tgz","fileCount":481,"integrity":"sha512-cLYCSRyLS5QUbNyGIupu/2O2HVPtqdYIHEk9lJGj5s4i4o+5qyG9hf1u2iCN2iwY0I8Bw2mJKainCejke4NkeA==","signatures":[{"sig":"MEUCIQDuP8ctVeF6byiCc5NVvvSxop9t8mG9IaXKzGiJKP2FogIgS+jwpfxl/nHDEueo7xiQDQTgWfmgYxdLZ6n778UasBE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35427180},"engines":{"node":">=20.x"},"gitHead":"8c0c1953310acd3282282d4dcc836e4f1280a304","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604091359.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.1-8c0c195-202604091400.0_1775743319311_0.42885710554090894","host":"s3://npm-registry-packages-npm-production"}},"2.29.1":{"name":"@flowfuse/flowfuse","version":"2.29.1","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.1","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"22c5544e87b942a0e669ab448027d40a3ccb5ced","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.1.tgz","fileCount":481,"integrity":"sha512-EEttIQDtj0fOjwPUTPViaHTkMsnEcplAQqfwPcgS2G+OGfAHUY1yKaJ2LBM6F6Q3LGAtyvBcImJycJ3X3NHrqQ==","signatures":[{"sig":"MEYCIQDK2oVW9OsFwMCsIfr+GOp4BMgqPg7lstXFbik4KQmWNgIhAJaQnRwr1STklw9AhFu2wo4r8NggcYBCjzW8a7IAXgW8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35422876},"engines":{"node":">=20.x"},"gitHead":"97f3ba074a1e828e410b37d873e3ab4b65ff5ee9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"^2.29.1","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.1_1775743802499_0.2126964049254565","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-c543f32-202604101717.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-c543f32-202604101717.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-c543f32-202604101717.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"03a2dce62e4804c1d85726661eae5e5eb129b3df","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-c543f32-202604101717.0.tgz","fileCount":481,"integrity":"sha512-MHPHKDWDJ/NqVZdY36trNAT+LVcMXknlyq/i8yx3xbK1V/6K8hMkHtbwfcNJ1iaBP07msMMHQaFxq2LJrHnD9w==","signatures":[{"sig":"MEYCIQCUTC+HQHNhwpFe9nuyJJYB76ffGLl0edT07PvOOgsLOgIhALzExTU4nST+FTrj75p7StK2m22GQfCbKdn0YTqIcf/n","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35427833},"engines":{"node":">=20.x"},"gitHead":"c543f32ca7b87331f211af235547186c953f50d8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604091359.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-c543f32-202604101717.0_1775841544279_0.5868146530668501","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-73b0745-202604130928.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-73b0745-202604130928.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-73b0745-202604130928.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d432e91f2dee1524567bcd73793788c6b475c54f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-73b0745-202604130928.0.tgz","fileCount":481,"integrity":"sha512-TYdCcf8dNZiRdTubshiTbJhqAoGR3VS9TRRC+KcbfXDWG9I/wqQj9ZYatGnQMUdMKs3//eVv7j8S0Pz0RKTrvw==","signatures":[{"sig":"MEUCICvLETTA1/+sicZssZg40gH7fyZ2rFJ1eCcS6qmcPC2HAiEA3fGxvR8s49jdKDdMgf+BCPa+ZdVX28wBnTcSrjiuRWs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35437637},"engines":{"node":">=20.x"},"gitHead":"73b074562d56cb28088962f37bdbe3cadae3ee93","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604091359.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-73b0745-202604130928.0_1776072589594_0.5826768423919022","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-a8aff64-202604141100.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-a8aff64-202604141100.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-a8aff64-202604141100.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"edb70e292217d20535a67ff1a05bfb66e1f58a06","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-a8aff64-202604141100.0.tgz","fileCount":481,"integrity":"sha512-5OT95pFXtNPXHps/ykwVjqpSYKWf8EI3t8U5dscRQ3S+egq9ATH6J+JE1sy4TRGTaqEhZBEVK1IxrDMH83Lbfg==","signatures":[{"sig":"MEQCIASq/8kgb56ZeMS9b7fRxpegd3Gvk6zFNFO7wxoBNuoDAiAMzhyf7y7nDqYn/twutgOEr9Ein+yXd2M3fzmVe2tqjg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35437657},"engines":{"node":">=20.x"},"gitHead":"a8aff6402f2206e4d7bfd22603412d282d4c01fe","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604141059.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","css-loader":"^7.1.2","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-a8aff64-202604141100.0_1776164525247_0.3431292194078446","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-531d622-202604141315.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-531d622-202604141315.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-531d622-202604141315.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5326aec800858ae86ba9d073bd11add6fe18f55d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-531d622-202604141315.0.tgz","fileCount":482,"integrity":"sha512-0L1uwT951ZWE9cYTNunoB706Vnz1xPM/szV4J+LQr6Rm6LkXD3UIevdMts6ijYPEDB/bjOHkS+LcU6rR2g/Orw==","signatures":[{"sig":"MEUCIEtG5B4mY58kOW+tVyZa6zcojBvMs6leXMWQ2rmzyrphAiEAmGKPxYBjdiNE/8fYjz9JeEvzv6AjC0i3VwvFao//eB4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35437249},"engines":{"node":">=20.x"},"gitHead":"531d62205e53b1fd1b3a6fad814c04d6db88fba3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604141059.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-531d622-202604141315.0_1776172664917_0.48434800730965977","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-531d622-202604141343.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-531d622-202604141343.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-531d622-202604141343.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0756328ab2e4e8217cd19ff00b726141b1b069c4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-531d622-202604141343.0.tgz","fileCount":482,"integrity":"sha512-zjKoxCw5vG8HHUAFFfPx2/7JYrLjliA3YRdX2OseRdbwgfOrqL8l3ZzSxekc35cCdpLFEi85+DnsW3ztGIjFcg==","signatures":[{"sig":"MEUCIQD31y9qpooSwFoMqTF1kRZ0lVYZpJxGysp7MO2xApNfYQIgQ+dSwaNWoc+ST/6DzVk6KH/Uoq6CGdbDwkkBx09vpmg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35436978},"engines":{"node":">=20.x"},"gitHead":"531d62205e53b1fd1b3a6fad814c04d6db88fba3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604141059.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-531d622-202604141343.0_1776174303495_0.16010352761492475","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-c9047fd-202604141531.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-c9047fd-202604141531.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-c9047fd-202604141531.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f2531f754fbb883c998583f90cd2fd2b895d0ea7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-c9047fd-202604141531.0.tgz","fileCount":482,"integrity":"sha512-cNXGacUEzuyTr5skPNnAZI7dIQekqbDlKiLYjkCLBYIjpSbJLoC1w86TuAhTOBMGbQD03zme0BJxIdICTUIlxw==","signatures":[{"sig":"MEUCIQC+ivdRqHS1iHeQHHEu/4RWyDMqZZiXLrt1VOim1JU80QIgDbEKES5R8/HNMMRND+QlTSAcDzhA3vc3bgb+nNbDOYE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35428111},"engines":{"node":">=20.x"},"gitHead":"c9047fd6d02610ef39a76a88a78aebb6f81114ed","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604141531.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-c9047fd-202604141531.0_1776180805473_0.9352914627680122","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-c9047fd-202604141540.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-c9047fd-202604141540.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-c9047fd-202604141540.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9a1fce6c5a8b3bb35f32d19aa04e504ec510dfc8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-c9047fd-202604141540.0.tgz","fileCount":482,"integrity":"sha512-rWKrqUla5IxamjGvYBtQ029cHeJ/MjMNl4bq7q9oYx5Kyjn15dgAQBO9mNMl3AUuwHpfym8gRpckKszyrJNnkw==","signatures":[{"sig":"MEQCIFwe2NeCK1PwisNyiSuKh4g/q18mjoWa+13+AeWYLl3TAiANsRmrliBDIm11tn0BOD/s9DK0HqG2J9cJG4BYyn90XA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35428374},"engines":{"node":">=20.x"},"gitHead":"c9047fd6d02610ef39a76a88a78aebb6f81114ed","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604141531.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-c9047fd-202604141540.0_1776181310169_0.8443514651882493","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-c9047fd-202604150826.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-c9047fd-202604150826.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-c9047fd-202604150826.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"809035cf9da8cfdeb3ea8dd14bba4c14c28e8a37","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-c9047fd-202604150826.0.tgz","fileCount":482,"integrity":"sha512-9AeL6qKkYnwL2VLS5U0S5AXWGWCrcBcASjn2OajaxTrb2UbqteqqRpb3XLW+YuKBYPFlHr80wXdRYQz05PBSpw==","signatures":[{"sig":"MEUCIQC3SrRYEPQtoeEHObSHmvUsEkufnIKpZEmIhIM0AZJqkQIgRbKfIv9VdLyed2h4Owu7rwsuBHOHZcwpcksRPO/49zY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35428070},"engines":{"node":">=20.x"},"gitHead":"c9047fd6d02610ef39a76a88a78aebb6f81114ed","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604150825.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-c9047fd-202604150826.0_1776241667519_0.807923044100646","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-c9047fd-202604150901.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-c9047fd-202604150901.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-c9047fd-202604150901.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8db78e65a1ea55da39e8acf1777c136a0524e548","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-c9047fd-202604150901.0.tgz","fileCount":482,"integrity":"sha512-ZHcGRLd4HEiAAPvda3g1nmKBuhdJCxm8d5zH2bkCEOfL1p0LG3QcyhbjyqD/6iwq2DWtvHK4mu70qyFj/We4Dw==","signatures":[{"sig":"MEQCICw6mragkpaEEEdMhHPOaSMQoe/CSuDLUx0N5Fal+UK/AiALO0aIM+iqj5UUWkjUaxKqBmy3OMdaT8ZEmOrugCLn3A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35427644},"engines":{"node":">=20.x"},"gitHead":"c9047fd6d02610ef39a76a88a78aebb6f81114ed","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604150900.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-c9047fd-202604150901.0_1776243766712_0.21592266667083648","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-c9047fd-202604150905.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-c9047fd-202604150905.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-c9047fd-202604150905.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"936aa6cc952c60246617df6c6399e96b9b6698c5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-c9047fd-202604150905.0.tgz","fileCount":482,"integrity":"sha512-nRrXU1X+Es1gena182g5irsvbGnNGFZQzApfLXhbLkqcAKJUpiipvETPwNfxYt1m2Rlp5yyWk4A81y92tMeLTg==","signatures":[{"sig":"MEQCIE92MgVmpgiv+UO4QZw2K/B+SSfgOBBN0/ZGIj2rPMRFAiAhZKGcF1pnnikL65LE41C5MjwsngflP/eJpvnCkU9Fag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35428232},"engines":{"node":">=20.x"},"gitHead":"c9047fd6d02610ef39a76a88a78aebb6f81114ed","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604150904.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-c9047fd-202604150905.0_1776244016745_0.5330454749524831","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-c9047fd-202604150940.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-c9047fd-202604150940.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-c9047fd-202604150940.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d4e8af372ac45ec99464b1cacf66a7b30e5365f4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-c9047fd-202604150940.0.tgz","fileCount":482,"integrity":"sha512-mBkIt10tu00YVyGLghZrCe0xXz8W9tbI94hFT4X+OMY+2wLfMU28nBtZpm8+ppGshDGoTQYOk5FSfGhjogtUlw==","signatures":[{"sig":"MEQCIQD5h0pQDtA1EpHfJu5i4wzg3QfU935dIvGiruQVC9ZsdgIfbS7Oqwi9YiWxzwsRTJuVOqtumWXQkjVLF1Vpj0kZpg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35427628},"engines":{"node":">=20.x"},"gitHead":"c9047fd6d02610ef39a76a88a78aebb6f81114ed","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604150940.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-c9047fd-202604150940.0_1776246132590_0.30359942198333534","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-c9047fd-202604150942.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-c9047fd-202604150942.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-c9047fd-202604150942.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fb57b3d2504c3cd7e2cb407576e53e9d307f6e0a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-c9047fd-202604150942.0.tgz","fileCount":482,"integrity":"sha512-ihlgZm0hGF7uk4r2ywfJIeJOjnVBCsElMQ8Vx3O8oYcdGMQUcVpEqkZJ4V7sjupZY9V+bvx2oHW6GAbstJo7tQ==","signatures":[{"sig":"MEUCIEei4edadR01BpG1pL5mg+yBFyZAaYs/iBviJJ3Z3jnqAiEAi5E/zpDT9CjIlASxErU0pLqf9dQdmSxWA1n3u0r9Fp0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35428338},"engines":{"node":">=20.x"},"gitHead":"c9047fd6d02610ef39a76a88a78aebb6f81114ed","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604150942.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-c9047fd-202604150942.0_1776246285582_0.7796410330967167","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-c9047fd-202604151048.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-c9047fd-202604151048.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-c9047fd-202604151048.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5446dd002d88c8a53331d0ea59ce3551dd2e1e1d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-c9047fd-202604151048.0.tgz","fileCount":482,"integrity":"sha512-5qWdpEldzORRkDey3awQ9w2lXosSbt5rVI8bHSGBTOZ63aGObQr/JuH7MxsX16pAD2C0K/l+wjBRl/ffKFpfBw==","signatures":[{"sig":"MEYCIQD5yGObF27fuQ7bvFpFLltaGawFQbd+/+9bTWoCpRId6gIhAPmFBHkxxZunEzjapFJTZ6Tki9EIub/1ELxTP4vVx1m2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35427672},"engines":{"node":">=20.x"},"gitHead":"c9047fd6d02610ef39a76a88a78aebb6f81114ed","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604151047.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-c9047fd-202604151048.0_1776250192588_0.739962503974051","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-c9047fd-202604151050.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-c9047fd-202604151050.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-c9047fd-202604151050.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"caeddef1cda3d6707abc8911bcc8c4610eea582e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-c9047fd-202604151050.0.tgz","fileCount":482,"integrity":"sha512-wUIGRhh70kqJfPueau6GAF2NAEu7xIHzCeXxxMkqARp9zLZpjNDIR3uGB+YW37gwkn+Kd9pRi7zwnrXZv/If5w==","signatures":[{"sig":"MEUCIGJ46nnJn437c+PHq+MTwis6F4T/+ldnBLtnEJXK2BhFAiEA8IK2E/RoF0nm3Ban3Ns+Sf2d2l08Fb62Fj62DNw9/Iw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35427944},"engines":{"node":">=20.x"},"gitHead":"c9047fd6d02610ef39a76a88a78aebb6f81114ed","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604151050.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-c9047fd-202604151050.0_1776250347382_0.2756771218898295","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-c9047fd-202604151423.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-c9047fd-202604151423.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-c9047fd-202604151423.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"39e48501b6469dfca0de2405b9262921ba6bde11","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-c9047fd-202604151423.0.tgz","fileCount":482,"integrity":"sha512-PCb9zXuBsHFFq8qpyI2mWtd9wVt5SIJ8DFq2NAa9lCLT6GkVeoiNTq6x7E392jye03W/FpQTlaCeO9Qi6Fw7IA==","signatures":[{"sig":"MEYCIQDUMhSrmr3msSPg7GIyfaYisa+upMjHLqGO9jhJisrPjAIhAKrtifaJf5d4+iVGyBWpXjxC+jN3ILKUfjNuwy3I6zrD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35428095},"engines":{"node":">=20.x"},"gitHead":"c9047fd6d02610ef39a76a88a78aebb6f81114ed","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604151422.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-c9047fd-202604151423.0_1776263121727_0.6658321570281154","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-c9047fd-202604151441.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-c9047fd-202604151441.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-c9047fd-202604151441.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0ac5e0510d548fdceec07cbd85c786232b9d8e67","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-c9047fd-202604151441.0.tgz","fileCount":482,"integrity":"sha512-MjoCxPwAK0s/7pStGQ1mA+lDvZmktIlebHZqdGdio78FCQDVirGc/jWWHonaNVOfjhv2Wjl03UxoD32SlgLSDw==","signatures":[{"sig":"MEQCIDCDQkLzJj5IX6Trp1p23kUyM7r312N4X05mDf1e7jzqAiBTAcrfhV8tkN3qFV8rcLUIgQJeE7SAq2fnGSxjbUZFmQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35428131},"engines":{"node":">=20.x"},"gitHead":"c9047fd6d02610ef39a76a88a78aebb6f81114ed","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604151441.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-c9047fd-202604151441.0_1776264221125_0.11994753674701375","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-c9047fd-202604151516.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-c9047fd-202604151516.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-c9047fd-202604151516.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"62cfc4d77d6b76ab67776b84058ec48e99eef7b8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-c9047fd-202604151516.0.tgz","fileCount":482,"integrity":"sha512-+VC0QSAI4PVIHPUY8W2vnSq37e1hn8Sr/zdIol/cwJuHYTV55fYvHPlQ9MqSMGS6IdrPSwU9kifDsRV1BcyTaQ==","signatures":[{"sig":"MEYCIQCdQe9iR+uQcEC+cKIKbj5T43XeE8Ue8brNYig41A7pZAIhAIcYFN4F6nwq0mz4v1OB3j8KQKA9ivT7yYyUwvMMlJ1W","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35427969},"engines":{"node":">=20.x"},"gitHead":"c9047fd6d02610ef39a76a88a78aebb6f81114ed","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604151516.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-c9047fd-202604151516.0_1776266308371_0.4779346767581878","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-c9047fd-202604151542.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-c9047fd-202604151542.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-c9047fd-202604151542.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5a7a6de991b43df7d021ea459c755966bb50653c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-c9047fd-202604151542.0.tgz","fileCount":482,"integrity":"sha512-nDCRZU3xf2UiR1z6hTon0zYPjFUQAHpZlfOAUnmx0Zr/Vwqimzs5o92o+azCn+pKRFvn93IHcTOpUEYHqrOeBA==","signatures":[{"sig":"MEUCIFBUdmEz8ygOAQ571WF4fHvZF99k4LmX2WMMHTxkS3w/AiEA65zcvPbq7LqYWNVrE/7/Gz26+CBW+M0EUgmma03HF/k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35428148},"engines":{"node":">=20.x"},"gitHead":"c9047fd6d02610ef39a76a88a78aebb6f81114ed","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","vuex":"^4.1.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604151541.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-c9047fd-202604151542.0_1776267835713_0.5746673263954702","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-7fc8fdf-202604160855.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-7fc8fdf-202604160855.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-7fc8fdf-202604160855.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8f900f4b711be6620ee07364e8b1b9d0afc09529","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-7fc8fdf-202604160855.0.tgz","fileCount":482,"integrity":"sha512-soi4md3PuPD0lUEYaDbGXtakNTj+X0Q098Efdn/qrKRYZcQh/VKxzf1mBRkgK+JoTb4cWc720wVze8Kh8JfQbg==","signatures":[{"sig":"MEUCIBI6A6ZkecPOe1H9IVrYFfx1da3FcIlkFyVOpBX8JPwbAiEA3fzewKEDn8atxrwvcQQ6KrqbPgoSmQpNA3rTtYHspXo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35286584},"engines":{"node":">=20.x"},"gitHead":"7fc8fdf62301f4175cef239e2e2f57a2d9e36ea9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604160855.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-7fc8fdf-202604160855.0_1776329847583_0.808370721136243","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-7fc8fdf-202604160909.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-7fc8fdf-202604160909.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-7fc8fdf-202604160909.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6b547fca85c971e86212bd95c3f315603256f4a3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-7fc8fdf-202604160909.0.tgz","fileCount":482,"integrity":"sha512-LyFEPiHmRB+RQKFTF88F1lIgjSuF/yogwK9T/Vzc7oQIwAOQFs9S+1mvJwv1OcRhBfSj9oiXrAP7KylR2xSL+w==","signatures":[{"sig":"MEUCIQD9z9kB8lgtmwPnzBh/98bVd1/p7bTd/mWO+TP5Z2NC7AIgG7LnitKfcLU6zUS5zweLFKTYvCtofTLQfgf0cNOT2B0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35285830},"engines":{"node":">=20.x"},"gitHead":"7fc8fdf62301f4175cef239e2e2f57a2d9e36ea9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604160855.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-7fc8fdf-202604160909.0_1776330703067_0.02697381063123716","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-7fc8fdf-202604161027.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-7fc8fdf-202604161027.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-7fc8fdf-202604161027.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c7eca78a521de6bc949b65644d9bf802ac7d93ce","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-7fc8fdf-202604161027.0.tgz","fileCount":482,"integrity":"sha512-OX2UqiSNtd9+v5hfnPzoGcuAr6HycYQMDi4P41p0OWPt2StGHdpb9kbukBturmxrdAfnVEg7EOf1kiJoaFohXw==","signatures":[{"sig":"MEYCIQCYguDEgBWoiHoiOeJRN/ZOvFDjsw3sGfPiGze2jwUVOQIhAOF5ndszfkrquCrUORe42THb2LYqDgfXsESplLp2DP/1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35286709},"engines":{"node":">=20.x"},"gitHead":"7fc8fdf62301f4175cef239e2e2f57a2d9e36ea9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604161026.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-7fc8fdf-202604161027.0_1776335347421_0.6010821280460286","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-7fc8fdf-202604161101.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-7fc8fdf-202604161101.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-7fc8fdf-202604161101.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"884e3a04a4d4f3faa51dcf2ee771a4e1aa145da2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-7fc8fdf-202604161101.0.tgz","fileCount":482,"integrity":"sha512-OzoExTFiaxZxEt938kORLXE3aq3CCZ0QXGB8cNq+0bNTD12mi2KnzkavP63EQfkUtG33Cn7eEue1mOsZK14F4g==","signatures":[{"sig":"MEUCIQCcvLBTs/I7EjSt2R5FnRhdPy5vSzgJs9lOm9Zp6dLxLgIgFTOEbLldfuI2rB3gBAL6EHKUFc2CuYJqalIMwwsF5uE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35286247},"engines":{"node":">=20.x"},"gitHead":"7fc8fdf62301f4175cef239e2e2f57a2d9e36ea9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604161100.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-7fc8fdf-202604161101.0_1776337375900_0.15968560568948487","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-7fc8fdf-202604161427.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-7fc8fdf-202604161427.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-7fc8fdf-202604161427.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1c36eb693f93ccd053e48e13770f643a3df66531","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-7fc8fdf-202604161427.0.tgz","fileCount":482,"integrity":"sha512-Hp8mXdSpJYMJ5zL58Q4t/3gPEV6Uv1Tw/i0+U08z5xQiRRtCNgakmX61ut23+D/uqjqqxfR5xqG2Kue3yghtpA==","signatures":[{"sig":"MEUCIBV6j0hNorImy6uWbTo8qGQDtH10EpMnr+k6ybo8bkvJAiEA08eb7RfNlBLU2p2YbgU1qRUkJfvp3ybPY80t4adymAg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35286697},"engines":{"node":">=20.x"},"gitHead":"7fc8fdf62301f4175cef239e2e2f57a2d9e36ea9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604161426.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-7fc8fdf-202604161427.0_1776349727925_0.6593068380586578","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-7fc8fdf-202604161432.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-7fc8fdf-202604161432.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-7fc8fdf-202604161432.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b4d1c72cc64efb893a753ad6a387a847dfec8c8a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-7fc8fdf-202604161432.0.tgz","fileCount":482,"integrity":"sha512-ciZ6mvhlyrI17nF4xmLtaHMXdFTYft1Y8enbo328K1ioaQmMx7mMwCLW6hMhLJQGzk5F+qPW1rfVO/B/5C9obA==","signatures":[{"sig":"MEUCIA4w/jGxY+WktBuqL8UZSWFG4JqyczkWZ9I3LESqM75QAiEA+Rk+3kT8votniQ4QV5dE0KizsAFxLhvbs71iWz7438I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35286546},"engines":{"node":">=20.x"},"gitHead":"7fc8fdf62301f4175cef239e2e2f57a2d9e36ea9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604161431.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-7fc8fdf-202604161432.0_1776350042687_0.5447245565067207","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-7fc8fdf-202604170832.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-7fc8fdf-202604170832.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-7fc8fdf-202604170832.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a7a487d64128d90ac7137ce79d5fff01a37d7757","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-7fc8fdf-202604170832.0.tgz","fileCount":482,"integrity":"sha512-paGHZwxcQbBQIJBCqX5VKm21BfVHB2KYaM5VzC9jIhIQmD3k8z6emXRu85pS7yEY6UCvA22JtwAUSzeyMK3Oqw==","signatures":[{"sig":"MEUCICDnJWp6PhxFQ+LcBfh3e2jGETmabliW8UegkSBoUQ43AiEA8JpPyq1/kADPLOIHSK/XWo2iRAvCOIh7pQ932Oxt8pY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35286621},"engines":{"node":">=20.x"},"gitHead":"7fc8fdf62301f4175cef239e2e2f57a2d9e36ea9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-04fa704-202604170831.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-7fc8fdf-202604170832.0_1776414848603_0.04340804835110146","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-7fc8fdf-202604170838.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-7fc8fdf-202604170838.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-7fc8fdf-202604170838.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ae75102e2885d0f91834eddf2a07251a0d41d645","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-7fc8fdf-202604170838.0.tgz","fileCount":482,"integrity":"sha512-it0tgJOanN4RrzQIJHWkFHXf+tjRZ9HTj0aowA/jVvK4qlFza5OfsP6SxEt1ggtceixOE2FTytkYLpgi8cLllQ==","signatures":[{"sig":"MEQCIHfYssGvbGg4qvVHm8ejAx6wyR2sVzY/Ta1vty/cVF0pAiBBfdH4NGtPfC+hmAL4zYfrXgneZO8YLq2oiQn9OWUwIw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35286501},"engines":{"node":">=20.x"},"gitHead":"7fc8fdf62301f4175cef239e2e2f57a2d9e36ea9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-c1ba1e9-202604170837.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-7fc8fdf-202604170838.0_1776415197671_0.7433668188665039","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-13940f1-202604170906.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-13940f1-202604170906.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-13940f1-202604170906.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7ec875ea018c2cf05b06edab3985a6e1a7d56e25","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-13940f1-202604170906.0.tgz","fileCount":482,"integrity":"sha512-rD8yYQUJEWdQgmq8RDQBrYKTJNIjVVUr74LjqPznKrNZHnxiMAKFUgWkLan/QVEcbOjZVnyfbFtnsVbGUSyi5g==","signatures":[{"sig":"MEQCIDGCctc153hsAQjI8kWatTN6r1LTjYck8QPR2Ya+lmOaAiBhr3AhG10up0r76qKUcMRemISPmoCtyiHvOZn+GgCAfw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35286356},"engines":{"node":">=20.x"},"gitHead":"13940f1dc4c208cdaef387ecfcf4a5c9c79ff08f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-c1ba1e9-202604170906.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-13940f1-202604170906.0_1776416913993_0.6619959445922103","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-13940f1-202604170909.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-13940f1-202604170909.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-13940f1-202604170909.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8f415fa16c8b634b8de5962bf6326b06f2899823","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-13940f1-202604170909.0.tgz","fileCount":482,"integrity":"sha512-sMIOjiksI0fXRXUm6k/Ng2xUrHaMVjqdjt0xCD/4UdjJBtVp19erdqtqB7T7oqCqX3w70Gb/jP4XR+obS5NE3Q==","signatures":[{"sig":"MEYCIQCWcF1ei8jXx5cd+fY78poXKyif5m9AqDwWSCFx1/y+CQIhAIzp3LCWG471y5jh7jfkJ4ffcBRLlhnHc839JoTYbJmB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35286652},"engines":{"node":">=20.x"},"gitHead":"13940f1dc4c208cdaef387ecfcf4a5c9c79ff08f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-c1ba1e9-202604170909.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-13940f1-202604170909.0_1776417097626_0.7931088863128215","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-13940f1-202604170915.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-13940f1-202604170915.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-13940f1-202604170915.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"05337e07389f18b532b0d3100a7202eac949b29e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-13940f1-202604170915.0.tgz","fileCount":482,"integrity":"sha512-TdY6L7MNQjuNHmKUSggm0ihRs/fdr9j3r6KMTxM/wz2NMVLKWBIqk1oFa4Xc46HItHQnW/MheZz6xU/zxwj7vQ==","signatures":[{"sig":"MEQCIE2OIm0h6DLeLk6YYTOwfh3XtFTNdbqfOTbprgTtQI4TAiBDJHjQA0t1EQQCHyG2l+ysWhVmcFTfzKUue+35LcaSqg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35286484},"engines":{"node":">=20.x"},"gitHead":"13940f1dc4c208cdaef387ecfcf4a5c9c79ff08f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-c1ba1e9-202604170914.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-13940f1-202604170915.0_1776417416187_0.6306818389554703","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-13940f1-202604170918.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-13940f1-202604170918.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-13940f1-202604170918.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ec73af8b78c2aaf1a6e519ec726bfd758eb5afd5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-13940f1-202604170918.0.tgz","fileCount":482,"integrity":"sha512-gvJLffycBdC4AAhZrM7tmNlsncfGgmzgxHXHG5SHUlsADaNMRbCsic9D3qvh8cKSIfTSSwJlXy5fXPnVwTSNDQ==","signatures":[{"sig":"MEUCIF/wN9lW2dgk/qMsKDaw/lAY2UtDGPZmLgw17MicniLeAiEAyYAj4smD3ARtM8goOxoGlrQjQjm+Jy+NWLt+3vNkA2Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35286596},"engines":{"node":">=20.x"},"gitHead":"13940f1dc4c208cdaef387ecfcf4a5c9c79ff08f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-c1ba1e9-202604170917.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-13940f1-202604170918.0_1776417591450_0.1976235494765033","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-de4b678-202604170925.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-de4b678-202604170925.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-de4b678-202604170925.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"664ae03207cc8cc2936a04caa97f5cd148b078e1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-de4b678-202604170925.0.tgz","fileCount":482,"integrity":"sha512-VIQnYUoxG0SSYc8I1vqu3S8VtxjCTiTMN/ybh+JrxvvPECPkTb6DV/nKM3e7tgCfRC9UuqncnN6L21Z8vMcdXg==","signatures":[{"sig":"MEQCICnFhW8kU94QHXsJCh0YOgClScpvNpOJGwx3zsZhFP0lAiAQTWpA18kWDStQtK0HHzdVcuswIfGGBxONP87WGnnOiA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35286634},"engines":{"node":">=20.x"},"gitHead":"de4b6785bc49e8e5256a24b374c9390724395583","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-c1ba1e9-202604170924.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-de4b678-202604170925.0_1776418011745_0.37636863316581914","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-de4b678-202604170951.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-de4b678-202604170951.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-de4b678-202604170951.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6c54a8555ffbdcab766451af572c27f2492e279a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-de4b678-202604170951.0.tgz","fileCount":482,"integrity":"sha512-6GK/xAzIAodD4/zpQzdDC2BGgA0bGZyab2pNzzfMRxaJmlVc6cffQnrWbux6AIfdPuNszZ+B9AlD8DeG3wLsZw==","signatures":[{"sig":"MEUCIQDZbYYwPRmCUd20AsIoL13ouO/xFUnEMUvTV8N5/O9ChQIgYSdAlcr2yCTytRHxf/g7DDb/CCVKpB3A2Ojb9QZHYhw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35286192},"engines":{"node":">=20.x"},"gitHead":"de4b6785bc49e8e5256a24b374c9390724395583","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-c1ba1e9-202604170924.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-de4b678-202604170951.0_1776419621336_0.952826199581752","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-dedf07a-202604171015.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-dedf07a-202604171015.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-dedf07a-202604171015.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6090bf6b82069486f7e8f10e87e5f100f035c62a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-dedf07a-202604171015.0.tgz","fileCount":482,"integrity":"sha512-7NsBXm0VE9zVLftg8eSOpbk/Xb5JjMWz+SHuxMIHUClXU6cdP6LRX1dJMTPBSy93uTbtGww7xBV//H/FDduTIQ==","signatures":[{"sig":"MEYCIQDrDF1tzcsZvD7PFuuImQSg+NefmMYg5Lj+xHsJW9xxEQIhAK7WdIGmlpMGWsPPmX5E6aoG6uQ2EdVWiT+hkNpNbUaS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35287351},"engines":{"node":">=20.x"},"gitHead":"dedf07a85ca14761bbd8cfb8dff980cb37fc216a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-c1ba1e9-202604170924.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-dedf07a-202604171015.0_1776421038786_0.13938615598027315","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-a308e18-202604171336.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-a308e18-202604171336.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-a308e18-202604171336.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cf17b29410886491925a99dd9ea85dafa7db492a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-a308e18-202604171336.0.tgz","fileCount":482,"integrity":"sha512-nJ5VQzLiem5rHAZgrMF/UurBsLAbOOU7uam0g8vvZGILOTyXLYE0OeF4bjh2gZyLhswgf5cp0OA0pzRn2B3oAw==","signatures":[{"sig":"MEQCIBSEDCfzGGQh/0VmqQYPNk5H+v+QkPyrETRTq1pDP+arAiBqNiD0zRLY3vafzF6ammP9wtwQ2doozz45O/IbqnCcIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35287244},"engines":{"node":">=20.x"},"gitHead":"a308e18044bb206c20ddf1fa95865cc4b3c33117","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-c1ba1e9-202604170924.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-a308e18-202604171336.0_1776433086722_0.0021073368251591784","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-2a014a3-202604171427.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-2a014a3-202604171427.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-2a014a3-202604171427.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bd75b2fc92c178a4019f03263ea9dc6bcc7c099f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-2a014a3-202604171427.0.tgz","fileCount":482,"integrity":"sha512-ixOEdHuWK2ay9lN2znwt4HtrrD9qHNAg2XnuXu4fUDOnpWXmbQfaF8vbRyLE8lXQqSx23cdN+KpUHtqSe1jvAg==","signatures":[{"sig":"MEYCIQDxFZY6lS9kF1ouGPHrwV+nTpNW4tf/67KoUQiwYhDUoAIhAI/StKqOS4N12B9iWdAcDyXn/N3I3lU7Xe0oBPkVkTG4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35286951},"engines":{"node":">=20.x"},"gitHead":"2a014a352fc05b51ffc08e3e75da83cb99708c19","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-c1ba1e9-202604170924.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-2a014a3-202604171427.0_1776436165271_0.28610156788851526","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-2a014a3-202604201135.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-2a014a3-202604201135.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-2a014a3-202604201135.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c460734fe3ca8dddd205daa39d7917018331b0be","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-2a014a3-202604201135.0.tgz","fileCount":482,"integrity":"sha512-wBACJ3g2ZeT+OBPyIwzOEVQQIAQRWd9AaxEsSzn1dTDmcfLTwwVrqdzC5VPCoqtONFdIf44S4CQsujawVYId0Q==","signatures":[{"sig":"MEUCIQCiQ7uvKlGKvjwA+1YONIM4/wh28dw3YGqnwDd1jhXeCQIgGNUYmVPUP/EhuJ+eoqTKSjxjkoWUvznlhlfQ7Bq1oXs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35287052},"engines":{"node":">=20.x"},"gitHead":"2a014a352fc05b51ffc08e3e75da83cb99708c19","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-a726cd0-202604201135.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-2a014a3-202604201135.0_1776685060163_0.853438386856076","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-e8217f9-202604201247.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-e8217f9-202604201247.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-e8217f9-202604201247.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4ebd405dc0bd2fc868d2497914057a368b525a40","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-e8217f9-202604201247.0.tgz","fileCount":482,"integrity":"sha512-zjlxvPi0lX/5KHMb6x9y4pQ3208u2Y1m47IHTjQ4oh0CBbgBjXffeXGcZwaJ0TknQMP3pnMMtQ8SzV/dthWmyA==","signatures":[{"sig":"MEUCIEok512CvagJ+fpmGitux34LutLqOuOfoWrIZ0c42cM6AiEApuXGZ3Pb+IVLn0GDercoJ83uetz4EolXoNG4yDAK7LM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35287272},"engines":{"node":">=20.x"},"gitHead":"e8217f94118bc2ed72084f36248646e9878fa6eb","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-a726cd0-202604201246.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-e8217f9-202604201247.0_1776689324530_0.7337600426563533","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-3e7a2d6-202604201334.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-3e7a2d6-202604201334.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-3e7a2d6-202604201334.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5c02aea723fa81fe49340bed0e69d7900ab49991","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-3e7a2d6-202604201334.0.tgz","fileCount":483,"integrity":"sha512-CvXgQKx4ifoxasxkJQRRdyOZOmigF9tKhKijRfZ0CUzfLwauBjJtrQ9TMvD6wxYUn66wHI0p9QGtfkcbWi0SIg==","signatures":[{"sig":"MEQCIDzZwUtpiKeDeJ8t+GuM0FN/MwaMK4shS+fDN53PEwamAiB7UQwW1QJDO132i4XJPfmmsELFN1SVsxZ9VKJpU8j3sQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35291049},"engines":{"node":">=20.x"},"gitHead":"3e7a2d6bce9feb22a0508ea8d87d68c2435c2b0e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-a726cd0-202604201333.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-3e7a2d6-202604201334.0_1776692151754_0.9408953196398098","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-3e7a2d6-202604201344.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-3e7a2d6-202604201344.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-3e7a2d6-202604201344.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9aa4d7533f23323b5fba5d78d6a7174293fff167","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-3e7a2d6-202604201344.0.tgz","fileCount":483,"integrity":"sha512-6w5lwldzfLWiKC1C2ggsouswOrqAG+M/ZLyfBrSa6vUpzAKQZqkjIjiS19DoWsFvUlt0mJ/C0VMKonih6CgHQA==","signatures":[{"sig":"MEUCIQCYVUs4gCsmHtVDK3x/9zAYjFMIqLZff6FDtzwZIp7LOwIgB9ACUwrW6igoGs33ACx5DfN+k83b/4fXgX1STgfV1+I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35290755},"engines":{"node":">=20.x"},"gitHead":"3e7a2d6bce9feb22a0508ea8d87d68c2435c2b0e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"9.0.0","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"5.2.3","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-a726cd0-202604201333.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-3e7a2d6-202604201344.0_1776692793522_0.9811166390503656","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-6ef753f-202604201608.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-6ef753f-202604201608.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-6ef753f-202604201608.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e99f74986f60eda69f5c6d50039630b8439ad672","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-6ef753f-202604201608.0.tgz","fileCount":483,"integrity":"sha512-W+jsw6aEGOEqqk3uuGL701P8SrTakhCJ3c7FdwuZCxUahfu4UxCSZt+VID78YV511jMZZnmik2DEb0czkd8uww==","signatures":[{"sig":"MEUCIGTvoLBVYSqcHuw3shwchR/mTfCFcLZu/ZMtw82ovw4wAiEA7DLWUy8tRR52e0bz9x3D9XYmBzOHKIntrZkcXGpANEo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35291211},"engines":{"node":">=20.x"},"gitHead":"6ef753f7c1900be92632c03e3e6537492efffec3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-a726cd0-202604201333.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-6ef753f-202604201608.0_1776701402852_0.1312642344343442","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-6ef753f-202604201622.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-6ef753f-202604201622.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-6ef753f-202604201622.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4e48ec64ef3f28de1d255f81d63214a80f40e448","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-6ef753f-202604201622.0.tgz","fileCount":483,"integrity":"sha512-KTtoziI3qYN8N5UTB3wC8J+dHa5YvX19rjNWF6uMhnsBdJKOiV/O7VWx5QiynXzMsITi2V5Hl+S/v8LjjsHmGw==","signatures":[{"sig":"MEUCIQD+iSiZ9vfEFfrswS2HrVtEbvXwxFLBHWNKdwwt7k4tfAIgcpIPz6mit0fPeqvaNAHvcUc0rD0uaNWwXoco8u7LjPs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35291084},"engines":{"node":">=20.x"},"gitHead":"6ef753f7c1900be92632c03e3e6537492efffec3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-a726cd0-202604201621.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-6ef753f-202604201622.0_1776702231431_0.09934010719562214","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-6ef753f-202604201624.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-6ef753f-202604201624.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-6ef753f-202604201624.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9f6da0125133682057a309d40ab9f9152dabe505","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-6ef753f-202604201624.0.tgz","fileCount":483,"integrity":"sha512-b4Td2iOgMN9use/0M1vw+sVyBQ2g94qPyBHvPzbMAS7v7gfmV6U+gcIAA2E0eY9h5S+TaeyYvbyNoY859zMrfA==","signatures":[{"sig":"MEUCIBmFKk5TY4cZIXH5N2br579VBiGNX+FxsPv21XVisQqrAiEAiixDNCCCbTbYXIQZBBd2rGmoLEt5VQFGlJJKW45jDVg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35290896},"engines":{"node":">=20.x"},"gitHead":"6ef753f7c1900be92632c03e3e6537492efffec3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-a726cd0-202604201624.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-6ef753f-202604201624.0_1776702388303_0.50627407935117","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-6ef753f-202604201637.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-6ef753f-202604201637.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-6ef753f-202604201637.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8d5f10cf6d561a88a4bcbc0838a9443d8ecb37e2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-6ef753f-202604201637.0.tgz","fileCount":483,"integrity":"sha512-jZHI0RToezE8Nm3GktLZ22rUA0k66zbyH8HgNWHyR4nH6lyRUHPqyD45ick7OpyTrYlP/Fq/by6HAAO7KBDPPw==","signatures":[{"sig":"MEYCIQD2oqL1Nl1so0X6SVGUtr32Ii2lklUFKAUwzGB+jdg5QwIhAKfn56toBULfG5LhOHX3AGTKxNcWnz1Cfaw9mMfRN/AG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35290945},"engines":{"node":">=20.x"},"gitHead":"6ef753f7c1900be92632c03e3e6537492efffec3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-a726cd0-202604201636.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-6ef753f-202604201637.0_1776703130524_0.387313047322996","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-6ef753f-202604201947.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-6ef753f-202604201947.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-6ef753f-202604201947.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5722c7e001f487008391277828ceb7c3bdd9db47","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-6ef753f-202604201947.0.tgz","fileCount":483,"integrity":"sha512-FdTYw+vXae4lnbpujd7ib6Sg/sy8cy/A4H4sQlThsnhI4jt507aG49lK9bJ2zTj1QqwWiWAGRnJtu1IOBKrZoQ==","signatures":[{"sig":"MEYCIQDqtpygNJEoxlASm30tDI9Y/PNLgEBBU5HkI196BGni0gIhAPVqiQ7peRspT9uG6TJ58ILJNP0qPJd49EnYJeIX5jdI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35291235},"engines":{"node":">=20.x"},"gitHead":"6ef753f7c1900be92632c03e3e6537492efffec3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-a726cd0-202604201946.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-6ef753f-202604201947.0_1776714537781_0.48144455167117295","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-6ef753f-202604210529.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-6ef753f-202604210529.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-6ef753f-202604210529.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b2da9cf6f769db9c11590c8c62ad8a5c88356eda","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-6ef753f-202604210529.0.tgz","fileCount":483,"integrity":"sha512-/Vw1T2H8uFh/NoLTqiAjn1WqD7ezqaJtt/0vrfCp8Zx6Si/pmynvTA+Nt9/I3jCT347rtC6nEH27hGFQNtFl5g==","signatures":[{"sig":"MEUCIQCWRopWgR0Kew2uOQnyRYW6VnzexVXQbWkgerIeulsT+QIgC2CSDXi3lFOT08a8ei3cpRDA0WikiOq+MKY4G+SqCxQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35290912},"engines":{"node":">=20.x"},"gitHead":"6ef753f7c1900be92632c03e3e6537492efffec3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-a726cd0-202604210529.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-6ef753f-202604210529.0_1776749487612_0.27449645657238797","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-6ef753f-202604210532.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-6ef753f-202604210532.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-6ef753f-202604210532.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"168bdea116915431d4735d5ece841ccb3f8e8979","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-6ef753f-202604210532.0.tgz","fileCount":483,"integrity":"sha512-bbIs2X23tl1j8z6/AeEA58D47kULKmmsANXTWLTQhW3AkZIvar3e5XksaGL7OQ3FmZypTlBqjce0Q8+qXqOVzA==","signatures":[{"sig":"MEYCIQClD3ZSClLUJ3RXloNG53g6bLULDQG1v84Pl0lKIAAC2AIhAOMs6ZM2bltmjKeRD6ns6LvWaH6CdoI1e4CocOEa3Kqs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35290930},"engines":{"node":">=20.x"},"gitHead":"6ef753f7c1900be92632c03e3e6537492efffec3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"10.8.2","description":"An open source low-code development platform","directories":{},"_nodeVersion":"20.20.2","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-a726cd0-202604210531.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-6ef753f-202604210532.0_1776749650284_0.9460545500178406","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-4a0b173-202604211026.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-4a0b173-202604211026.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-4a0b173-202604211026.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2d228d50d194753a3cf6660967c4eb6a7437df56","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-4a0b173-202604211026.0.tgz","fileCount":483,"integrity":"sha512-GoXTuLzHzUWyWZdTqn8ObJEyTJYFB62iJ11bsrAameN1LKnTIWShXaAuStV9EAuns0+IVemLnmzBjDKH9q8zLw==","signatures":[{"sig":"MEUCIQDAmN9JFTPeFAhOESaQQR7UAu34qjgf/uPKLuQc2KItzQIgDgGWQtcJ4xbcwQUVRVhC9bENrklmtgJ8zaJmJebkjTo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35291188},"engines":{"node":">=20.x"},"gitHead":"4a0b173e4788648408b8f7091af40868346dd67e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-6529fb2-202604211026.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-4a0b173-202604211026.0_1776767293892_0.13723134146589167","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-4a0b173-202604211105.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-4a0b173-202604211105.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-4a0b173-202604211105.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9f0c1bf95be8174c79ed63514c6b4a38174507d5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-4a0b173-202604211105.0.tgz","fileCount":483,"integrity":"sha512-ScX22y+as0xJny8qwtRSIQZoqsPS7+LmjmrdxxP0NOM3KAFHR6V4phy5FnjKc/JMlyYUzWYLqbOCJpMjAgP4eA==","signatures":[{"sig":"MEUCIQCK1tgFTC8BVm4E2IYM0TQFKkxBfaS0wfPzL9CZFFUqDAIgYfjoAztBjGYMdDlkrjqO4imVJQ9uOHQoYOTwxkA81sc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35290923},"engines":{"node":">=20.x"},"gitHead":"4a0b173e4788648408b8f7091af40868346dd67e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-6529fb2-202604211104.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-4a0b173-202604211105.0_1776769603366_0.35559847476743656","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-5d011ef-202604221428.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-5d011ef-202604221428.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-5d011ef-202604221428.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d066ce9b04e8b3aca2b81c82e64696a4a3c3e4db","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-5d011ef-202604221428.0.tgz","fileCount":483,"integrity":"sha512-IQm1W0nBoDq6URRuUVBppi4YKfpZD74/5DSYF9L5W4QFxsrm9iHIVC8e6UKx1uzDDZ+uzkJBMHAKt9PPDYziCw==","signatures":[{"sig":"MEUCIDVFeVJc+NIQlW/k7ZxUdR2um5zRDyMUhDXWN43focyCAiEA55OmjeZqObpqvwm1BwUISzvYFfO7ZgfteNnUwfMVeHQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35291765},"engines":{"node":">=20.x"},"gitHead":"5d011ef36b9e391d4124f5aaaa1bc6fae9612c9b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-6529fb2-202604211104.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-5d011ef-202604221428.0_1776868177954_0.1649862126966044","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-5d011ef-202604221637.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-5d011ef-202604221637.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-5d011ef-202604221637.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d3edd019bbf56e141bd58a9a2ea6220c655ef8c6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-5d011ef-202604221637.0.tgz","fileCount":483,"integrity":"sha512-l0my1PxLpoL9ytJndOx3LqV51WVkYdYj8QIl6JONmcwhauFT8RurMNoN4YaGTOzkNJVlMc4WIF4z/D5LcIioqw==","signatures":[{"sig":"MEUCIETWvLiNxsP3YV6oDMGLHEtH1Tfun9AXWl3+ZVK5F7jSAiEA5NSTbHtiKOFtPJEPsBwQqbWRG3T4CBRuUXf0dNbCO2c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35291946},"engines":{"node":">=20.x"},"gitHead":"5d011ef36b9e391d4124f5aaaa1bc6fae9612c9b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-6529fb2-202604221637.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-5d011ef-202604221637.0_1776875952477_0.4801902106386424","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-2b3a0ec-202604221843.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-2b3a0ec-202604221843.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-2b3a0ec-202604221843.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6861f583f8f4d43ccd8c6b6fd59e6a5b938f9706","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-2b3a0ec-202604221843.0.tgz","fileCount":483,"integrity":"sha512-0vxcw8gXjy1mbnobjdFySGulp8bynCBarKTlABPTUJD5GZPtC8wztbEgg298yrznZYQz+TfFnCHCQn640WsWaQ==","signatures":[{"sig":"MEQCIGVJihqw9BN5LYYxHAsmXjp1XDYK+XDeEiYdhsw/BtbpAiBjj5GYxYnBfSg2fSox+7n8k2D4+xbZAicWT90uyucN6w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35291666},"engines":{"node":">=20.x"},"gitHead":"2b3a0ec26da113a2f697249a3c69ef06ae16f3ff","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-6529fb2-202604221637.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-2b3a0ec-202604221843.0_1776883519329_0.9781680321627941","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-2b3a0ec-202604230517.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-2b3a0ec-202604230517.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-2b3a0ec-202604230517.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"064e6e5f85e2367cfff23c0337881e1c59b5ca8b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-2b3a0ec-202604230517.0.tgz","fileCount":483,"integrity":"sha512-Xx+6/pGI446bTdM1c4fClfy+uaZr4nDg+RPDOdgQN22AqTtvBthvX0Kw8dvMjoEorwt/F7aTJoPNkd5aCcJDBw==","signatures":[{"sig":"MEUCIG+VUVFQzkFO3BD1LIDRWUmWDNR2XdJbKB+39m5j8KQXAiEA7RnERGcYTt1sIXpkNMvu8ICqmnlkGD3PzcMpQKz/DTA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35291504},"engines":{"node":">=20.x"},"gitHead":"2b3a0ec26da113a2f697249a3c69ef06ae16f3ff","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-6529fb2-202604230517.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-2b3a0ec-202604230517.0_1776921576177_0.13110151725337915","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-6961d4a-202604241507.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-6961d4a-202604241507.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-6961d4a-202604241507.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"091b41f752f8aa7baf4c0f16464ad38f606395d3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-6961d4a-202604241507.0.tgz","fileCount":483,"integrity":"sha512-olXY+7BPUSsFRIr1yDpSiXPMY6iGK6MFbdOl90/H1BaxV5TghNwbtJzKXCvbczy1xJGKYKbRKQ03eB+N90ZHsg==","signatures":[{"sig":"MEYCIQCptDuTi7tLq/hv1zKPPn4JxWMeSyMxj2edwVXB50rVUAIhAOCYrmH/qYHdrV+4Kz0TPqqzxctfYYhhnebRXiDzGUeT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35292187},"engines":{"node":">=20.x"},"gitHead":"6961d4a8413233575c01338e6470a9d27ff78004","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^9.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-6529fb2-202604230517.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-6961d4a-202604241507.0_1777043381781_0.4524994251977814","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-d254faf-202604270835.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-d254faf-202604270835.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-d254faf-202604270835.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"67bdb30fe108a19ca972467a0da7ac11cc8c8f30","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-d254faf-202604270835.0.tgz","fileCount":483,"integrity":"sha512-3U5twl/fneh8HZA8ueGhn2VJKjCjyDjZzgwi3Bz40+bKc/9vY6fi0/y9O669pKX5sLtybCbfHW9RdYiXrScacQ==","signatures":[{"sig":"MEQCIDDEYHDA189kUiQe6msLQ1yd/DhXjzAEJufFmSHlNyFxAiBXZM7eEkbnRnxST5r+PM6buOiAllu0b01ybidI3XotOQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35291054},"engines":{"node":">=20.x"},"gitHead":"d254faf4d5ebcf50c18bfe92692d29bdd1dd4541","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-6529fb2-202604230517.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-d254faf-202604270835.0_1777279041234_0.8093260968276532","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-3c01a38-202604270853.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-3c01a38-202604270853.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-3c01a38-202604270853.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c1b09306120d1ad661eeb73c285ccf31ad5cd980","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-3c01a38-202604270853.0.tgz","fileCount":483,"integrity":"sha512-WCnuGOruFwneNgo0uwllaBa+8wI4H/mk5I58gSU5suqHRFoWW2Iflexzzb/FFRUVtWURLggW7lWyBJ3EE0CEpg==","signatures":[{"sig":"MEUCICmFpqnwREEW/MtD28tQVtUqA/mZBkU8maR5mKnH3A0FAiEArMiRieNyIukuNO42dX4/siEfKrIh2krRuvbnnEiwQPM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35290947},"engines":{"node":">=20.x"},"gitHead":"3c01a384a171ff4bc0afd0df5654e23249aa103c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-6529fb2-202604230517.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-3c01a38-202604270853.0_1777280094500_0.650859639882899","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-3c01a38-202604270911.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-3c01a38-202604270911.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-3c01a38-202604270911.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"83edd91179ee83455d84c64f50c2b4e2b988b0ee","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-3c01a38-202604270911.0.tgz","fileCount":483,"integrity":"sha512-e7eNCGRim8XuLW9cIlvkac3ryBWce+nx2IXOqaGRFJ2lRLrl2QLwD9XXmTSusx6BojcUVq8YKIuu7FXnyCJa6w==","signatures":[{"sig":"MEQCIEkoxqNREyUs0h0+FxsJOvLqweEDcIlooKwYbg+7N5wmAiB8eTeZS+J4A4LrkbLxM4Ck6D4uojrvaReOOmPhpDd/wA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35290832},"engines":{"node":">=20.x"},"gitHead":"3c01a384a171ff4bc0afd0df5654e23249aa103c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-6529fb2-202604230517.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-3c01a38-202604270911.0_1777281206519_0.704689089071113","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-011c66e-202604271824.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-011c66e-202604271824.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-011c66e-202604271824.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"32e52ae4c1210d2cac48c0200599dd9a27ca5f13","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-011c66e-202604271824.0.tgz","fileCount":483,"integrity":"sha512-sOA0UIzGmdFkFizsA8iEphRQw8aZl2S4qP1p2wzpw37midmsY+MdW0o0TP2MY5I0ajcFo0W77drNiv+CF+afKA==","signatures":[{"sig":"MEYCIQCrvAOOPq8rvvxIzt17Uf8ujVr6dyrM0W+P6QY88ZtIpwIhAK43vd7K5+muoteTqnQkcEuMQInV6BCiRVZQ5hFDjO3l","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35294720},"engines":{"node":">=20.x"},"gitHead":"011c66ef54b51f4d0ad757d49f79c76a5323e306","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-6529fb2-202604230517.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-011c66e-202604271824.0_1777314377886_0.2979500582182213","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-65ec918-202604280946.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-65ec918-202604280946.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-65ec918-202604280946.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8417a0f03573a47b863d0d2f2cf4c6d111837607","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-65ec918-202604280946.0.tgz","fileCount":483,"integrity":"sha512-CEsihqDtFZC2oWyxmceZbLmgYWEt6h5Bhdbvna5UivGZ5VxI/j/MsrEFE7SCWMyaVBhrLQGlSpaZZ1aY8d30SQ==","signatures":[{"sig":"MEUCID5cix6POL3YwGzh9EXaM7k9n3BgiN3GdDDsnLib7rNXAiEAxB+kWswY9ZlQBCJG4xmJSl3WGI6dHUcQdIY7gOC8Z6c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35294774},"engines":{"node":">=20.x"},"gitHead":"65ec91844c0510d15e92c00c0bd1c867fbf0a60a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-6529fb2-202604230517.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-65ec918-202604280946.0_1777369719300_0.563559956055318","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-d53e1dd-202604291045.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-d53e1dd-202604291045.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-d53e1dd-202604291045.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c8ba79153dcabb05e52f8370cc30b1ecd430e1a5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-d53e1dd-202604291045.0.tgz","fileCount":483,"integrity":"sha512-NgQu3Fns82YJs1PGyvgQ3D31asPDz8E9xkgljazAK9ZY/VMzc7WF/fpv5rDWn4hBkjjSh1PYJEV0uPiiorvenQ==","signatures":[{"sig":"MEUCIB/ziz2v9ABPb31zA9Y3p6zphuKXJRj3axeiGwtgWS+BAiEAv1gLTg4bnqLiQyIvmkgkyll/ni9Jh/WVdF3EWaNcU0E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35296843},"engines":{"node":">=20.x"},"gitHead":"d53e1ddf8d3d0dadb4f682901a02e5efc717a134","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-6529fb2-202604230517.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-d53e1dd-202604291045.0_1777459650015_0.5042894628459236","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-424fbb5-202604291712.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-424fbb5-202604291712.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-424fbb5-202604291712.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"19b8e59acc324a2838c2bf610bbeef4158a7b4e1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-424fbb5-202604291712.0.tgz","fileCount":483,"integrity":"sha512-SLshKWUEgPl2czBJWXC7fI0Etjya+QLA7JxTzQCtzr1VTz61KQ6Qyy56cZZ8N+7zcVU6q1Qpm7HApy9XDX1C2w==","signatures":[{"sig":"MEQCIGn1gGtFARP1+Hy2hsC2kQ0I0tgzk57sKVnW8JCntEXuAiBZ6fzTJofZ/S3OgWh3jF2v1b6fDoIP09wGmri+7TsjKA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35297166},"engines":{"node":">=20.x"},"gitHead":"424fbb5b58f117d1a22c85f2f696cf806cb47b05","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-6529fb2-202604230517.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-424fbb5-202604291712.0_1777482861052_0.32360390446438725","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-848eeb0-202604291734.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-848eeb0-202604291734.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-848eeb0-202604291734.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c30777af154f28430c7f66049f918ca86b188844","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-848eeb0-202604291734.0.tgz","fileCount":483,"integrity":"sha512-WoeCxiCg+Sp5VENNbqZy5gLF1xSJpdSthQ9I8O5BJSkuBViDll4tLXN0mJcvXf/i35Bb63rAreQAAICb3qYtmw==","signatures":[{"sig":"MEUCIC7QDpd0+Ca3mkJa55fYcmTROCAHUdsNCchVnSadOtX3AiEA9gaiqvs3XOYLsz7HI7jjazhV3DuHtPHq5NLr0ccjLGk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35296800},"engines":{"node":">=20.x"},"gitHead":"848eeb08c41bf9e5f6123233b19bb1171878e73e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-6529fb2-202604291733.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-848eeb0-202604291734.0_1777484146498_0.3617818534913111","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-1888d81-202604291750.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-1888d81-202604291750.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-1888d81-202604291750.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dbdc5ae6bb7b31a5e105471e9165a0819e769934","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-1888d81-202604291750.0.tgz","fileCount":483,"integrity":"sha512-0eUHWXUBvCO+KA0XxDqvL5TDOzhi/q61DFq7fgwZfkpkY857jvxrRjMx5299RpS1wJ1XqJ/jxzUJA/kOVqYLEA==","signatures":[{"sig":"MEUCIQDbyymj8H0cGECLU5ra9MWAaXbXXZuoPyG94WAkIuNliwIgWw+SVVaNZCx/Kuc9Dx2wsIULYZHNSuX0KGPyJuTV1+w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35296894},"engines":{"node":">=20.x"},"gitHead":"1888d81d3adec0f720bda629429bdbf842f047b7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-b38cf83-202604291749.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-1888d81-202604291750.0_1777485145848_0.7708816878815228","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-1888d81-202604291804.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-1888d81-202604291804.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-1888d81-202604291804.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"117e73f2e44d7d36d752415d10870ae783e6591d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-1888d81-202604291804.0.tgz","fileCount":483,"integrity":"sha512-uQl9lhoqX6QtsH4T/+mkF/4jtWvSL2uzdyb1tSZ3GoeY3T/ijiJ1BBLr1cojnaxjaM1+Ig3YFvYKPo0I/4SUEA==","signatures":[{"sig":"MEQCIBcThzXBIpac2JR6bFmSVqrePVjlHUod5lJ2vAYJ85K+AiAzjhzPuG2UDbsJc+iItWR4B+6Jmo1jMKPL5RThXxpbxg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35296823},"engines":{"node":">=20.x"},"gitHead":"1888d81d3adec0f720bda629429bdbf842f047b7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-b38cf83-202604291803.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-1888d81-202604291804.0_1777485950289_0.5131045345940735","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-1888d81-202604291806.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-1888d81-202604291806.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-1888d81-202604291806.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5dd5006fdae46a7bda03551a96c8d085ef15a952","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-1888d81-202604291806.0.tgz","fileCount":483,"integrity":"sha512-ER/psrLOXD9EQDHC5WXCIRPH74oeXX7EzHofTvG9Co0IseCfu4vzSXNUO0xlHA/3ntRYZyeIAUkNaRLDSX9RFg==","signatures":[{"sig":"MEUCIQDqnsU6P2+woHnKkAbgerYngHxygfTxxJqXSGKpZDOzHwIgYEp3zD4dfp0qfvLsg37udanCMMDpiKteYoY/7OzWE+c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35296976},"engines":{"node":">=20.x"},"gitHead":"1888d81d3adec0f720bda629429bdbf842f047b7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-b38cf83-202604291805.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-1888d81-202604291806.0_1777486089744_0.7975163815907937","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-1888d81-202604300826.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-1888d81-202604300826.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-1888d81-202604300826.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3e0df1b32fd3b3069b2e75bafd4173b35da13239","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-1888d81-202604300826.0.tgz","fileCount":483,"integrity":"sha512-vhm4n6C6dxjXynCUG3GXe28bI0rfJljUKAFMbJ/80fq+Tp6TuX6Y6JVPboYPj15adh8dTmPs197DPiaiOFmyqg==","signatures":[{"sig":"MEQCIGoM5aUWXGzZa9AFMI0Xf+f7q3fBRJMWrZihMHftwk6uAiBt21vR+MOw9XnZKyWPKNKQ1CiWEEksh9TIuA34OBd4cA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35296924},"engines":{"node":">=20.x"},"gitHead":"1888d81d3adec0f720bda629429bdbf842f047b7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-b38cf83-202604300825.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-1888d81-202604300826.0_1777537677182_0.21508503332125706","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-1888d81-202604300848.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-1888d81-202604300848.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-1888d81-202604300848.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"aa8b20ec1ed3edcc3970dba718f568f56991b4c5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-1888d81-202604300848.0.tgz","fileCount":483,"integrity":"sha512-86p7pFxQ4cOhstQm/SvcBUedKnrs0tzuT6YnKWlsBrXRT/E8LXHYO41uyCOEG7s5rEgJfl/LHFJbwpZvcfxGuw==","signatures":[{"sig":"MEUCICZfcE11YC55Yj1ghi2R23Wc5PtHHotIsLwZS3nK9EaNAiEAks6vllgzZJ61QBts4o+GIciga3CnqB/imH8V+Gdic/A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35296508},"engines":{"node":">=20.x"},"gitHead":"1888d81d3adec0f720bda629429bdbf842f047b7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-b38cf83-202604300848.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-1888d81-202604300848.0_1777539033167_0.26920051751212326","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-1888d81-202604300901.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-1888d81-202604300901.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-1888d81-202604300901.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ddb1893f19ce8a9d148c160a13fefbff23d7897c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-1888d81-202604300901.0.tgz","fileCount":483,"integrity":"sha512-btwObKaaGbx00A7+Vbi6/jt73wn7lp7Iu3Jc/x6WRi/6vWhB8Lj1dURe8ihbwe5njNSTARsPfIm3X9FPa4otiw==","signatures":[{"sig":"MEUCIBKsEg3n3wLbPECly8/eCJ995sR/Ri37apouWBrIZl7aAiEA8UXSPkXxi/uDOX3lQucCYEI5dsI6DZ7Mg5X1JVOVRwE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35297119},"engines":{"node":">=20.x"},"gitHead":"1888d81d3adec0f720bda629429bdbf842f047b7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-b38cf83-202604300900.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-1888d81-202604300901.0_1777539769847_0.04877363934962009","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-666263a-202604300925.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-666263a-202604300925.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-666263a-202604300925.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5da701e04216e2c6c2547913d1af9651bf484ae3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-666263a-202604300925.0.tgz","fileCount":483,"integrity":"sha512-np/hwmNHXeixolfzMez9KenNvDwuBIvOJfAgfJ6fhdFjiLdQX/oZR5rxpq/+1fpkR2lVO8VymYaC1rfUeXt32Q==","signatures":[{"sig":"MEUCIQC6RjEuniJm9SKHxQ1EfEifiatpP28l0j5+2lcIXCFsIQIgTMMJBM4fVfZVPWJsBcCuZTm02K/U1HJwZpJYrA/Lagg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35297375},"engines":{"node":">=20.x"},"gitHead":"666263ad8b6abb98005c2f4d55012b28915f5147","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-b38cf83-202604300900.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^13.17.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-666263a-202604300925.0_1777541208741_0.8982211281541017","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-75cd225-202604301219.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-75cd225-202604301219.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-75cd225-202604301219.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"61ba31a7a425a7a0a8f11ee326a5d1361cef8a51","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-75cd225-202604301219.0.tgz","fileCount":483,"integrity":"sha512-KPAP8Rn3B1WZajAdrTG2z/G5PR5q24khdJRAa1bl+uCpZ4a8CbCtJKQ7M5XNYtWoWcfmjaji6jC5t8EeealNyw==","signatures":[{"sig":"MEYCIQCHf+Pv082yM0qYwNkpXKwKbrGxstnrPFJl/TvlH/eUnQIhAIQgcu3lODLdQCTFxPPp6+f07k0QAvEJrhIwypigLg44","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35296758},"engines":{"node":">=20.x"},"gitHead":"75cd225e8bb4abdc9ae9cde8c5b274c7bded7369","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-b38cf83-202604300900.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-75cd225-202604301219.0_1777551667861_0.658916343296585","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-5782e39-202604301445.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-5782e39-202604301445.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-5782e39-202604301445.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"16b42fd5e6689d6167eca850b3e9e328b19df6df","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-5782e39-202604301445.0.tgz","fileCount":483,"integrity":"sha512-QU+7zt/EfmUVAnFUOhhI2oZOvRngsMgOZjaHAer63WVSE41RR+bXXlBnRXVriesRUEDzoqgaguPde46C5exVDg==","signatures":[{"sig":"MEUCIQCDuTmpatvYu12Ar7oEgbKMkg8yoN3p3ejRHF07Mwm49QIgaCellpYDuooDTkpSk74o/LpRdfdqQz6kSG0OXdNSj+A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35413091},"engines":{"node":">=20.x"},"gitHead":"5782e391f7ac8c2730270f7e56f754aaf1ed845d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-b38cf83-202604300900.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-5782e39-202604301445.0_1777560431015_0.3402171083861758","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-a9428bd-202604301559.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-a9428bd-202604301559.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-a9428bd-202604301559.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"92ef6dc40e6ad8dd770a92ad408a9b636b0c42e0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-a9428bd-202604301559.0.tgz","fileCount":483,"integrity":"sha512-xU4+SBXZVbSaXWLVbUe8flCTCrJTWA2Y3h9AKkf9PCKPeWpZp8R8BrSNmCOwjScsZ+CZ0aUfiCj7vk1Mdd99bQ==","signatures":[{"sig":"MEUCIDjOv1sp8ZqIqOiUgdygTytjWkLx6Av5RHhotrkAVcnKAiEAnizZZ98ffrLGdTqCOzP2ls7jxVoprcoO9hfpbttyKqU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35458794},"engines":{"node":">=20.x"},"gitHead":"a9428bdc25ed1df82e79dc9486a1243fb1ff1871","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-b38cf83-202604301558.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-a9428bd-202604301559.0_1777564869740_0.3179046791456692","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-a9428bd-202604301637.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-a9428bd-202604301637.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-a9428bd-202604301637.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bb2259905490e32e583609cd2dbd47233705afe0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-a9428bd-202604301637.0.tgz","fileCount":483,"integrity":"sha512-dCFOrqmeP3YLYRvj7coh5jIriXHmwFJ+0qFyuJv0tZ0Jj5MhoRF7dt1HRbRPfsMX7roQ7z4mq560dGw1ak22Fg==","signatures":[{"sig":"MEYCIQDOSXTDZJkr6EEemi57497oEZRaIgzhLqL05DhfrSm+BAIhANa2HBdceTStAZ+3xkKEG0AJ2pE5WcozkSfWseXfZFHM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35458658},"engines":{"node":">=20.x"},"gitHead":"a9428bdc25ed1df82e79dc9486a1243fb1ff1871","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-b38cf83-202604301558.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-a9428bd-202604301637.0_1777567180258_0.6367423314378335","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-a9428bd-202604302044.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-a9428bd-202604302044.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-a9428bd-202604302044.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b50c866b7a89f25ab46b76aa2fe9670152f08123","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-a9428bd-202604302044.0.tgz","fileCount":483,"integrity":"sha512-JJ0+2FclsauZ3TRH5FwGg3m/fc4n8MM/P+QmoYt3UuVbPlWeMZ6T6JJ+Ha7iH2yhpHNj1r/CcvdwPx0i0p/RvQ==","signatures":[{"sig":"MEUCIQDcOeH1hFZ/By6nIzWvcvWlHwsFY1KfFPvFZwen3XdQPAIgGxHP60IXiedRSQOp/SHrs9Kx7Dc5apHRomHzGEPh9nU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35458541},"engines":{"node":">=20.x"},"gitHead":"a9428bdc25ed1df82e79dc9486a1243fb1ff1871","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-b38cf83-202604302043.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-a9428bd-202604302044.0_1777581958262_0.27447483789180516","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-c3a7fcb-202604302103.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-c3a7fcb-202604302103.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-c3a7fcb-202604302103.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"26da9ce5f3dcbafa2109cecbda6b592e9c4f14ad","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-c3a7fcb-202604302103.0.tgz","fileCount":483,"integrity":"sha512-dzyJvg3i2OYPhQQybp1FyP6Yy7BOnxoHpPcNUk0yYbqd4qRUGL1dFQQiT4uZvzaWU6WioXEJAC24Nz5G/GuQmA==","signatures":[{"sig":"MEUCICJNSvBHdjztwYPHjwtZIlzIi6EWnY5L9k3dbLFyxsNnAiEAygn5E1PuWcaquh4iu+JUokSOYGwzCqu1ySM/qPFQVgI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35458229},"engines":{"node":">=20.x"},"gitHead":"c3a7fcb9213612aa141f855e1aba667aff228cd3","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202604302102.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-c3a7fcb-202604302103.0_1777583080283_0.31865725348749474","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-cabf53f-202605011254.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-cabf53f-202605011254.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-cabf53f-202605011254.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2ce891aa3c6cddbd831d41fdabd8c896aa1235cf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-cabf53f-202605011254.0.tgz","fileCount":483,"integrity":"sha512-Gxkveqjru49BSWk5PCZq5nFDovf8Il/N0yRyWy1Qg/klNE6tKFOnuvZGO3XkRbMRLCc62WzGoHHFbgRRWG/wzQ==","signatures":[{"sig":"MEQCIFZzBBUxmBOm+/AlnRV8OkD36cIFkPMlkkLOCtvHVushAiBRl/aS0W8ndNspDdA+9/MXu0JKNaANlUrbD+pCQ+/Kgw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35476424},"engines":{"node":">=20.x"},"gitHead":"cabf53f4e8d76f85e0c6d27856416429ba26203e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202604302102.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-cabf53f-202605011254.0_1777640151065_0.39745346059529396","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-462b88a-202605011424.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-462b88a-202605011424.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-462b88a-202605011424.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b1efe5105898cddfab1b5fc350fcbb43034a8940","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-462b88a-202605011424.0.tgz","fileCount":483,"integrity":"sha512-4gnz378RzGUpjVfEDXGdTtYkxpKwVdnYH/ynJDFYP4wnKEcyRRtlkvaCtrDfEKwpOxedpQVmxnA2BjI/JqeuAQ==","signatures":[{"sig":"MEUCIQDmOv7vhDxLxxPdUlYDEF5AvymbHBCbGOLk2pFKnIXHwwIgOPmYB+gQCKBbPoup6XBGPOC3ObDqjboM1VAUNleYy98=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35477003},"engines":{"node":">=20.x"},"gitHead":"462b88a54c03719b47295c43441e84ac7611a788","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202604302102.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-462b88a-202605011424.0_1777645561241_0.00818818870394833","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-462b88a-202605011534.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-462b88a-202605011534.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-462b88a-202605011534.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"98fdb425c23522cd7d0af0792a43c1ba6b220ef5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-462b88a-202605011534.0.tgz","fileCount":483,"integrity":"sha512-2+7HfQC7Km3IoEQUQVjr4ONIAd4YZZyTvc756gjqeRoJEWgQq41NlDTkI9XZ/g7YBqqr8sMAzys1xuBLBRVXxQ==","signatures":[{"sig":"MEQCIG3qGiOGSOxZuifpEsN26EohZ2CAQ1zT5BNP7ctfekd2AiAravX5h9g+VgqEis7FssNfHRB9td/BbDs59vyZA7IUaQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35477073},"engines":{"node":">=20.x"},"gitHead":"462b88a54c03719b47295c43441e84ac7611a788","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202604302102.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-462b88a-202605011534.0_1777649798247_0.7888181344154876","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-8fabb21-202605041148.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-8fabb21-202605041148.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-8fabb21-202605041148.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"48b631519de1c755eed8ce6418c24263b64ee789","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-8fabb21-202605041148.0.tgz","fileCount":483,"integrity":"sha512-gI50kwMtjaRypzEwV/4UkscfpcoltL8QUDf9AvML1iMG2UxC+v0tVcvW9Pd5zZHILuTzK3V6jolXsw05J/Y6aQ==","signatures":[{"sig":"MEUCIAolSAZh984Bp+JsMzZQNeTxsK5Y2O8vh9fc/B5n4dKzAiEA/zJKxEl8rP6haUxEkKYTNSIMSu8N2MNZ5qgAW+LjiXg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35504169},"engines":{"node":">=20.x"},"gitHead":"8fabb217807ee88d0f9409eedf3c978ebf737e80","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.0","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202604302102.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-8fabb21-202605041148.0_1777895431361_0.7159704750797933","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-0b1b0ab-202605050616.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-0b1b0ab-202605050616.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-0b1b0ab-202605050616.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bcc5f7f02185b80098328db3a0a001c6a7a1823f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-0b1b0ab-202605050616.0.tgz","fileCount":483,"integrity":"sha512-6JZ/jNOL8OcI2n6fS0txuwgmVAJq/IP8gVxjd0SsCAcnr07iSIRA2J+Dc1X/kumlC8W0R6y9ogfTlBSxadrUZQ==","signatures":[{"sig":"MEUCIQDysLfGsz7neVMU9MV0R1SstB7iSLv3x3PHhhvg53DMJgIgGK6pI77/CbjRTcP7rQoggak8Wcvv/1udCGlmQa3Ys+U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35507624},"engines":{"node":">=20.x"},"gitHead":"0b1b0ab1c4bbcbf1ced1a871a400abc8dc8a1dee","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202604302102.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-0b1b0ab-202605050616.0_1777961869773_0.22177384997178473","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-53f4bd6-202605051244.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-53f4bd6-202605051244.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-53f4bd6-202605051244.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"646b81fad01e546b4f6f366cd7b79fbf11eb830c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-53f4bd6-202605051244.0.tgz","fileCount":483,"integrity":"sha512-uH5h0lo/3CDzPF11dw1nz1PsI2Kg4kAvgm4QW2AbpNoL8lDzzadOEaaqvDwfj/OeqHvR65FC2aoO2+oifF4QLQ==","signatures":[{"sig":"MEYCIQCXU/e9ee8OZqk/1jslA9k1+/3Ew++nihkj6ymseJFxBQIhAPjZLcnVpUFPiV/TiD15lq/22kqq1yrgP2j19djX2jFr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35506860},"engines":{"node":">=20.x"},"gitHead":"53f4bd69a1124b83e8709df4fee4cd66d7cf9acf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605051244.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-53f4bd6-202605051244.0_1777985182994_0.5816470456126548","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-53f4bd6-202605051252.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-53f4bd6-202605051252.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-53f4bd6-202605051252.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2f718fb8e798967df6c8150ed4d703bf81b8888c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-53f4bd6-202605051252.0.tgz","fileCount":483,"integrity":"sha512-MooNBabvEWkRPWq2afECskEL/6VS/U3Rd1y87FNkreOcy8qePx3AHaJr1TU10793dgOaDMH47aMZcJp317fGdg==","signatures":[{"sig":"MEYCIQCmGN7hng+9aArxCRkKefzyPH+kL1U2W2UhugfV9VlZTAIhAMfkp92q9HAn3cSScpZku1fugfLVU22mBC3qMPpxNdQY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35507039},"engines":{"node":">=20.x"},"gitHead":"53f4bd69a1124b83e8709df4fee4cd66d7cf9acf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605051252.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-53f4bd6-202605051252.0_1777985665084_0.7814536946749808","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-3d00ca4-202605051300.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-3d00ca4-202605051300.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-3d00ca4-202605051300.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0e540dfbe427cdc6b4596cfae50fef0f6b1168b7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-3d00ca4-202605051300.0.tgz","fileCount":483,"integrity":"sha512-vDxMKTPDJ+3Yvl24JPO/Wgq5Bz0uJ7Pgc/TEeGj2oAd/jAoW62sffClPrhMdkJaQVqmMLkuixE6t2CI8tmzj2A==","signatures":[{"sig":"MEUCIQC18QPcnh4vL5IK8WBhsXwN+nM1imS+RCMeJQh1OpY4ZAIgL0bNYSsLxZwRJcc0FljnyuiR8aoGeLbxuBAi6o0cymw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35513135},"engines":{"node":">=20.x"},"gitHead":"3d00ca47eb000458604e483cc1893437bc7f60f4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605051252.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-3d00ca4-202605051300.0_1777986163675_0.0431118162065216","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-3d00ca4-202605051304.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-3d00ca4-202605051304.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-3d00ca4-202605051304.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5c20de863dbf092169ab7fa44800fd727d66c7e8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-3d00ca4-202605051304.0.tgz","fileCount":483,"integrity":"sha512-u6RqMb1UzMmUs5ILC/kEIizgOxX7t9rV3EWuIxpqnF4YQk5rz8CHAM6TErZ79FfjjaHNhNB96FpkWG7L1YueDQ==","signatures":[{"sig":"MEUCIQCz/IWvrfsWcxtN38Yth74W6pZaH0NQ8Mm4XYTZ6wvEvAIgMk15hZtJszG7CScdlsUxJEPWPgNGjIRIkRZkfm/0Mrs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35513235},"engines":{"node":">=20.x"},"gitHead":"3d00ca47eb000458604e483cc1893437bc7f60f4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605051303.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-3d00ca4-202605051304.0_1777986348390_0.9284404655573539","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-3d00ca4-202605051319.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-3d00ca4-202605051319.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-3d00ca4-202605051319.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d4698f0a32159adb40890976a2952e370b470e3f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-3d00ca4-202605051319.0.tgz","fileCount":483,"integrity":"sha512-4HRaPrFHdxHzC0RmHcLyLJgJFfSHC5LbMr4tIK9TYL5SWsfmWlDjuYJG5x5aQH0acsBUo8TEXE/HhfjuWQNNAg==","signatures":[{"sig":"MEYCIQDhqZS652i5eqhneUAlqVsOp9CDQoRbgzohnfUSrngTrwIhAItKb5tCdJw25UFmGElKMeqOYnFYDdp2P+SFPC0Q5q2c","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35513322},"engines":{"node":">=20.x"},"gitHead":"3d00ca47eb000458604e483cc1893437bc7f60f4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605051303.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-3d00ca4-202605051319.0_1777987282544_0.530431834230414","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-1b7c2f3-202605051351.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-1b7c2f3-202605051351.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-1b7c2f3-202605051351.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b7ccad1ac7c4dd104203f619fb43b7002f034411","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-1b7c2f3-202605051351.0.tgz","fileCount":483,"integrity":"sha512-aKatX6oBxSfS1efYo6pTdmPmfCWnPeD+vYvlluVZmkh8Mh3+0/B8WaZQ6pjJptOHWUlWv/+Wd5KAVlWMXiIRrg==","signatures":[{"sig":"MEUCIQCCdzA1K2Nqc3Mf21pe0jIBnlw70JrEMKggEoT5k0iY9wIgB2ecIy8+9kwsNDbw+do+ygJizyqCuXWvZ/449AXkhfA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35526355},"engines":{"node":">=20.x"},"gitHead":"1b7c2f31a1393fd43b78e31ed84622035931bb5b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605051303.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-1b7c2f3-202605051351.0_1777989200971_0.5068532654929281","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-92c75fd-202605051409.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-92c75fd-202605051409.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-92c75fd-202605051409.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a3d698d597f195b38b84d3c7e843e0fd7ccdde77","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-92c75fd-202605051409.0.tgz","fileCount":483,"integrity":"sha512-tF/63SPXzBeMzXjZIDwws/hejbJSNp28Dve7F0lqcDOFZMYl1RggnVMjO5Cqwazsb/0ypQokMAh2t/1kq4BCrQ==","signatures":[{"sig":"MEYCIQDcFgLs6FOMHYKC4gk3zWJw4QgQd+SND4QcMSQIj7B/HQIhAN+SXthcvB7AA0xQpqoM0J7Qj0ijrMqxv5U3Mz1W+glB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35526281},"engines":{"node":">=20.x"},"gitHead":"92c75fdf4a8e46d673c03839dd61238778e529ed","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605051303.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-92c75fd-202605051409.0_1777990280561_0.484232054834846","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-92c75fd-202605051414.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-92c75fd-202605051414.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-92c75fd-202605051414.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f608777d4543e6b0a09298d9400dc1f3eb0b832c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-92c75fd-202605051414.0.tgz","fileCount":483,"integrity":"sha512-VP94lm4f5Z+OivGiXZfU7jaABpne/DjwgJeXZTyRKxzP7/w9FcVOb2N2/5xiSzD6j7kO5Ga3r3Hu+c2oxXvBWw==","signatures":[{"sig":"MEUCICcsolB7Anxl0yMMBMvXaoLANrkqhkDxZxprOJSTNGQpAiEAleVenxC+ZKLgaa8U3OSOcVYS4BeLn9ljscpNUsklhaQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35526347},"engines":{"node":">=20.x"},"gitHead":"92c75fdf4a8e46d673c03839dd61238778e529ed","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605051413.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-92c75fd-202605051414.0_1777990577455_0.054425268980216934","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-92c75fd-202605051428.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-92c75fd-202605051428.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-92c75fd-202605051428.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"77b58991533638d6a4f763f515756d99ebc3281c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-92c75fd-202605051428.0.tgz","fileCount":483,"integrity":"sha512-tqFy4KZoeN8BCcw9BiZV42wVQs54nI1cNufCop3LMZQ50ruQdrFRacF/wGi/L3JKgTXYchpDWHGAyLtAyshAsA==","signatures":[{"sig":"MEQCIE1M7/KIKJLFhOGN6j99lRVfN7QfvXG16rO5FrACPy6fAiBz5Yw9Y2fc1TqwBeZTdT5oRZGODUIzXJXGdAl4HrqFMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35526520},"engines":{"node":">=20.x"},"gitHead":"92c75fdf4a8e46d673c03839dd61238778e529ed","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605051413.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-92c75fd-202605051428.0_1777991416985_0.1611233189301604","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-7cae936-202605051439.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-7cae936-202605051439.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-7cae936-202605051439.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b3f944745470aa13e996063a931cd5248bf8fe5b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-7cae936-202605051439.0.tgz","fileCount":483,"integrity":"sha512-0bfwEKn85k8ZHuPIobswIF1KU2CajnM9aJi0I42GsME6CKtVZxmSj7W2gcboWApW1DhBnKM8sMQD63OPJL3o+Q==","signatures":[{"sig":"MEQCIECiaT65R6VZm1dsYMnPXAV0RK/u/NpD+bDeKosOAFG/AiAEFdkh4CB0F8VoLXpms9GyaBFTouA2+gYvpMSrblOCkA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35554474},"engines":{"node":">=20.x"},"gitHead":"7cae936be07bebb3fa37efa950a7ba5586dd668d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605051438.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-7cae936-202605051439.0_1777992087153_0.5628186157112711","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-7cae936-202605051455.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-7cae936-202605051455.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-7cae936-202605051455.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"de7c93051f5328c8a7f7ce47f1c47853e1cf3795","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-7cae936-202605051455.0.tgz","fileCount":483,"integrity":"sha512-5jOQnJ6MwPUSsJMYr0dA+Gt3xzE/DQkzvb7lED1Xv8tKrvCZQ8N5RqbL6rKxqeaI0XGglVaPoJpBhnk7WHjrUA==","signatures":[{"sig":"MEYCIQCoMvqgxpsVtI8N9TS866TQP0yYQBMcbAgb7Zrk+IREsAIhANrxefVFK7GwcFzQ2eCmCscL4LMl8zzB+mEJL+9FzTyI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35554433},"engines":{"node":">=20.x"},"gitHead":"7cae936be07bebb3fa37efa950a7ba5586dd668d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^4.2.0","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605051452.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-7cae936-202605051455.0_1777993005437_0.031486685577263085","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-9954e63-202605051530.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-9954e63-202605051530.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-9954e63-202605051530.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9f52cc08f88d6a7e90199ee08a01fe1e913bb738","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-9954e63-202605051530.0.tgz","fileCount":483,"integrity":"sha512-IoIRCfgCigrsD9VATT9N+ym9AVtGGQDrcpgAgF1CQf+zog/Fm4QSJJzKDuophsGTwzUcbZzCXpTkh0/n4lU5mw==","signatures":[{"sig":"MEYCIQDtn5NaiuNMHEWFrOwkV/iX//vj2vmiVwMR9pPST5xfVgIhAL+RaiEeWlWpYzWXY+qaXsK8VywFCzTNQLhuEoQKRe4L","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35554565},"engines":{"node":">=20.x"},"gitHead":"9954e6366f79da8d2f94ec641f01f015387e0e35","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605051452.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-9954e63-202605051530.0_1777995152577_0.46235263395294135","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-6932570-202605051544.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-6932570-202605051544.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-6932570-202605051544.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5917e9b44817275f6a529dc4ba150eeefcbd0732","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-6932570-202605051544.0.tgz","fileCount":483,"integrity":"sha512-cIsv8arECaTsXXXQufZhDAzp8WQ7ER99/nm0vcOnzW3g00kd0IdwVyvW93D+9uE2T8A6P++zk4B6gbyKCX1gHw==","signatures":[{"sig":"MEQCICVZr+4SDNqrrrvC4AUszSWOKv3V2stRh64JgGulXNAXAiB2XvfEBO8DMGIUy1tBmZ0HsxFFYrlbmOY/ZFT2ZKdgkg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35541735},"engines":{"node":">=20.x"},"gitHead":"693257073fac79fff1a34620f35d27380f9d19e6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605051452.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-6932570-202605051544.0_1777995982206_0.16478704055900661","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-6932570-202605051559.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-6932570-202605051559.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-6932570-202605051559.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"de77254e702cd463f819131a501a86b1a90c2835","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-6932570-202605051559.0.tgz","fileCount":483,"integrity":"sha512-+CdXzz7uMVgOxVBJjue+mXZCxlK1/R+ZNtBG9DzI72n14b1+sstkukHddfteZGdntisw5MemzxzuOkgcyWkpCA==","signatures":[{"sig":"MEQCIAlqx8dyRWwRwnGxXxmXRC3h3QsOk47eic4daG00QH5qAiBD3KUNH8rPsVCSqZNnGIL5H9+YUb4qVP7n10l4OXOw0w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35541876},"engines":{"node":">=20.x"},"gitHead":"693257073fac79fff1a34620f35d27380f9d19e6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605051452.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-6932570-202605051559.0_1777996902062_0.9454045445415686","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-9c9214e-202605051725.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-9c9214e-202605051725.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-9c9214e-202605051725.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4c0aff743b54c615096020210765aed311c5f5be","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-9c9214e-202605051725.0.tgz","fileCount":483,"integrity":"sha512-gHxVjvL0lKGFoNTm67LgPEWLzI/akLsJKcx9A+Z5CuHJSQV31nnahF0nYvPEgb46MIf8mF8n7wh/swP/Gv6axA==","signatures":[{"sig":"MEUCIBmQRx//CGSSP7uKX3X+RQpi9Cou6Drsl6+qR2/s/mE1AiEAufnqdR/FnR7G5Nwu2iiqV6zUDmdfbUd/i999Rw7eLBc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35541979},"engines":{"node":">=20.x"},"gitHead":"9c9214e81b19e2e8c8a17c639e7d7ec2a9ad8fc0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605051452.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-9c9214e-202605051725.0_1778002039674_0.6722324370390862","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-c3c8f6f-202605061119.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-c3c8f6f-202605061119.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-c3c8f6f-202605061119.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e7829335399c812409eb9e7d929246174225f4da","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-c3c8f6f-202605061119.0.tgz","fileCount":483,"integrity":"sha512-DG1uD9eTUFoRW/4yDYlSsa6KKKWtY786H+abMlX3qwsT23DD0Ew+SxGbfFgT43gi4FSGnWZGVxSZjThjdIGFvA==","signatures":[{"sig":"MEUCIFLEAbiF+gcP9ugZOSsS3JufyF9N0ybN2dEAvXRpTmkkAiEApBZ4sLcYyjCHxgZB3SDue2zai5RMgCFs7/iEOEynv6I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35708569},"engines":{"node":">=20.x"},"gitHead":"c3c8f6f07a56ea027096f0e249033a8652aa5b97","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605051452.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-c3c8f6f-202605061119.0_1778066444566_0.7079632454229394","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-341af46-202605061320.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-341af46-202605061320.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-341af46-202605061320.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9c5d0bf1934b26a0a164225e700d580f93386b1c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-341af46-202605061320.0.tgz","fileCount":483,"integrity":"sha512-xPDUb87VU+0Fk75xB2WpaMl5uuLycOd/Stvvgv09jRmZBVTDxawVrr1nXYzUn7KliDycUEtDvufCOEeUS52iqA==","signatures":[{"sig":"MEYCIQDPH6qGkYL31C55NKTRDJ5Yw+rAnajUF5gmpTBopoq/IQIhAKtsbYwjKY9QaAVLVkkFYflvAb7R5TSSXhVFOwkE1ZPy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35720731},"engines":{"node":">=20.x"},"gitHead":"341af46ab15cdd1e60229af43197f9ddfccc1902","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605051452.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-341af46-202605061320.0_1778073701855_0.6087678719890819","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-341af46-202605061344.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-341af46-202605061344.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-341af46-202605061344.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7679ba201cb2845b8b6e5e41120174bd338e5a6c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-341af46-202605061344.0.tgz","fileCount":483,"integrity":"sha512-yr3UMyCPYK+zL2zJCbARO9eDTAnfwJvfWgQzJ83LQMtMEuNjyA8//dzlUao132cF22gXf65W4VYPmAWY/EKDgQ==","signatures":[{"sig":"MEYCIQD3j/Tj9VwNg0kqhoen9sX6RQpXqy5BHU9r/1WWPLri7QIhAIZ1ICw7LWWM21rKpMG8VdIgZwNbLmzuqAB7Uii2hG6P","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35720894},"engines":{"node":">=20.x"},"gitHead":"341af46ab15cdd1e60229af43197f9ddfccc1902","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605061344.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-341af46-202605061344.0_1778075198104_0.27926920193483884","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-341af46-202605061406.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-341af46-202605061406.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-341af46-202605061406.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"004e47064bab61d3b076a9f6f9a917d5c63ee0e2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-341af46-202605061406.0.tgz","fileCount":483,"integrity":"sha512-bnxBZPaIXTbyDW0IHMSs5D8oDHkPYPmBj8sYnW4Z/rjrkPOzpNVK1ZTdOj4QTH81ziO1bi+bxUzNBqE6LaGl1Q==","signatures":[{"sig":"MEUCIQDA8/PGpLhyOSH2EIu8sx01USo2OtcBUA+uklDDjLDKswIgGDa1ExsYSx+0emiOd4qKIX3UYNtFROhRc6JclJrhRnQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35720837},"engines":{"node":">=20.x"},"gitHead":"341af46ab15cdd1e60229af43197f9ddfccc1902","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605061405.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-341af46-202605061406.0_1778076476372_0.19210894885400776","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-f2665ec-202605061426.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-f2665ec-202605061426.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-f2665ec-202605061426.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"22843d95dd83ba4c28b295617472d8e34776626a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-f2665ec-202605061426.0.tgz","fileCount":483,"integrity":"sha512-QFE4f38XMUy/U5plNLsFM4yr0nvulwiqXV8BRQqMewhZZZjPQni1uy3yo9zgwha8G2PgbI6Mb5/IP53x9lDcPw==","signatures":[{"sig":"MEUCIBCLlS1AWhX+8YdnDfx3GPWF9FD47DXDrL9Fgn0EoPShAiEAwCTQ+IxO5g7CUQj10+xy2JBOISIRNRQE6nmEQdv/KZg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35721465},"engines":{"node":">=20.x"},"gitHead":"f2665ec8d68a037dc6bff8957f7c8824aa5cb3af","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605061405.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-f2665ec-202605061426.0_1778077685691_0.7966755266937273","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-f2665ec-202605061446.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-f2665ec-202605061446.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-f2665ec-202605061446.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9d149e07ae2d6bfbce03e1067dc356ecd098e09b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-f2665ec-202605061446.0.tgz","fileCount":483,"integrity":"sha512-GzrX7kKeMBiaiVFPmBP5qyLnYsoh45wWqHwPhSGTQeJZwQELd22kJMIVnncIIlBNBfBZSDXi0m3RNeYDYx+nZA==","signatures":[{"sig":"MEUCIQCwxIyPnyuuYfEXQFcrkFAS5eCZnjZd26DT1PGhZFTpMQIgRToTaOq8f88+ZHbq4gDLfl5QBUV7JC7yOgz9enwYac0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35721541},"engines":{"node":">=20.x"},"gitHead":"f2665ec8d68a037dc6bff8957f7c8824aa5cb3af","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605061405.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-f2665ec-202605061446.0_1778078917729_0.42373674152786744","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-a962b58-202605061514.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-a962b58-202605061514.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-a962b58-202605061514.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f370676954c54199bda633dcaaae40a81aed0024","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-a962b58-202605061514.0.tgz","fileCount":483,"integrity":"sha512-bxS3KmWQ18jvnYjbKd26oxxQNbQAv2oVimszWicYzqVGBLerq/BgAbh3CXgTFPaQ3wu8oJSgliIa4XbIpTkplQ==","signatures":[{"sig":"MEUCIQCOQdy4K18UGIajdaehUjhK9HsPMUWljjBrFcA+WBFJxwIgenJxyYW9CgBrL5Q6AwFDaBCWj0PvyyOzcBcnxTGd6g8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35721715},"engines":{"node":">=20.x"},"gitHead":"a962b5883feadeff0f3f2510fb045176e9a4ad26","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605061405.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-a962b58-202605061514.0_1778080591470_0.9154140469495682","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-1b0e926-202605061540.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-1b0e926-202605061540.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-1b0e926-202605061540.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2a6ff15ed540a1dee9e085a1e642118ec9091199","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-1b0e926-202605061540.0.tgz","fileCount":483,"integrity":"sha512-xcKIsfi3og03CfHUPdYFwRJUa0ktU/haOJqKfRGe3SPZEYb7+IFAb7LSMc1AWeVwpFK/+wGF8AgBuBc/pyo48g==","signatures":[{"sig":"MEUCIQDreVSYr2PMhOKUiB2q2lExdTzkYbsQdgiZU7m05SH5hQIgV7f6NfYlZUkaJhMP3acMuo3mTFFCJ1T3LqYRxYop1aw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35721702},"engines":{"node":">=20.x"},"gitHead":"1b0e926b984e678c65272c1577d9a729eef0c6b6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605061405.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-1b0e926-202605061540.0_1778082121105_0.5844615998052285","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-0149767-202605061619.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-0149767-202605061619.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-0149767-202605061619.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"87671542e4f2bd02718774dde12c80e550079d34","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-0149767-202605061619.0.tgz","fileCount":483,"integrity":"sha512-HAKDrtVTMY8cjpuBtDHP2LNGU3eIKMAcsNdtZVd105efcKJHG+EseWpNFOA0T0vfBHpXYYP1l9aOEm6RC3ljCA==","signatures":[{"sig":"MEUCIBQZgDGVjsMeICQIn+dpvF5D19kqKNExxp0ZVyLX4w0kAiEA361oHyP+Nal6jpdCnvRb7cJnhJwqFdRAkCOh6VhXoWM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35731626},"engines":{"node":">=20.x"},"gitHead":"01497675b4bff3fbb7eb555fea951bcd01202f49","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605061618.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-0149767-202605061619.0_1778084481797_0.12958904912522695","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-0149767-202605061637.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-0149767-202605061637.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-0149767-202605061637.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bbda7a9082acae23eba77932c0cfff59cc82a88b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-0149767-202605061637.0.tgz","fileCount":483,"integrity":"sha512-TUd2qqawTiG3n9yU48dY/ferT3ElL3ZR1TWjfGnN2GRZPg6RKkAL244SrIfpXgN2CmhmKQq9X0GON4bwwcp67w==","signatures":[{"sig":"MEQCIBwBeG6pUBoJnDNFv7uqo0uWm2/fMKIX4+yh/vy1Od9KAiAaenFiTLY2ts33LPuHidlWxn/ijrwzZW0iQvmG6EzCXQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35731677},"engines":{"node":">=20.x"},"gitHead":"01497675b4bff3fbb7eb555fea951bcd01202f49","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605061618.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-0149767-202605061637.0_1778085544061_0.1998407403915592","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-4bf26c6-202605061721.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-4bf26c6-202605061721.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-4bf26c6-202605061721.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"660605adbd2b053dceb64faba3d33d4ff27f6a67","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-4bf26c6-202605061721.0.tgz","fileCount":483,"integrity":"sha512-IuF+h4SGD54MEiZKuChTNbYr5t/Dw2tKwI+rU3BEJR8hMR7np3zvq6BSVedxQ+tcjd1GKDzMnqQDKTzVNfVzxA==","signatures":[{"sig":"MEUCIQC5WflWZ7z6aMaAsX3HoqU5qX7FkkySyruGb/GESrV2FAIgMJJYXMBrLp0iRmR2AWJjswSnoTDMnJOTa3PyduHIOMc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35747476},"engines":{"node":">=20.x"},"gitHead":"4bf26c67fafcfb9f5bf3c3a647c35511893483ee","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605061618.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-4bf26c6-202605061721.0_1778088167262_0.29114456998934","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-4bf26c6-202605070540.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-4bf26c6-202605070540.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-4bf26c6-202605070540.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7739d4f53fd8e97cad32a3cc0b1862922437f2fc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-4bf26c6-202605070540.0.tgz","fileCount":483,"integrity":"sha512-p6EdgRYuIQYcFcw+r2OENK+tpBSH63JQbVOIBxd+xUKf6a3MxizG8XP6tqEJugDELlReRxESi12MYsPBpmEong==","signatures":[{"sig":"MEUCIFE1K/BpGt/o3b+Z7s5cUUgdU99QWmj0o0lvfKJAxNIsAiEA8m1rTmmMPa2mhRlDxgMakzVcT8+BmnRCFxNgJoxnRY0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35747627},"engines":{"node":">=20.x"},"gitHead":"4bf26c67fafcfb9f5bf3c3a647c35511893483ee","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605070540.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-4bf26c6-202605070540.0_1778132542940_0.3634037068102651","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-d01c9cd-202605070647.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-d01c9cd-202605070647.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-d01c9cd-202605070647.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cad0ae3d590a9e12d00baba6409cecafa0529c0c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-d01c9cd-202605070647.0.tgz","fileCount":483,"integrity":"sha512-PTZD7lkRsC0IhHJepH8wl7+XCPguItza5G1WK5MD1MBgXFgx85/tE2b9W1JhM2Nx8oJ2UHwaLR8KBFM+DASJgQ==","signatures":[{"sig":"MEYCIQD62cMFOM2D8tvNx1hP1rI3NdKRQaqSnRbR1iHJMNZMEAIhAIvftNsRA9XjdhAWFn3JH8PWynl7bMu2ob5zh4pv78BO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35751364},"engines":{"node":">=20.x"},"gitHead":"d01c9cd13688dc0d4792ea520d717fbe7eb19588","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605070540.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-d01c9cd-202605070647.0_1778136540964_0.10087649792688946","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-d01c9cd-202605070847.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-d01c9cd-202605070847.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-d01c9cd-202605070847.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8f30ae5a638520225c7041484570225e9c89f2b5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-d01c9cd-202605070847.0.tgz","fileCount":483,"integrity":"sha512-t/+IPXKXPKR+LN4JtDhSJpwvflc2Jr+AhLz6P+pQYt7dhW8pTD6WvmfGf0+29rEYvEJDH2jHjQM82+9PTvvlKw==","signatures":[{"sig":"MEUCIErLZp93JB/NgMtuCCXOMmMftXAAmHKzEaIl9QfZX5XoAiEAmfHRLAqhI75umO/rmk9cgl75o9buTDxbuDwzNAK0bJg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35751435},"engines":{"node":">=20.x"},"gitHead":"d01c9cd13688dc0d4792ea520d717fbe7eb19588","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605070846.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-d01c9cd-202605070847.0_1778143750076_0.9550094071861961","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-d01c9cd-202605070851.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-d01c9cd-202605070851.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-d01c9cd-202605070851.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"816c3c3bc4724a7af27bbb16857120efded98c8a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-d01c9cd-202605070851.0.tgz","fileCount":483,"integrity":"sha512-FjbrI9OZ4yCIPoKxyFlcvQE6pRUBkdifjnBY3070kM09jh9TtV4RDZXwOFfuSNeFPmZhSdmepT9gGG8mTbOIzQ==","signatures":[{"sig":"MEUCIQDExN39lxeKZEX11gmDLvx31Vi3+MMQ57KLcruDVsSaJwIgVL8jxS1lzBU1soweKXaWZzt8+lUmVXJy+14z2eiYgJ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35751018},"engines":{"node":">=20.x"},"gitHead":"d01c9cd13688dc0d4792ea520d717fbe7eb19588","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-02ef8e5-202605070850.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-d01c9cd-202605070851.0_1778143968354_0.6667625104990633","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-d01c9cd-202605070855.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-d01c9cd-202605070855.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-d01c9cd-202605070855.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e40e86e7a8d0cfad672cf14d251e4b7dbda83529","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-d01c9cd-202605070855.0.tgz","fileCount":483,"integrity":"sha512-Sw95DvWGu6TDngg8U30L6NJfoh3X35I4H3P6iSk3uKTWP559nIkVFJDRKP2fH/DAjM7kMNABKR/021AbYJJ1fw==","signatures":[{"sig":"MEQCIGyWCPmq5xkQKXb/0bNujTjuMVnTPFiD50bmhBa8j0EgAiAoj/T06d+IZKQa/r3RpbNGTQL1WLzE9OiOD3i+fUYG7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35750927},"engines":{"node":">=20.x"},"gitHead":"d01c9cd13688dc0d4792ea520d717fbe7eb19588","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-4038ebb-202605070854.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-d01c9cd-202605070855.0_1778144238010_0.10673400953983969","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-d01c9cd-202605070859.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-d01c9cd-202605070859.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-d01c9cd-202605070859.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e12a75f99f6d9edfc1ca99466c16764aa96058fb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-d01c9cd-202605070859.0.tgz","fileCount":483,"integrity":"sha512-nN6SEYRpeJp7yPHsBJG8Lo26rr/gGhe5UrTiahmknEPH/gztHyuP0nJHfuw+E24R9x3W2dZQT4o+BZdAeeMp6Q==","signatures":[{"sig":"MEUCIQDSiJHlXxL7jOLvRqMneheXsxzOIrnqqTlxAPmqHNc6rQIgO1LitA/toQ1fAUzdxIR8OPe+/2svethTh4dny1uvzSE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35751541},"engines":{"node":">=20.x"},"gitHead":"d01c9cd13688dc0d4792ea520d717fbe7eb19588","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-44ca36b-202605070858.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-d01c9cd-202605070859.0_1778144439179_0.341640218579079","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-d01c9cd-202605070901.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-d01c9cd-202605070901.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-d01c9cd-202605070901.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3d7bf29894f60c60e48ad9f00c6f064a0261b41d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-d01c9cd-202605070901.0.tgz","fileCount":483,"integrity":"sha512-X+vwtTuVXvl8rfcW/csMLut6Pmjxddtna0bb7meR6QTq7GnwVOarnYyc1RBQeJDE1ZI5mp9uoFPpXoCkpl6z/A==","signatures":[{"sig":"MEUCIQCSxvg+o8b36sXxYjqz/b0G2eYsUwZ3WiQyE99ONOph0wIgCI/luRKzGrz468OFIS8JK3OC9K69v7b8D/+mA+1Vi/0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35751317},"engines":{"node":">=20.x"},"gitHead":"d01c9cd13688dc0d4792ea520d717fbe7eb19588","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-44ca36b-202605070901.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-d01c9cd-202605070901.0_1778144588660_0.1906235534923475","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-d01c9cd-202605070904.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-d01c9cd-202605070904.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-d01c9cd-202605070904.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"89d7c27a45e950c246e5a4149189de00ce5a0c52","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-d01c9cd-202605070904.0.tgz","fileCount":483,"integrity":"sha512-xQ/AkcP+yZUFlsjJfWzeQnvI0A+j+K4LOjKbnD9SAxCZ5EaSzL/I+i1XXFCrKEkGM5NKJKZRfdIMzlqKhjM7mA==","signatures":[{"sig":"MEYCIQCLU8uF/PyR1ThoceU03v/35zk1zUE3YPtKuP8JIUpKgwIhAP/NrFWjCA326YQwLQ9nX2XtNcv/hLZ5VME9hqSc2H8g","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35751369},"engines":{"node":">=20.x"},"gitHead":"d01c9cd13688dc0d4792ea520d717fbe7eb19588","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-44ca36b-202605070903.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-d01c9cd-202605070904.0_1778144751754_0.9864514036813261","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-d01c9cd-202605070906.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-d01c9cd-202605070906.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-d01c9cd-202605070906.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"30734b5d3a205f63c4aed48164be5f65b95d95e4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-d01c9cd-202605070906.0.tgz","fileCount":483,"integrity":"sha512-q9KnzpFBiPjv2lrUHIWwjo+6+/w/VRAIHKsgbHjPdaFopQ7Iky50biRb+FnaNz7aRqT5ydp6pUI9fugCu4l9vQ==","signatures":[{"sig":"MEQCIA1tGF9e5QEUBNeJzHqKrJXVoc5rLSOWwL/dvIzGhytmAiBeB6d0dq95SYA+Te95zO5fwxFN+MeyIcpUYp7R+7oTbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35751448},"engines":{"node":">=20.x"},"gitHead":"d01c9cd13688dc0d4792ea520d717fbe7eb19588","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-44ca36b-202605070905.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-d01c9cd-202605070906.0_1778144906347_0.8312096986277338","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-be93ec7-202605070927.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-be93ec7-202605070927.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-be93ec7-202605070927.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"24f143853c7c955dec9407f61310bd7ff34673ac","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-be93ec7-202605070927.0.tgz","fileCount":483,"integrity":"sha512-0HmCXR+V40ICdJ13CDbLWfm1zJx3dABiIbF3byY9IurY6jHCDPCfot4KqsgSbiMbSGV45xAvoVxAOZDOXkLzgA==","signatures":[{"sig":"MEYCIQCrGFo8J4r5J/KTkFwewH5r/UUY6HHzNwyAPThL9ke9xQIhAOK6uMX0S4rqlPwdhsLpShBs29lSybiu6N3WP/qe/2jf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35752325},"engines":{"node":">=20.x"},"gitHead":"be93ec7fe2abfb1f11684b4c6c35f20032deea1f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-44ca36b-202605070905.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-be93ec7-202605070927.0_1778146162419_0.3678752216677412","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-c513f3f-202605070931.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-c513f3f-202605070931.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-c513f3f-202605070931.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"196bc19bb61675939237e0d3a099fbc588e6dfe2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-c513f3f-202605070931.0.tgz","fileCount":483,"integrity":"sha512-9qfBbRsGoRqm1HuAST+8wc6TS3iYtUs7CureztiKpH2QnsYK+2qznHIlcRW6ikjjfNL1FGesdTwmHKJqprjRNA==","signatures":[{"sig":"MEUCIQCxUfoVbfIVh6S26OB5jPAGpJj0Q2+qcLcDm7qStAjNZgIgfWQe8N5YwpPVanynfDMAT9Q9LCcs8WHp8PhtCfnvI6o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35752637},"engines":{"node":">=20.x"},"gitHead":"c513f3f1230b8cf36e11452808b626295d7975fd","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-44ca36b-202605070905.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-c513f3f-202605070931.0_1778146401648_0.948678770259991","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-17744ad-202605071012.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-17744ad-202605071012.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-17744ad-202605071012.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c85da5cb175eb2481686d08d7a80a9270b57d3f1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-17744ad-202605071012.0.tgz","fileCount":483,"integrity":"sha512-0PjcRt6LcyYaKU9YBkS7Mo+GdrDEJQHWBKUwCYbg6DjVpn3mxRwIHaKuIyZDCl8TQR0MctNHYW10nBWzBL99eQ==","signatures":[{"sig":"MEUCIDiJer3KQL4ND7zrD9PGIKPPtZFH+Wsv6lvV80Vbwr/TAiEA5Qbqu/GmDmXp/sYstS6PjU/1As3++/BrDArfOp/Vecs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35753152},"engines":{"node":">=20.x"},"gitHead":"17744ad2b1b75a3511353b59449f6ce67e7d8ec5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-44ca36b-202605070905.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-17744ad-202605071012.0_1778148839475_0.6747935266778557","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-17744ad-202605071050.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-17744ad-202605071050.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-17744ad-202605071050.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"79b1a8e4874363978c0fbf2dbf9858a51651d7d0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-17744ad-202605071050.0.tgz","fileCount":483,"integrity":"sha512-SKjTa/Ud9hbWpwXam+h2ShiP0XLs4r2HITFeyysPTpG9VTrUhnHr0z4VTBDgyKXrRkgbpXI9/kdzc9yKsZzeRw==","signatures":[{"sig":"MEUCIQCvCpsMEmIqahR3f3n+gVSwnAumHKL/jwHfJeGNTxY60gIgCDDzhnclAeWzs+i72/uuuJPbHL1TmU8ExSIM7lUpXms=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35753223},"engines":{"node":">=20.x"},"gitHead":"17744ad2b1b75a3511353b59449f6ce67e7d8ec5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-44ca36b-202605071049.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-17744ad-202605071050.0_1778151112223_0.013718689946250251","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-17744ad-202605071056.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-17744ad-202605071056.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-17744ad-202605071056.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cce621ca9439e29d7ee93dda041215893c0480b0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-17744ad-202605071056.0.tgz","fileCount":483,"integrity":"sha512-NObgVihyjtt7RRPbuuIZDXk16go7eIjwXJwF7Ow0SnxLD5u/5daa9r7ZHu3wYcpXp1VUT4+H8wXVFGfQ0BAEfA==","signatures":[{"sig":"MEQCIFwgY2Iq7qZKTGJJWcF/wsaedj1IbLj1n1at2GYt1z3dAiARf/qzm5v6ZhwQsoRkpprNieCarJTo6+DHU+SL2seD1w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35752769},"engines":{"node":">=20.x"},"gitHead":"17744ad2b1b75a3511353b59449f6ce67e7d8ec5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-44ca36b-202605071055.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-17744ad-202605071056.0_1778151465550_0.8788980654338778","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-17744ad-202605071231.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-17744ad-202605071231.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-17744ad-202605071231.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"21d287557b2e0559ee4fa43d54a4bc00a99757fa","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-17744ad-202605071231.0.tgz","fileCount":483,"integrity":"sha512-oN/dkjHg6gZEt7LQrUvbDTCb27ucyKDber0pjPQR7r/wpVbha/GvoT7yjRNtK2JklH8Pl1m0Be3CtSKrNfpZ8Q==","signatures":[{"sig":"MEUCIDqd7rw8AZrHbbEjifmLsJIuf2EqIAQmt9+CljaJe0VaAiEAxO6BuFLCqL5tUHy2pNkjj8voASUfCw/5edvyRfezI6M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35753006},"engines":{"node":">=20.x"},"gitHead":"17744ad2b1b75a3511353b59449f6ce67e7d8ec5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-44ca36b-202605071231.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-17744ad-202605071231.0_1778157209207_0.9748144838775641","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-17744ad-202605071236.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-17744ad-202605071236.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-17744ad-202605071236.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"714cebff8fc617ba6b47d700bc502793d1ae386f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-17744ad-202605071236.0.tgz","fileCount":483,"integrity":"sha512-rm4psa9mhRv4j18/GduzkS3usDunMD1lzh5ASk+eni2rK5IpOiWqhLaS3byMfxRYQmfTda4cewdRXhRZvqp0vA==","signatures":[{"sig":"MEYCIQD7GePDfEG7RWs/1rR6SNFJPoczryPysBDo9fMQ6QZdigIhAOMVDip7yjK/3+/RWo9ZLe6eO6+b1CKapUXl7CGfkOFW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35752677},"engines":{"node":">=20.x"},"gitHead":"17744ad2b1b75a3511353b59449f6ce67e7d8ec5","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-44ca36b-202605071235.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-17744ad-202605071236.0_1778157501417_0.35627296614724013","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-65182a9-202605071310.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-65182a9-202605071310.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-65182a9-202605071310.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"908c52e51b35a73b28306bd10a3a0d4547afca7f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-65182a9-202605071310.0.tgz","fileCount":483,"integrity":"sha512-jnDvK8SRIsGMrfSfWCM9c4gvZc6aPUEHY4PWKqocQvmOcS3rguiDReHwv3KKuKFSKMHamRfzlBjMSscygeIi5A==","signatures":[{"sig":"MEYCIQDomr3zwyr6+uP/sujGzyayozGBAJV+KbKj+zuG4Y2ZUQIhALQxYAL2yOBdbUZrZRk5PNHnaYOGPZujvyf94hqa6dY3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35755513},"engines":{"node":">=20.x"},"gitHead":"65182a94904b102cc4d2232924c7736b6f3a65e9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-44ca36b-202605071235.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-65182a9-202605071310.0_1778159526012_0.653463607553519","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-65182a9-202605071322.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-65182a9-202605071322.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-65182a9-202605071322.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6415ed5c6aa9beca3de6ff9e57ada09726b74515","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-65182a9-202605071322.0.tgz","fileCount":483,"integrity":"sha512-Wm5fxaLJoLL5Ac6M+qYoaLPWecZfi80D7cFP9iIjiHpP9g8zlVI0cfJb0fRBAU5uUhjwupdR5XOalpNrHUdpbw==","signatures":[{"sig":"MEUCIGKP/0T3QSwKoaJoIA2HYHeCYpv7jG4LWGln9xJGdIPTAiEAidCkQUOOAFrLXzDB9ZhaLjxmtcLOdKRiJHUmcLP7R1s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35755637},"engines":{"node":">=20.x"},"gitHead":"65182a94904b102cc4d2232924c7736b6f3a65e9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.29.2-44ca36b-202605071321.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-65182a9-202605071322.0_1778160261323_0.866303067916828","host":"s3://npm-registry-packages-npm-production"}},"2.29.2-65182a9-202605071331.0":{"name":"@flowfuse/flowfuse","version":"2.29.2-65182a9-202605071331.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.29.2-65182a9-202605071331.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"846b4acc69962479c6fe41195e1cfde75e19cddd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.29.2-65182a9-202605071331.0.tgz","fileCount":483,"integrity":"sha512-/DRx10CrRSwBJgm5HlknL+7vwqIbUkv9Kquw4AmEn3m1oPhRmYbvwTPnk5idbOdusudwuhLihWagZrIjEWijTg==","signatures":[{"sig":"MEUCIAsQhZFONXjHpHQWQ2OkobRaeqSWkZaTnFiMApUWqcFPAiEAg4BMMAyE5smgcIeTVrm9HqyEibo1p/6Zl5YoUSNqQ8w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35755365},"engines":{"node":">=20.x"},"gitHead":"65182a94904b102cc4d2232924c7736b6f3a65e9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.1-dd924cb-202605071329.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.29.2-65182a9-202605071331.0_1778160771921_0.10994965623760877","host":"s3://npm-registry-packages-npm-production"}},"2.30.0":{"name":"@flowfuse/flowfuse","version":"2.30.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1a8561177a530f52e4d378c65e5629cd577a244e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.0.tgz","fileCount":483,"integrity":"sha512-W7RPRQF0tafbL9X/Ok1Wixs+c3XM8P/fGuIxwB1dNhflhshypO6dOKrS+y1a5W+sSZKKGvHqi87AWunjKgcHwQ==","signatures":[{"sig":"MEUCIQDfDLABA70GqZjso1s+VNG7dfJ2JOiMn53zByCvvDPBPQIgSJSWLN1YMCjDCuqZt6EDQ2Dnn2GRJTJ8K+VDkfYX8x0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35756753},"engines":{"node":">=20.x"},"gitHead":"a8aa55dc4f7458ad4729bc888bb356d8fc245d37","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"^2.30.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.0_1778161525987_0.7313608397820326","host":"s3://npm-registry-packages-npm-production"}},"2.30.1-a8aa55d-202605071401.0":{"name":"@flowfuse/flowfuse","version":"2.30.1-a8aa55d-202605071401.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.1-a8aa55d-202605071401.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"af45443bf43a82d22aefc37d1d856e48919f7caf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.1-a8aa55d-202605071401.0.tgz","fileCount":483,"integrity":"sha512-DxecQ5vzU/rceQEEB2UZov3AeswsG3YwnLEeShlpX1WR7NTrLcCY2SldlnqzSxTau0SbMqOmDg3wbH2H5VsCJw==","signatures":[{"sig":"MEYCIQCRqf21pO5i/IEN3vk2+LT644mM1zNVwvZs0lh56BvIwAIhAJnzEIHjtLvMIsJuUEEJCbHySE/tSELKg2sasMax95in","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762149},"engines":{"node":">=20.x"},"gitHead":"a8aa55dc4f7458ad4729bc888bb356d8fc245d37","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.1-dd924cb-202605071329.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.1-a8aa55d-202605071401.0_1778162630248_0.6487552850014133","host":"s3://npm-registry-packages-npm-production"}},"2.30.1-7816b98-202605081141.0":{"name":"@flowfuse/flowfuse","version":"2.30.1-7816b98-202605081141.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.1-7816b98-202605081141.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dc2c6b79373a0f1d72c3e026bc208e1224004e80","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.1-7816b98-202605081141.0.tgz","fileCount":483,"integrity":"sha512-iZvTxk6fL0vwM2KbChEsPIogUQBDtzfIpCMo0hNhyoocPepF0L901EwlJUIgoFrqwhIYXW/kHEQ7AgTIPj6Ulg==","signatures":[{"sig":"MEQCIG/wqTschmUuiOBvoheWtO92+vTPUk4FLRHGrSx2T0cWAiB9RA5ZylE3C0nghzKMmJ2uo3pxLEE3l9XelgHFwEsdww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762499},"engines":{"node":">=20.x"},"gitHead":"7816b98420655e8db6220c46457b4c94218b8533","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.1-dd924cb-202605071329.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.1-7816b98-202605081141.0_1778240577174_0.7179963738999706","host":"s3://npm-registry-packages-npm-production"}},"2.30.1-5a0d55d-202605081424.0":{"name":"@flowfuse/flowfuse","version":"2.30.1-5a0d55d-202605081424.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.1-5a0d55d-202605081424.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5121fe45bc4e194a178b2f027a1e62ff9c9ee57c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.1-5a0d55d-202605081424.0.tgz","fileCount":483,"integrity":"sha512-Bqu3egId8msAaEPouPtF1bRW7TtAGtuLWlLDpapbld2ii+ohxAZqKfiS80hw0efI/+rWpXuK5/cpz83j6N20ag==","signatures":[{"sig":"MEYCIQD/99VK0bAMNtCEDlFLogWHleaRLhzloiuzngsUTRLrIgIhAKGAtwhA5rD0/NwrF+PepjbirzNmEPCs2r731bNh1ohn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762799},"engines":{"node":">=20.x"},"gitHead":"5a0d55da535e46a39780e7fd7d9e6036e52aacf4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.1-dd924cb-202605081423.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.1-5a0d55d-202605081424.0_1778250392897_0.4617872029512351","host":"s3://npm-registry-packages-npm-production"}},"2.30.1-5a0d55d-202605081427.0":{"name":"@flowfuse/flowfuse","version":"2.30.1-5a0d55d-202605081427.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.1-5a0d55d-202605081427.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c52dd5d4922bac92324762171670570a5dc9102e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.1-5a0d55d-202605081427.0.tgz","fileCount":483,"integrity":"sha512-zwWQIqnoCrh1tvtAgO1ZDtFpBGRsIj/tgXSqufgbwXW7rNruphQJHOtWd4xnnWG6d1aKp5xS+eR6+oPosnMZww==","signatures":[{"sig":"MEYCIQDRZt+P0MytC0rHn4jJcu7zBLKttgxQIFgMhSlgqEXO6QIhAI9UPfbWojIR2yKI0WSyDyKN02O3QVb4FYXCEUKoQXp6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762758},"engines":{"node":">=20.x"},"gitHead":"5a0d55da535e46a39780e7fd7d9e6036e52aacf4","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-0c07ca5-202605081425.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.1-5a0d55d-202605081427.0_1778250525322_0.5109211477206821","host":"s3://npm-registry-packages-npm-production"}},"2.30.1":{"name":"@flowfuse/flowfuse","version":"2.30.1","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.1","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8362523427dd1ce0e68dc687e8fd29a3b8426d25","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.1.tgz","fileCount":483,"integrity":"sha512-JcCQuj1oxt++4v3Q5A2BKjaB1JN2sFWj41gg+Yhc+slLb9Kb/RsaVZTyvZbDPF6aMHmTU1bPE18EDMksAvwcig==","signatures":[{"sig":"MEQCIC2/E3sGNDQdTLVQafVHviKdhv7pURWG86iNbliSOIx9AiAeGM6CTz7NWG6CA6nISBfIeIZqxjOCV+Xjrxixn3KCYA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35757374},"engines":{"node":">=20.x"},"gitHead":"1cc80fc941105f0ab8ae61dc59ad5be90c004818","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"^2.30.1","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.1_1778251801453_0.416627912459411","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-1cc80fc-202605081449.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-1cc80fc-202605081449.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-1cc80fc-202605081449.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d98f0fb2fd846da9c84193cc690b6deac253869b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-1cc80fc-202605081449.0.tgz","fileCount":483,"integrity":"sha512-EkpYQ2tyww2ZPUo2+AZoTYv4ap8imtsN6KRQAaDbffBHfZx4MJa3o8nU1OLlTc+gPvq/ke+wtPrG/0uFxsYXdQ==","signatures":[{"sig":"MEQCIFic+6EXXsk3Vl+855xzaC38jGQO3SohjyapWh06tZdrAiBgryJSKJa13gBf4NVzfi/0n4V4uViH5j0C+1ymySqLXA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762476},"engines":{"node":">=20.x"},"gitHead":"1cc80fc941105f0ab8ae61dc59ad5be90c004818","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-0c07ca5-202605081425.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-1cc80fc-202605081449.0_1778251875480_0.6741560079110167","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-1cc80fc-202605081507.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-1cc80fc-202605081507.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-1cc80fc-202605081507.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"32a6cfbca20b21cd6e929cf70d498eb0395538c9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-1cc80fc-202605081507.0.tgz","fileCount":483,"integrity":"sha512-4hygweDA/kEK4sJFwdzxRASVUVRHIWU6uXIL3DVmdXPAxtmWZd7fknIezn+hkbZVMU0lccnSQWa0ebCNseRbSQ==","signatures":[{"sig":"MEYCIQCwqm/yeXUemDtKS5lByt6DCmBr1WxRD1rHLqQ9ol17LAIhANMling6w5Zsx108lk6b4ylum2OcmWjAePQeyKK3TDVC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762390},"engines":{"node":">=20.x"},"gitHead":"1cc80fc941105f0ab8ae61dc59ad5be90c004818","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-0c07ca5-202605081425.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-1cc80fc-202605081507.0_1778252951757_0.3272041147586473","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-485e8d0-202605110932.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-485e8d0-202605110932.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-485e8d0-202605110932.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"08c5ccf48c549615403abda189707f7f6dc51204","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-485e8d0-202605110932.0.tgz","fileCount":483,"integrity":"sha512-Iydv14M5ZzE4zLiQjJRxlsOFMcq1VBGtHZcnY5HWYc4PAXpuejOb9PaY3XYegsYMYJlNcH3fwXFFSG8o3vLJXw==","signatures":[{"sig":"MEUCIQDEo/j3dEp7N6E2AhyuHmb1XClmEhaTCz8CFxkDBsCK5AIgdGbWZFVDPJ1qlLmzZHJk9G2WqNOvPXK2QOIwVNZfykk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762769},"engines":{"node":">=20.x"},"gitHead":"485e8d02111631781c945da21d767e9847207eb6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-0c07ca5-202605081425.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-485e8d0-202605110932.0_1778492040922_0.8871881051851191","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-9a0bfa9-202605110951.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-9a0bfa9-202605110951.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-9a0bfa9-202605110951.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4b6f8e60c5e1668398668bc8287072329f46e165","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-9a0bfa9-202605110951.0.tgz","fileCount":483,"integrity":"sha512-f21JYtz5udagFe8SNwIKx7THxnB2RwJwnNvVvqgaZp44w1o+9u3WeXpbjgpZj0sPZjW4auEcwXksSNa+pCMxmQ==","signatures":[{"sig":"MEQCIBvM+72RXXJUF848RHjjW6VRaSBMy+uAzsY8wVd4Dx70AiBxkpCeUUgnYr82HE5RsKZ50F8bruenkCxf6T3bVEdEtg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762923},"engines":{"node":">=20.x"},"gitHead":"9a0bfa9019a96edead2cb4a1259358336aaa00e7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-0c07ca5-202605081425.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-9a0bfa9-202605110951.0_1778493219359_0.0574785273796008","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-9a0bfa9-202605111557.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-9a0bfa9-202605111557.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-9a0bfa9-202605111557.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"aa07490ce8b8a36395cb359a0e780dc64f225180","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-9a0bfa9-202605111557.0.tgz","fileCount":483,"integrity":"sha512-xtUZtclrX/ylwj3aXKNPWs44FUQF3syJKmJva5fYBzECW8Qb9/YqbDFnP2jQokvXfn8KnWiroNaPi2RDw+3rHg==","signatures":[{"sig":"MEYCIQDx2JEK7C+QfbFiAic6/ukChY/CSiw3vGEHe1YX1A6uvQIhAJEnVrO3SvcHTlu3jnvW3tLMAOUnKLRYB5oVbxrHuL/5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762819},"engines":{"node":">=20.x"},"gitHead":"9a0bfa9019a96edead2cb4a1259358336aaa00e7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-0c07ca5-202605111557.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-9a0bfa9-202605111557.0_1778515174092_0.5107328030106149","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-9a0bfa9-202605111603.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-9a0bfa9-202605111603.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-9a0bfa9-202605111603.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"becb5ccb3525f6450cd84e78ec9bdf59a771399d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-9a0bfa9-202605111603.0.tgz","fileCount":483,"integrity":"sha512-QvqYSBIgmFaT+sqqsVdc6MN+ryW1X5jGCLwJQSZcFc6Uva1G8cjOtRuej7C4gILmMwV5C+3TJ/SM1R7kXggY6w==","signatures":[{"sig":"MEUCIQD6QGY/t+NYV2TF7PJqMtZTJWGzIn8+qWn5uZQzTD/xggIgLlrXAGxIuWjcbJKa337IG0XGSx4kEGqJaZgMGO/9SI8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762633},"engines":{"node":">=20.x"},"gitHead":"9a0bfa9019a96edead2cb4a1259358336aaa00e7","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-0c07ca5-202605111603.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-9a0bfa9-202605111603.0_1778515534278_0.015572203431367448","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-04e59fe-202605111607.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-04e59fe-202605111607.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-04e59fe-202605111607.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4f2741d0a94466a579afeb3cb8d755af67ae5ad3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-04e59fe-202605111607.0.tgz","fileCount":483,"integrity":"sha512-qXqHASpAGng+04A1Nmj5q2zYyL/fJtkmGGi+gn+V7F/8D+CJVPgqkFW4/ZoAWjLYRUjSzyW9GH7HEe6dhLaiZQ==","signatures":[{"sig":"MEQCIEDjUc+hyc9e/N09QlQaoQC6+DWc6lZLTcRHtQ71CDVVAiBpi8yFZu6cKvCjCWwFNvWCywbSOAN1Msthm+JcaU2kOg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762901},"engines":{"node":">=20.x"},"gitHead":"04e59fef2a46b5df23f3bfc63071bf37727a5f08","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-0c07ca5-202605111606.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-04e59fe-202605111607.0_1778515739598_0.011737123535895844","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-04e59fe-202605111611.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-04e59fe-202605111611.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-04e59fe-202605111611.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"017f969d5a613e5fad65ea16c6f2ac281366d7c6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-04e59fe-202605111611.0.tgz","fileCount":483,"integrity":"sha512-XA1qbu3IlHuDUxtsWbeAwQXj3PapsriZzdgpYUahb7UPIg1hIPQuHMX4VneCYUzmIWfrTpfnVDA+/xz+Zhu7Jg==","signatures":[{"sig":"MEUCIQClqbWVp/6VigAdYayNAPQU6DJBHuU9PTvxKubSLG5dmQIgFCo3BVRDl+3hx8qKBU3+UssIQ+oET3LmByJ+vWvYr5E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35763005},"engines":{"node":">=20.x"},"gitHead":"04e59fef2a46b5df23f3bfc63071bf37727a5f08","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-0c07ca5-202605111610.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-04e59fe-202605111611.0_1778515981208_0.4203037049751075","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-04e59fe-202605111622.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-04e59fe-202605111622.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-04e59fe-202605111622.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0a6a826e4662143a89af767564231302d080a5da","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-04e59fe-202605111622.0.tgz","fileCount":483,"integrity":"sha512-7Bu6IGmub++Lfu1cXpqpLjKYni7TmlPiXGrOvdWECiI7dWEBPhCWTm3WpnEGKTl94+WmDyvY2dw18W0uCvbjCg==","signatures":[{"sig":"MEYCIQC1s0ggkTSkP4vCOkt77xGxlNK/OjRry8NN9yBq6TJJowIhAKxeZ8/2a3bAqusJO+FW5CQz6kLEWw5gugQ4HcvVdMWk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35763101},"engines":{"node":">=20.x"},"gitHead":"04e59fef2a46b5df23f3bfc63071bf37727a5f08","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-0c07ca5-202605111610.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-04e59fe-202605111622.0_1778516666377_0.008017528293552845","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-04e59fe-202605120838.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-04e59fe-202605120838.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-04e59fe-202605120838.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"40ad4b3295fced478c3f77711b3e9b29faa68651","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-04e59fe-202605120838.0.tgz","fileCount":483,"integrity":"sha512-jAgmHtQhVscaUCmQHGNhCv2hBnl77tedgq+ePuQODjIeiwmBpzM0G0VKTb9x7xvI37x7B9wHIkUVfhbo08aawQ==","signatures":[{"sig":"MEUCIQCe+hw7K+kgcdvhQQRhvcE3CeG56TDPK3Yc3srW67Q14QIgRoo5mqq5Aa9f1ETPeMKjne5zRagjuxCrIYH7SYCAtYI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762828},"engines":{"node":">=20.x"},"gitHead":"04e59fef2a46b5df23f3bfc63071bf37727a5f08","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-0c07ca5-202605120837.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-04e59fe-202605120838.0_1778575209545_0.46109468015250044","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-04e59fe-202605121020.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-04e59fe-202605121020.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-04e59fe-202605121020.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6d366f5b54bdd45c381557c60418c938d21da28b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-04e59fe-202605121020.0.tgz","fileCount":483,"integrity":"sha512-q61MQrEzWLNqb7mmXz96PMttueA+0Al2pcyKF34L6CngcGVNuHFLTvDH4DkSmUp3hrg9cKI5TPQ0VOS8/hNwJA==","signatures":[{"sig":"MEUCIDiayj+Bv8F2t4HHgoIC10scNc7DqmktslxBDovfJKQHAiEA5Pa/eMKTBao/Zy7SCQmn0KI/G+6AVITN/rBUkmD6MwQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762826},"engines":{"node":">=20.x"},"gitHead":"04e59fef2a46b5df23f3bfc63071bf37727a5f08","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-0c07ca5-202605121020.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-04e59fe-202605121020.0_1778581341455_0.08384256582188088","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-04e59fe-202605121050.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-04e59fe-202605121050.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-04e59fe-202605121050.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e0d7edee10345a2a3acff572f362e87113a3db00","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-04e59fe-202605121050.0.tgz","fileCount":483,"integrity":"sha512-JLL12R4OMz/DZt+I+r7Kpjm7hpD+8dCklPvI9WT2FVq0WDqmAJUsXaTZRUEr3TDB5neB8hmgwef0sHqyuGGzag==","signatures":[{"sig":"MEUCIELdu8C/5+7jT3fdCofPDcObdYZDd3LoYoUxHBlayl6yAiEA9JvOI5zdoN/Qz4E77fGX9ACkx76Er4l1A0nDDhyI85M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762722},"engines":{"node":">=20.x"},"gitHead":"04e59fef2a46b5df23f3bfc63071bf37727a5f08","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-0c07ca5-202605121050.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-04e59fe-202605121050.0_1778583146850_0.5915289004381366","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-04e59fe-202605121121.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-04e59fe-202605121121.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-04e59fe-202605121121.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"37b18adbf3526cc5d9636b3447b4bb7ad2bc2b6a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-04e59fe-202605121121.0.tgz","fileCount":483,"integrity":"sha512-pzYY9SmK8XqQsGa23ZlzasgQtHlw2CKFQPSKO1f3WNOMKnL9dTDXTaOwsVHVzEhcFSBXYVlfi5Qg14AOsbHVIA==","signatures":[{"sig":"MEYCIQCVafo61ulpP5nmSXIoFvdYsiAYO8h3vSLa1z+sj0PAawIhAKNvEComK9C6ZjQj+UHYClYVVYW142oZuUDe4TIwQvFx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762805},"engines":{"node":">=20.x"},"gitHead":"04e59fef2a46b5df23f3bfc63071bf37727a5f08","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-0c07ca5-202605121120.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-04e59fe-202605121121.0_1778584995322_0.6452298972733876","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-ae00ef6-202605121415.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-ae00ef6-202605121415.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-ae00ef6-202605121415.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0bcb5c86936372f47b77163dcdca97e26a49bee8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-ae00ef6-202605121415.0.tgz","fileCount":483,"integrity":"sha512-qDpwPGxNilWQ7biaiejlFy87P4YDVri1xAlURiKZSaHQMnNGBM1heCIrO+tUkl5dlLpYkSoWjhT2gLgzHJ997g==","signatures":[{"sig":"MEYCIQDbUGfJVK3mU2sbXdtLQPKpYCvO+xXns3l9zCAYFVuO+QIhAJc0dMR1wQCZ8OJSQTx8iXISrI1Q7cKpaOkQ8w/yLvYI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762798},"engines":{"node":">=20.x"},"gitHead":"ae00ef656a9f26e99f54532048a173b9f6df3de9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-0c07ca5-202605121415.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-ae00ef6-202605121415.0_1778595449129_0.44237894264468447","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-ae00ef6-202605121523.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-ae00ef6-202605121523.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-ae00ef6-202605121523.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a6099b5ee762876b06d727998c12033a7b45ccd9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-ae00ef6-202605121523.0.tgz","fileCount":483,"integrity":"sha512-OXB67EYMZpXR/1ahag6NpK/v7vdCjUL7lQ337EPpN0khQLKxWzLIq+OYGvcKROTey7j6/AA+bdeXCvJHXPxlEA==","signatures":[{"sig":"MEYCIQDFHzziPJHKOi8SsIFbzlzowupNNxnRWkIrhyMz3JwHZQIhAMNZvja6uaPVrUcGx0r/XyDtmil3hWy4ZOv9ydsjsZWp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762766},"engines":{"node":">=20.x"},"gitHead":"ae00ef656a9f26e99f54532048a173b9f6df3de9","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-0c07ca5-202605121522.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-ae00ef6-202605121523.0_1778599486215_0.9668279023671567","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-129a3cb-202605121612.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-129a3cb-202605121612.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-129a3cb-202605121612.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f7c41b1a0b95df82a0781893500d16a4d1611017","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-129a3cb-202605121612.0.tgz","fileCount":483,"integrity":"sha512-DsG8msFYsF7fmtwT1YUKZFI7H+14QqxmwAsCN5MynfAeYWs4Nc86V3RYu5hxwQKmJR0P0z8PhnnchuWt7X8MSQ==","signatures":[{"sig":"MEUCIGz6whHPM2WqrAuZNwEQR8h3Ae/KWt0mr/bwMN2ufTT1AiEAyRq7RWhQZ4e5mI2obH+z0XaFp0ZFGTXob7NkoYTmy/g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762574},"engines":{"node":">=20.x"},"gitHead":"129a3cb0f5531f01be2052526ed0ee3815b4b64c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-0c07ca5-202605121611.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-129a3cb-202605121612.0_1778602437445_0.8252832227012916","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-129a3cb-202605131107.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-129a3cb-202605131107.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-129a3cb-202605131107.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1683e6be8451f26a7a8cc668c5c492d0ec96ea94","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-129a3cb-202605131107.0.tgz","fileCount":483,"integrity":"sha512-ZMbI1uFocfeQ4oOP2nGoITzvTqmuOR/xj89cEyWBGzPjdUuJCRY/1C1hxuiEHCp8F28W3YdFt2PYyncA/1JFhA==","signatures":[{"sig":"MEYCIQC48XA1uv8jk2NFTGfrVckF7L2UsS3VYbQ5OVp5ZPUfJwIhANc3QfIl5FR2Dj82hQcnAmsLCJfBIjNDsLrpmX466AbN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35763014},"engines":{"node":">=20.x"},"gitHead":"129a3cb0f5531f01be2052526ed0ee3815b4b64c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605131107.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-129a3cb-202605131107.0_1778670583821_0.6367843413891512","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-129a3cb-202605131148.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-129a3cb-202605131148.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-129a3cb-202605131148.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e8268ac5e53486e745cc1c9e3ad9803ed44785d9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-129a3cb-202605131148.0.tgz","fileCount":483,"integrity":"sha512-G5PhPYTSrTAXVyDAS0nVP//2n5claAYVgRl7HvE3zoa6DbpyGnb+dqAHbZCTDe4Wu/WqjpVu90W5JK1WkR3HwQ==","signatures":[{"sig":"MEUCIGTcH4jYHSGkyTKVEQ540XdD+Wo6OnEqHswIEo6FrcdDAiEAukc3uWs4jpqzaooaHVcEpmc2T343v4wdusHV/ULgsb8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762901},"engines":{"node":">=20.x"},"gitHead":"129a3cb0f5531f01be2052526ed0ee3815b4b64c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.11.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.14.1","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605131147.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-129a3cb-202605131148.0_1778673038899_0.08775473064036343","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-ee32e3b-202605151458.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-ee32e3b-202605151458.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-ee32e3b-202605151458.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"77165eff2325e0452306e7715d00cc4aa084e873","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-ee32e3b-202605151458.0.tgz","fileCount":483,"integrity":"sha512-13YOMnXPeXbLhlbImOnY/U0fSgIBpmPHIDmaI56+cxbLwS1f0zBqfwJcfzw3zRb3jJA3c1C6WvGIUBKCOmHXKA==","signatures":[{"sig":"MEUCIGnw/9+oIo4wX9EFMIKT++e82mjbuneQwkzYlK5Yr6AWAiEA+aF4AOSCSdo1g3QwUZ/swTDqmdErzPnGLiEj3j/yUlI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35763065},"engines":{"node":">=20.x"},"gitHead":"ee32e3bc516b46f05e64499e2c576d483ad1564f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605131147.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-ee32e3b-202605151458.0_1778857197912_0.790891002819089","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-416b17c-202605151952.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-416b17c-202605151952.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-416b17c-202605151952.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c95c9a41296b9dd89ff85906c9e14df5b31eb858","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-416b17c-202605151952.0.tgz","fileCount":483,"integrity":"sha512-/SCVZ6KMEEPA26eR/sHZAs/kTvLMSgFwkI+5W7c3LtxauKTGj0pD0ElsrVg+m0ow8bEhp0lnVwGVXf5Nkqsogw==","signatures":[{"sig":"MEYCIQC9cas8d//P0zm/UyAxnN6F5gQB7afEntz72hm9Iw0tXgIhAKVdmY1MTOCLTzj4MARF3KjMYs2pNejI0AZ9pysuVanP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762730},"engines":{"node":">=20.x"},"gitHead":"416b17ce5f4f4c35a5759829ac9aab61f121b18b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605131147.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-416b17c-202605151952.0_1778874869009_0.2464221498272059","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-9260a6f-202605160544.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-9260a6f-202605160544.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-9260a6f-202605160544.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f6adf783a3c6073f53f9723bdee4b11d90d07cef","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-9260a6f-202605160544.0.tgz","fileCount":483,"integrity":"sha512-XN1Jp5OBRcBSopcZNMnXI0lMVnsVLvV/vuy094OIXS22nEkbAgkVjVvw6Bdx8/oAqwN39ZAv4IRicThYp1Q8SA==","signatures":[{"sig":"MEYCIQCHqPd4RlPqcNZfR+/EiiWdCsDHOTmqeIDEt8RUz4K2ZAIhAIZd+tdDCtoPIwoprdBQgpSgM6ylJtKkgXxmnC/skZA5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762579},"engines":{"node":">=20.x"},"gitHead":"9260a6f8d7b98033a4f075b877d30584e4a4da5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605131147.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-9260a6f-202605160544.0_1778910392660_0.2100918031625647","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-9260a6f-202605180719.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-9260a6f-202605180719.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-9260a6f-202605180719.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9fa7313a1a3550e27a873686e61b6712616df108","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-9260a6f-202605180719.0.tgz","fileCount":483,"integrity":"sha512-a2ga1WJOaWD4l04EcMK/YLOM3cfhBKhLfEs4hpvf0OmAY53RP4fblWSyO57YOAdFqFAYhp7zIxgInu2wNg5AtA==","signatures":[{"sig":"MEYCIQDn+O2U9mKRIrdHFPgvvC6a7kBH+4ZYP3dz1v7/qiJMwwIhAM0GkGie4uuPPDtV/M3kWh3vsHt42bVHs6G4MaQb70nN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35763001},"engines":{"node":">=20.x"},"gitHead":"9260a6f8d7b98033a4f075b877d30584e4a4da5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605180719.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-9260a6f-202605180719.0_1779088880025_0.603349132604156","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-9260a6f-202605181137.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-9260a6f-202605181137.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-9260a6f-202605181137.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"30b4ccbe6672030d7061fe59750b2031b0808131","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-9260a6f-202605181137.0.tgz","fileCount":483,"integrity":"sha512-sM/W3+yUXbEcMpv2gjdp5D+whmqmU9W2FobfBzciwsPkvYM+ZoNmmGKWnciaqs8Fbc+ioklopsd6+0m9hbfmHQ==","signatures":[{"sig":"MEQCICjt0ZkSivCowvZblMVRjtCoUx2FALcidFaA6ry+41JWAiBskxVPMSFUNo7hJpd9tFhX58bAChRcIogBl9JrXRrBCQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762820},"engines":{"node":">=20.x"},"gitHead":"9260a6f8d7b98033a4f075b877d30584e4a4da5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605181136.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-9260a6f-202605181137.0_1779104350138_0.16694507482014243","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-9260a6f-202605181218.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-9260a6f-202605181218.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-9260a6f-202605181218.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"47b62ebb2c51c4ae071c16e5a23bb1a19778100a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-9260a6f-202605181218.0.tgz","fileCount":483,"integrity":"sha512-a2wRoq27+1fJ/IU2cE5NioNgOhIDI/qrqtwv1WdFaDzOPn8ROEUckqb2hpadAM5zNfGXigMRJ3Bo9W2T7/3QHw==","signatures":[{"sig":"MEQCIGM1/0cp6m1ax2uqG78IDIYKABu9oEOtuGsJWJGFsBAlAiB+yfeNMZCnaQdUzBlEwgzJ9LURmySrmS2o+9eRnuLZcQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35763152},"engines":{"node":">=20.x"},"gitHead":"9260a6f8d7b98033a4f075b877d30584e4a4da5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605181217.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-9260a6f-202605181218.0_1779106794071_0.6986532212499474","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-9260a6f-202605181253.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-9260a6f-202605181253.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-9260a6f-202605181253.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8c3560ffbfb53d8f8ea9369d3e47ef37772c0058","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-9260a6f-202605181253.0.tgz","fileCount":483,"integrity":"sha512-8hxKYsDE+HeD1FIxSeq64t2iXM/Bn5HlJ+j1IccFu7r6yftswmdR6blhcDuz1pXwhbpDVqz0RufM2cN+eZhX3A==","signatures":[{"sig":"MEUCIFZ1OXqBUjmuN2hfsQ4pXurvqkcDbU4J+n4BAgn0IMGqAiEAwRfbwr/SLPy2adJK+Is/n7l14vxvRXZA3JWClQVENMc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762896},"engines":{"node":">=20.x"},"gitHead":"9260a6f8d7b98033a4f075b877d30584e4a4da5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605181253.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-9260a6f-202605181253.0_1779108939260_0.2204600844503235","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-9260a6f-202605181304.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-9260a6f-202605181304.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-9260a6f-202605181304.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ecc6dc07c99a25ea492ae28f4aece4e404b38e8b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-9260a6f-202605181304.0.tgz","fileCount":483,"integrity":"sha512-q6TuH/hEEurIAT6M8Lbv+Gm46KIS0yi2ktHeDjSDTUrdPNJ6wQcYI/n0Equ3LQ1Mj9y2sUrvFU5VrRt+QYRwBQ==","signatures":[{"sig":"MEUCIQCy4QrFNMToeAU4/bU+4OA968DLc2ED85ET2g+6z5tW1gIgFAPBAws7lUNs8LU3VSaWcaJhbC8efsyFMwyvSdDoaNY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762822},"engines":{"node":">=20.x"},"gitHead":"9260a6f8d7b98033a4f075b877d30584e4a4da5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605181303.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-9260a6f-202605181304.0_1779109546776_0.6273764207334527","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-9260a6f-202605181306.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-9260a6f-202605181306.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-9260a6f-202605181306.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1285ed9909f45fa54f25c5f26663373d1672a0eb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-9260a6f-202605181306.0.tgz","fileCount":483,"integrity":"sha512-9CLEXEUX6rz3MWyPwVgZ6wk7f0i3Y6ZHFodRZhqio2R3rC2lRWBBYt8nVxGACLqpaFwA9Yof/hjnl9hE/9/lrQ==","signatures":[{"sig":"MEQCIBoyj81sBRyDhQ3oR8uDtOpBwtBWUHRg7S9GVJzrI7E7AiAJg6OSjnmez5Azutz45AulnZ9Z/5pNoLvlp8D9F2U2hA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762776},"engines":{"node":">=20.x"},"gitHead":"9260a6f8d7b98033a4f075b877d30584e4a4da5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605181305.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-9260a6f-202605181306.0_1779109685655_0.9489162079859232","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-9260a6f-202605181317.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-9260a6f-202605181317.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-9260a6f-202605181317.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"456303b30ee84d24862e96dfe08f40861a008010","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-9260a6f-202605181317.0.tgz","fileCount":483,"integrity":"sha512-mmVEt/jqGirhkFWzlOOena6+eiT5AVLvyZfmFvjDMWoSHcvC5xqeARO3WCheEZY4GUwfG/1ZoRjJvnEiuPh9GA==","signatures":[{"sig":"MEYCIQCCs7q+FAvwg+MzA/5+mAzCluQzZQW0e/flTHK63GxToAIhAL3Sj3vBTeqA9Vot1Y9/o5Jf1OJpGeFbqNZwpfyEa7UP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35763020},"engines":{"node":">=20.x"},"gitHead":"9260a6f8d7b98033a4f075b877d30584e4a4da5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605181316.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-9260a6f-202605181317.0_1779110334751_0.21308428036155003","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-9260a6f-202605181324.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-9260a6f-202605181324.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-9260a6f-202605181324.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4ff1862b47d49e08464008e83b365952476bfbd9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-9260a6f-202605181324.0.tgz","fileCount":483,"integrity":"sha512-pCo59nSELh1AMD9kQa9EjEUAoF4MeW1fxdZkoXhaPkyc6kfglUdo0jljw9+k3Z6qMNR3u+9dFYIp770a9APh5g==","signatures":[{"sig":"MEUCIQDTC+RPgujpdoIrQs3POGwh3UIV9zwDF6qFRhFCLhLrwwIgMFpsn06twyh+NSYS6dksCQJtzrCR10N1oNFhaibcmW8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762782},"engines":{"node":">=20.x"},"gitHead":"9260a6f8d7b98033a4f075b877d30584e4a4da5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605181323.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-9260a6f-202605181324.0_1779110776649_0.28467803672100134","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-9260a6f-202605181329.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-9260a6f-202605181329.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-9260a6f-202605181329.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"803c370e446da798ceba587122b8f1d50e239488","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-9260a6f-202605181329.0.tgz","fileCount":483,"integrity":"sha512-NmJ21UHRNJfcWCqe/Y8y63Pwj1UUUNJ5jAruG5bokrNVhEkb/F5PV88GjdhVtY5/a+ka04hOfS4eUgrVV3G90w==","signatures":[{"sig":"MEUCIQCCUUwreVAO0QNKqUTJfudZrR4dZ4Vj13lFzvJMrQZEngIgL47VJeEQ09HZm6kLUd6fcqwt4eMy3bov7Oibudmzb6w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762482},"engines":{"node":">=20.x"},"gitHead":"9260a6f8d7b98033a4f075b877d30584e4a4da5d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605181328.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-9260a6f-202605181329.0_1779111061849_0.1099119828178845","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-21e6bfc-202605181425.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-21e6bfc-202605181425.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-21e6bfc-202605181425.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7d9a602389592bd36192127db4faa8df0bdf68bc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-21e6bfc-202605181425.0.tgz","fileCount":483,"integrity":"sha512-xjyQ7Gmnqv2lEQJ9jYEVLY3nbIpXJhzAkJMm4oa/mwQT8N4zivjaCC7Suuabo0GExVhRuLwqxv7gHYYvCZw5kA==","signatures":[{"sig":"MEQCHz2Tw8boWZpx092XbBo3wq7+490/1mEzdpyWK5oVQOgCIQC7FK1ctd5Ip27Sj/X8J3eU4prqW7QDtoWSBKZxV5xLkQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762607},"engines":{"node":">=20.x"},"gitHead":"21e6bfc09c4434c5602c5d0c6eb4cbcdfe9b8624","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605181424.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-21e6bfc-202605181425.0_1779114429443_0.6675571425426727","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-21e6bfc-202605181429.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-21e6bfc-202605181429.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-21e6bfc-202605181429.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a8d8b1e34eea481fcdcb6e28d407109ec4a53987","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-21e6bfc-202605181429.0.tgz","fileCount":483,"integrity":"sha512-e8obG+qH+MnyD9NyuwgLKhhq++BI7mgBQvpnafYOUeNKjHF/gpKvXPRHgVAHYFyb9OzHRVNs0KF3FieTSWZgog==","signatures":[{"sig":"MEUCIQDjSIndbCZyzq0trvhinWI9Him1O8AgFotyn4U0YWpEXgIgaSXhk0R/PGLmovUqwd+xUq2nik7bIop7vPHXNbpY4cE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762826},"engines":{"node":">=20.x"},"gitHead":"21e6bfc09c4434c5602c5d0c6eb4cbcdfe9b8624","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605181428.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-21e6bfc-202605181429.0_1779114669801_0.8884130261148167","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-21e6bfc-202605181431.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-21e6bfc-202605181431.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-21e6bfc-202605181431.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0ecbb0864363fe5a137ce360e00f65240460c9f0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-21e6bfc-202605181431.0.tgz","fileCount":483,"integrity":"sha512-nS5OXk7gR/XFSQ45OWgB9xFzRDWy6MN49J0785p8QOn716cKSF6ZzssqkOAOATIHFswhl3cuVFqHOFy1GjIxzg==","signatures":[{"sig":"MEQCIBUfVLS9s85rBcYyLZbhO98wUvJP227OJ7YMum51I+GxAiBUKus0x3dz7i4rQk9MQjQJ7wBrbkHR/RTC/1fsZx6c9Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762373},"engines":{"node":">=20.x"},"gitHead":"21e6bfc09c4434c5602c5d0c6eb4cbcdfe9b8624","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605181430.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-21e6bfc-202605181431.0_1779114798811_0.8270064977060212","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-21e6bfc-202605181458.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-21e6bfc-202605181458.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-21e6bfc-202605181458.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c1c631beeffb72ac3857c4855d20b49b33104645","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-21e6bfc-202605181458.0.tgz","fileCount":483,"integrity":"sha512-OmgQbX81NBUO9kuyOMfSntI+IbnFqpTzuvsU0bB86wIcZsIjR+s8Weu5iHL21WNWYunI1Z8O8A65k6jImc1LeA==","signatures":[{"sig":"MEYCIQD7pLRfEPvWlR57sWLQV2TpkRyERfJJkiYKAbdNdbIyqQIhAKBx6kldN674GWFT7JrquC+2PDp6Vu7CLpbFwpKykhmP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35762091},"engines":{"node":">=20.x"},"gitHead":"21e6bfc09c4434c5602c5d0c6eb4cbcdfe9b8624","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^5.2.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605181457.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-21e6bfc-202605181458.0_1779116424463_0.9853574778009511","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-27f51ee-202605181615.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-27f51ee-202605181615.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-27f51ee-202605181615.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b49730bf5f465113314b53c748bea37044e4a31b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-27f51ee-202605181615.0.tgz","fileCount":483,"integrity":"sha512-RW4QRUARvVgrqEpYbtQIGvMgFGnbePdfzFrf30DpSpSN5+1RKHDk2siilaGdwrx9+9N0wGh2gxGQ6840X2gNqA==","signatures":[{"sig":"MEQCIDVQQawcU8L6gmg++Xkv2q0zAtqCuXwNcXXIKA7PAwfUAiAI6SzA3oOU2qNOTOxeYD+BSALTHvu4dL2s/BDVSXO7Pg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35721988},"engines":{"node":">=20.x"},"gitHead":"27f51ee553863db42793d466cb2a45fd511c7561","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605181457.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-27f51ee-202605181615.0_1779121056971_0.8485811301991852","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-fbd2973-202605181657.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-fbd2973-202605181657.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-fbd2973-202605181657.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b6d301f25d622367a39bdca819e77d686e7417cd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-fbd2973-202605181657.0.tgz","fileCount":483,"integrity":"sha512-P6yHGF6kcm0HfQAA79HXO9nsL+Z9Ct0hcC6SC571ZH7VCOlZm/kLhsyD6/qX4YuAQjKO86wMA0+gPsPx8xh/Zg==","signatures":[{"sig":"MEQCIGMKFpRSPjwyeD6fiO53AKqCpcZZmeBjH6/NwZbjQ5ENAiBtluBtTJhNPRrCfXlo8USxltxDexYOxt5hTmaQAfNPHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35722212},"engines":{"node":">=20.x"},"gitHead":"fbd2973d4e51833238c74e7836685efc718e99c8","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605181457.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^10.2.0","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^12.0.2","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-fbd2973-202605181657.0_1779123579812_0.5073011066953528","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-fa4a84c-202605181825.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-fa4a84c-202605181825.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-fa4a84c-202605181825.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"aedab4d98edeb49404e6d094bfd28ae177860fd7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-fa4a84c-202605181825.0.tgz","fileCount":483,"integrity":"sha512-FWP4jBxklSIJUmInHnHL+siC4lsV0GOPoB9+u0KQ041A8MK20snDPu5h0rRItfAskCWAzYXeMcWRWjl1Hz2Qow==","signatures":[{"sig":"MEQCIGuhAYwkb5d1YQz6kQJLAN2urrzBkgB4QQbrcFiObl/9AiAHf5IauGf6JGHGYdU88a3s3TFULbuYbypOqCY3mJowTg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35722170},"engines":{"node":">=20.x"},"gitHead":"fa4a84c9d5ddfc6ea747d3c8ec59aa9a99b8aa08","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605181457.0","@node-saml/passport-saml":"^5.0.0","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-fa4a84c-202605181825.0_1779128847384_0.41052886256776167","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-0842d34-202605190956.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-0842d34-202605190956.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-0842d34-202605190956.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"843440edbca973f8466c67dd7857388f91820c4d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-0842d34-202605190956.0.tgz","fileCount":483,"integrity":"sha512-w68N/yEA0xlGkdAONLCLPsi4SmLyR2mn6YgC1kKCAZNOEUOIHqVU3vuw0BSbPJZWX3LvtU0knhbVtfXJQt7OJQ==","signatures":[{"sig":"MEYCIQCBSSwdPmoCO5wUtJ9BGpGKhjXTDUczJTaurU9sJnuQ9AIhALlBubriGeNnsvA1SePTfTWILqHjQqOTW1wpPMreOpcE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35729124},"engines":{"node":">=20.x"},"gitHead":"0842d3478016f8cf76629cd368305848034e086f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605181457.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^2.2.19","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-0842d34-202605190956.0_1779184722329_0.010672648033736687","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-3d144f6-202605191016.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-3d144f6-202605191016.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-3d144f6-202605191016.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"00a1c691f8ef2ec8071cfabcea97287093c1358c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-3d144f6-202605191016.0.tgz","fileCount":483,"integrity":"sha512-Hb1FACCgTyN6OnASvizOH2JNriqtqzotxHH2kzoMDj5aOQflCh8gpoZHwF+8P9LFTW7t8u7rvJm4rQVwv/MsUA==","signatures":[{"sig":"MEUCIQCseAxYpFiaDBOPlUeIVIWEZ5qEe3YVgPiXCHDaDpysBQIgVErM/8FBLA7JTRfLdu7vMV/15vMoNajh2CX+w/zsSX8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35826216},"engines":{"node":">=20.x"},"gitHead":"3d144f65b18c5367c54ead447050c65886b831fe","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605181457.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.14.0","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-3d144f6-202605191016.0_1779185891590_0.28214490291472183","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-78d3dfa-202605191056.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-78d3dfa-202605191056.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-78d3dfa-202605191056.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a7c4a14f61615be0738d6928121bb347d3cdd0a4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-78d3dfa-202605191056.0.tgz","fileCount":483,"integrity":"sha512-btKJeHR0jwFBLIDcEpzH5ASa2LEHz0PsXv/tlsgODtFQ+RgdJ+gPdNUypX7UWkvmdCpBcIXAOIyQOTqu3/UpZQ==","signatures":[{"sig":"MEYCIQCJO7g/Z61K44tsmvp1h/CiJ0wIsxViia2GHyxPFZuYfAIhAKmfdFVfGupKAEpbMh10OOLxwAoYpgrdxMiSmfqfnNoI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35826309},"engines":{"node":">=20.x"},"gitHead":"78d3dfa7d933fdd67e2618ee87c3b33f1569d267","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605191055.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-78d3dfa-202605191056.0_1779188258652_0.8075647071753669","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-da74232-202605191100.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-da74232-202605191100.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-da74232-202605191100.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"16bf2305919cb2899b9e908c658ce05006e36c10","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-da74232-202605191100.0.tgz","fileCount":483,"integrity":"sha512-9pzGlNSnBbrDLdfT7UgqGsgPNMOcaigM5ynzDU+i9rYWEv0BdWp5Yn3dPiGzMdeVJ71NojgILN9Y3ouYvb1vWw==","signatures":[{"sig":"MEYCIQC+XxGjTwxhgaBvU+AyhaHqztEqJ6kl4YYfQRLgDTIJlQIhAL2Zvbw8BDgw3N9HYektVoQKA1/cUO13YOVxLjQm9AYb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35826484},"engines":{"node":">=20.x"},"gitHead":"da74232ad909393df2034063890384f82ff2f79b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605191059.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-da74232-202605191100.0_1779188521477_0.2955303236772342","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-da74232-202605191108.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-da74232-202605191108.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-da74232-202605191108.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1b4fb3330f6b91a2ed7a2aff27d7cb5c1376056b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-da74232-202605191108.0.tgz","fileCount":483,"integrity":"sha512-yS6cv8CjwZWbuG+P+18rekoVtHKDODtp6+bfOsC44EPGfjW9HVQXKOZQg6rkNS4HJvowv1sSfqCrgS8hyQYV8A==","signatures":[{"sig":"MEUCIQCtf5MBWeRd5b3iiLVRSwkiPhn33GEpQe9tB+ml2jG8owIgWPCpwv/d12DsaAe8W/aNk6HBZ2IW7TSdoLp1r6y9Nk4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35826595},"engines":{"node":">=20.x"},"gitHead":"da74232ad909393df2034063890384f82ff2f79b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-18b8e7d-202605191108.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-da74232-202605191108.0_1779189037450_0.6694038695651514","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-da74232-202605191142.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-da74232-202605191142.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-da74232-202605191142.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9a156754089bdc2432676963c9cf1f87c9b30a5c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-da74232-202605191142.0.tgz","fileCount":483,"integrity":"sha512-bMdN09eSHvcx29krQ+e1fm9/+LvFlj091BKYiFJN9gJIeh3zRwxRz941GcsImGEaIeC/qQ+zBWiMUeXBIJplYQ==","signatures":[{"sig":"MEQCIBohYKGqPtwhxU1GB2HSFKSdVgaQmxNvqMEGNpu16I2vAiASWOD20Asgc86TrqMDw/yCUEIIG+uTLe0RXnVbnP6sPA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35826421},"engines":{"node":">=20.x"},"gitHead":"da74232ad909393df2034063890384f82ff2f79b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-588402c-202605191141.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-da74232-202605191142.0_1779191045071_0.8522793212909439","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-da74232-202605191145.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-da74232-202605191145.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-da74232-202605191145.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"95b340db775ac9912e9c94afb8125fbd3f3afa11","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-da74232-202605191145.0.tgz","fileCount":483,"integrity":"sha512-DORP25C6Kt3pZKC2KCGmBmmePRXOyhuc84ZSjl17NNTk6r8rLXbxsUgOVFwg4ySE01fIUAFdRaJ+NofTu1tOww==","signatures":[{"sig":"MEUCID8JUGwaDnmy5hZYVNR/HA3SK+a8SQ8n70LYOWQcagIOAiEAtPMrB0pHXLFpauM2XX4Zsy79E8JXMV6W4TWpmBgswqU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35826614},"engines":{"node":">=20.x"},"gitHead":"da74232ad909393df2034063890384f82ff2f79b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-588402c-202605191145.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-da74232-202605191145.0_1779191238156_0.5014938426078881","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-da74232-202605191255.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-da74232-202605191255.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-da74232-202605191255.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5992b5263ebe83ff0a89321af2c8fe3878b0b814","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-da74232-202605191255.0.tgz","fileCount":483,"integrity":"sha512-lKJJ6FdzdA7AQ+yoeSYdP0vTtmO6E88Qz46v9j06laWGwLO5ETy9oj9GK8p4bu4L0Tx/jdw3byYox5YBsMdGlw==","signatures":[{"sig":"MEUCIH4PrIjrnUoQEHotNe0ljGOQ073sZjcvl53kOCE+LSmdAiEA7F2kgeko4WBOtpPC9RE32zT3lYR1o/+nP1iLLuse33w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35826440},"engines":{"node":">=20.x"},"gitHead":"da74232ad909393df2034063890384f82ff2f79b","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-588402c-202605191255.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-da74232-202605191255.0_1779195460971_0.14188068217701466","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-12f9907-202605191423.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-12f9907-202605191423.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-12f9907-202605191423.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bc5ecec6d4049d07ee9a9098557d108c76bc9385","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-12f9907-202605191423.0.tgz","fileCount":483,"integrity":"sha512-Hr5P5tTDw+mG8YggSNamEOikJ6uwVYxEoaN9aU7gr3g/+Q31bSpwUJOyWtPnjNMZSxmW9R4dXoZUtP1mVzxXnw==","signatures":[{"sig":"MEQCIHZgMO2mR7O3ndu7TI1M4yYSjm34XACk5jP9nJssYzh0AiAS39At8t2WZJhkICtoBiafaZ/hb2GDc6LEbcEXdiLcUA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35826332},"engines":{"node":">=20.x"},"gitHead":"12f99076e1cdd37771c640d5ac84ae3c1def0b65","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-588402c-202605191255.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-12f9907-202605191423.0_1779200685263_0.16180635630410212","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-572466f-202605191614.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-572466f-202605191614.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-572466f-202605191614.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9d64ec55d3c673d68f3a07bd762a10f2295a447d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-572466f-202605191614.0.tgz","fileCount":483,"integrity":"sha512-CQ/NineYPrLecei5FXn05w7K0W1Hm5PADH7zn3db1kOMqbLV+CCIOzp81VkPx6yE24MiFc3tP66Q3KeWpEEzTQ==","signatures":[{"sig":"MEUCIQD/RRH5Xr5A2G9Z/HKKTH4xgCD0BHpWnYF+Fozv6c247wIgHjpY8lcDB6XGYsSIQPK8Z0ISjW7W8nL/J2tU2k5vVT0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35839441},"engines":{"node":">=20.x"},"gitHead":"572466f20250d185853da6aa75b39f3a650cef22","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-588402c-202605191255.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-572466f-202605191614.0_1779207387189_0.7575136620699803","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-05754fb-202605201113.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-05754fb-202605201113.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-05754fb-202605201113.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9c3983cdcaf7607d16ca681f3ff702ea28aaae64","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-05754fb-202605201113.0.tgz","fileCount":484,"integrity":"sha512-oD/jmIC8UkGt4hCUn6TxxSPzr2POrdRrXxj3GOJ5OMkl6VvjZdCuK+162U+8NpZOHOVAA9zncbFLGz9aJcX5UA==","signatures":[{"sig":"MEUCIBD/pQtsRlkKQqrQzpDlQHF3P6uDwLoCUrtiCPuaAcAOAiEAs9+cdQMAD/YY3eq2lbiPmrRqXEwuHfRBn/Aiifj5J54=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35540642},"engines":{"node":">=20.x"},"gitHead":"05754fb2342117ca82f808f6e3ab980a5090b0bf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-588402c-202605191255.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-05754fb-202605201113.0_1779275693159_0.22370607257763364","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-05754fb-202605201851.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-05754fb-202605201851.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-05754fb-202605201851.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d17cbd85621669789dff80268c25d4a1fcde056e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-05754fb-202605201851.0.tgz","fileCount":484,"integrity":"sha512-yAgb4xumGJ4ZZGTTbCYqayw12TisjHJpnQvV3+tIiSzNePl4+m4+KlYc4PWGHu72/YjfM2CvLhZwafTOEhIc3g==","signatures":[{"sig":"MEUCIBq9xPFbu6KAFbCLTYMhA4B5hxxftMxosp+e+0tl3DDCAiEA9mZNwtmxmZDLG4JAzznIsiSvCp3MwoyfUdphFsLm7tc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35540527},"engines":{"node":">=20.x"},"gitHead":"05754fb2342117ca82f808f6e3ab980a5090b0bf","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-588402c-202605201850.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-05754fb-202605201851.0_1779303182870_0.638862184416096","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-2fbd3c2-202605210925.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-2fbd3c2-202605210925.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-2fbd3c2-202605210925.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9c85b55397a6bb8573b4acf18b9a3dfb5782c03c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-2fbd3c2-202605210925.0.tgz","fileCount":484,"integrity":"sha512-qtBeD9ZAOYOUsf8DSvUeWMA2lal7IbZkY8rizTT3iExvmcYpnIWYRe/J8Vn2ST8B0gH1Hpkqb+ytOrfK1KcarQ==","signatures":[{"sig":"MEQCIFZkRd8YPglHLjvxD+HxlBzYb2J8gVe33X/buov8iK5PAiA0V5S7T/JmGZTdwD+Z/y0Rczjv8/c1E57MZLmwtd6cAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35540868},"engines":{"node":">=20.x"},"gitHead":"2fbd3c2e52daca4de52130f2109f5d5b8c608ff0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-588402c-202605201850.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-2fbd3c2-202605210925.0_1779355651879_0.7320729044966809","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-a1b6d01-202605211255.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-a1b6d01-202605211255.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-a1b6d01-202605211255.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2a8da041e25ee22ad883d269c0054c74bc24bc32","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-a1b6d01-202605211255.0.tgz","fileCount":484,"integrity":"sha512-Y/9SRhVm0Oxwk7r745E4V+es/BdRS73liUdMhd7lbDsDA/UmWbU01zhQFDh0awbnxAHJBQ4/bp5m7IkoRMYgsQ==","signatures":[{"sig":"MEYCIQCa0Oy+7iWolLjCn1ruIkeMGPHMZ51b1s/siMiilgnCIgIhAMKagclVm15g/L/PF7s15E9ZEaXme7MPT86zMwkQPtuk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35540924},"engines":{"node":">=20.x"},"gitHead":"a1b6d01e16b7932850d38d5e821cf286c25bd72d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-f060e03-202605211254.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-a1b6d01-202605211255.0_1779368253738_0.4375174100135777","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-a1b6d01-202605211300.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-a1b6d01-202605211300.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-a1b6d01-202605211300.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8548804e7933c10e65225f3e9d2d6f40008deef8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-a1b6d01-202605211300.0.tgz","fileCount":484,"integrity":"sha512-WNjuDXSYxc3M3nc42mfmiGwSfQu5Q1ZPSGfvI7TrIAJ+ToarHqrkVqYOBJqC0k3g1J9e0osCT68ysIT0HkEeHA==","signatures":[{"sig":"MEQCIGn97LqBO98UaHZPSg6w71unueQGIiFe1PYNoHmqAmALAiA7uzcNnOTEqn9719ekgQ3d7oMWa9UvHvYb09wr1WjNuA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35540775},"engines":{"node":">=20.x"},"gitHead":"a1b6d01e16b7932850d38d5e821cf286c25bd72d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-aa4da38-202605211259.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-a1b6d01-202605211300.0_1779368528483_0.5162642166821179","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-a1b6d01-202605211305.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-a1b6d01-202605211305.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-a1b6d01-202605211305.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7e29781a3c8a9595aa72aaeba198622cde518278","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-a1b6d01-202605211305.0.tgz","fileCount":484,"integrity":"sha512-DFpI6kypSyp9gYKpkhVl7WQuyBMhkEZKpOwnv5yYT5AKi3bem5MWo9guKler0Ei0vBgVWM6FOiv0+KfA3um98Q==","signatures":[{"sig":"MEUCIQCN4kUZMEcgtJ+RAVogWXz2LySC3jdhMQsJtNZsadCR8wIgHtyPLUeFLOdUlCkIUpU6kr3+84ytYLeRXj7NZcLkJzs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35540896},"engines":{"node":">=20.x"},"gitHead":"a1b6d01e16b7932850d38d5e821cf286c25bd72d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-ce5a9ee-202605211304.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-a1b6d01-202605211305.0_1779368829982_0.06974798386650427","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-749f04a-202605211412.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-749f04a-202605211412.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-749f04a-202605211412.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5f2dd4a9fe0f653c9fc6d899fa8b7becd36c541e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-749f04a-202605211412.0.tgz","fileCount":484,"integrity":"sha512-69yptzGmnEChU0Ilcl2iaYIVgGjfy/y+/aMWkdoGRlZc+cbfK+2Ye7Ejc9PAcOopbaHnFL0JOWuh+wD5SWAa5w==","signatures":[{"sig":"MEYCIQDDxupPsh8Umy0XX8ZKASFmok2NJ2LAWaPkJpf91WwCIwIhAKY76CUwHGnn6jQYz6aqScUZoypB1RwYMCw1fpukZkw8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35542025},"engines":{"node":">=20.x"},"gitHead":"749f04a29dc103356c6b76dd04ffc7c8858f1c1a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-ce5a9ee-202605211304.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-749f04a-202605211412.0_1779372844343_0.856010790742509","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-81347a4-202605211456.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-81347a4-202605211456.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-81347a4-202605211456.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ba4f714d197f0c8728ab6ad0a3d8a2a767e1ea85","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-81347a4-202605211456.0.tgz","fileCount":484,"integrity":"sha512-wayTrSmsCUitpKO8dwFzZIVA0SNQmTZKytfQQkChHczLqUgMI9WLPTWH9UGY6OV1y+vn3Ez0/TVlxl3j1ZJSZQ==","signatures":[{"sig":"MEUCIQCnVISWkrpLR9Qijar1J6YR3rGh6dHqE9+YC+Bs/xcZhwIge5Ax/bGwem7h8Kuum0jJ8tbIvaO/F5yQERwYAMuQbYg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35542954},"engines":{"node":">=20.x"},"gitHead":"81347a48374962b4d0b7654383c70c1c9ff2bf7a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-ce5a9ee-202605211304.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-81347a4-202605211456.0_1779375483327_0.7443049912291435","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-f2c8c71-202605221336.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-f2c8c71-202605221336.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-f2c8c71-202605221336.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bc8bfd14595e977132dfac1566acf4a2a2528d21","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-f2c8c71-202605221336.0.tgz","fileCount":484,"integrity":"sha512-UAIVcVdtke/FDBbN6Bh5MtwTuo8nyQe+6fmEqjXMQVLgeeWdRcVv0Qt/wzhfFXYk2+eMGUNBBpGwwIXXyRv3sA==","signatures":[{"sig":"MEQCIHeqmZkiBppzvJiyc81FRi/LbUYrjd4bLw0zxXosL8X5AiAzD+LZ0XmcgIVPDZJdUsiuJlTsB+o01o4jBss8KYITsw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35542981},"engines":{"node":">=20.x"},"gitHead":"f2c8c71bfdc69da2eda09b6eb89e276ca3989fa1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-ce5a9ee-202605211304.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-f2c8c71-202605221336.0_1779457120366_0.4442062678736398","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-f2c8c71-202605231355.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-f2c8c71-202605231355.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-f2c8c71-202605231355.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5bb10f72c00be5ebd19adcecab4e4af2d7e085d2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-f2c8c71-202605231355.0.tgz","fileCount":484,"integrity":"sha512-l3lY/CcVFCBx+lBrZ8gvhYkDbWP8Wx8vn46S1lVrfzACg5ZAISNjtOFNbnK0lZeaqskdrPmQM0XYtLO5RxzbfA==","signatures":[{"sig":"MEQCIGfL8NS5qRIOuV2kbWqyFyqSg9at8VYIUM7vKcvV1QV0AiBPhyRqg4iStSkU7EajVFnpacZtWxDVYSEIPLz9FN5YHw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35542858},"engines":{"node":">=20.x"},"gitHead":"f2c8c71bfdc69da2eda09b6eb89e276ca3989fa1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202605231355.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-f2c8c71-202605231355.0_1779544637841_0.8989428928146186","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-f2c8c71-202605240724.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-f2c8c71-202605240724.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-f2c8c71-202605240724.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"10ebf5cf089b0a5106dc122c6b431d4e32410d21","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-f2c8c71-202605240724.0.tgz","fileCount":484,"integrity":"sha512-MFnjl/NsPZ8Oc9YksTSoFKAGO4Exprh042XeJbn/6+LrmqrklepSY/1Fm5UgEUMDME7YskgXAe7WnA9tGj3/Kw==","signatures":[{"sig":"MEUCIQCt+5WZfjXq+otKc4qkaBoH9dZeIk1SKmwo1F0wzjwvOQIgSNvtBgqKvWAFUm59tv0Fpsmo00BtYS0ybQTRqNwRZjk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35542834},"engines":{"node":">=20.x"},"gitHead":"f2c8c71bfdc69da2eda09b6eb89e276ca3989fa1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202605240723.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-f2c8c71-202605240724.0_1779607550669_0.6045031573559823","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-f2c8c71-202605251143.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-f2c8c71-202605251143.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-f2c8c71-202605251143.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9250bcaa468e3dc7e1ba22fb91f10533092a5b9a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-f2c8c71-202605251143.0.tgz","fileCount":484,"integrity":"sha512-WxnaCAZX2jE15jrKBZzs9m0ChzB3Yz/zyd5Fqg67/yWUQYF3tv2K2Q8NruU09ExF/7jqf2gvGcJySkFrEEwoAQ==","signatures":[{"sig":"MEUCIQDPJ7hhvCF/ZmXZUVjflV7/LnafI+M8ZP/6AKYNEUCZYAIgKyFpN4oeAuXAcDgz5Jw4a1zw3TPu9koLIL25n45T0oI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35542723},"engines":{"node":">=20.x"},"gitHead":"f2c8c71bfdc69da2eda09b6eb89e276ca3989fa1","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202605251142.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-f2c8c71-202605251143.0_1779709493941_0.9376943960984314","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-4cb68b3-202605261355.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-4cb68b3-202605261355.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-4cb68b3-202605261355.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f87b186dd415ef12035e5046ff53a91fc73ca37a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-4cb68b3-202605261355.0.tgz","fileCount":484,"integrity":"sha512-xiilBxZkTZNtia6ZK+4KI5h6g7me00R9TqYV0tLlHeMuT1bB3VAE8OmO61okfosuaASlm2AdzoyCI/Y/FnOUug==","signatures":[{"sig":"MEQCIAaL2XBCcRRAvpiWRPW8F5Ac14jyxHdEdOaZPNZOI9mHAiA9drgmJidpibx9ZeGexxZL4CoPVOV5Yrvmzv/SYtPRlA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35542832},"engines":{"node":">=20.x"},"gitHead":"4cb68b34fc63e773823aa60abd9371ce14b17e64","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202605261354.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-4cb68b3-202605261355.0_1779803842605_0.5783612585064073","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-4cb68b3-202605261359.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-4cb68b3-202605261359.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-4cb68b3-202605261359.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b6886384b1e8363a62902207e17f7edede8e2f8e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-4cb68b3-202605261359.0.tgz","fileCount":484,"integrity":"sha512-WMZbkx2IIEBBj8H9hFxF2l/kw/5uNl7rwztFirsw2V5YOrDr4FoybcuQDX+E26YZZUCCx7nGiUJWYtz78gglNw==","signatures":[{"sig":"MEUCIQDaKBDHlIN3hfupm+vxO1QvJ4DOG6CRuPHDRyUosodaagIgL/ltWsoAwPkySd/yJvvz0WP5g5v9zpaJzso4nshTr/g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35542968},"engines":{"node":">=20.x"},"gitHead":"4cb68b34fc63e773823aa60abd9371ce14b17e64","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202605261358.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-4cb68b3-202605261359.0_1779804054526_0.7926376624993481","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-4cb68b3-202605261419.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-4cb68b3-202605261419.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-4cb68b3-202605261419.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"48379b9f446a82a931f94560fa48fdf26fdc8e1f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-4cb68b3-202605261419.0.tgz","fileCount":484,"integrity":"sha512-Z/m1drBGAGSRk53DVct71ILh4raFQOnj5aKdD2JPDOxW3JatlHqLt+4sQDNIONDO2AZgH9aRY4sl/FDg3JRDgg==","signatures":[{"sig":"MEYCIQCH0lY4s2dpfV7qYsztw4RuEgvbEkuzd9S9OUg5FKI4MQIhAICy6zu1lw/ZvKGxotst90FZBu+fbJcpsXZfFq0rLR21","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35543178},"engines":{"node":">=20.x"},"gitHead":"4cb68b34fc63e773823aa60abd9371ce14b17e64","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202605261418.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-4cb68b3-202605261419.0_1779805275931_0.9201455560648475","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-3042f10-202605261503.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-3042f10-202605261503.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-3042f10-202605261503.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"67e168525da66c14a883f4bc25f7654d6dba6316","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-3042f10-202605261503.0.tgz","fileCount":484,"integrity":"sha512-CPyNjE0InSpL3vvZrrHlt5nYp0h4z1kzm/0BZ8BEvbpxM0B0mxWOLeKSFbSH9t4thLWlFGw33ddmkbRtzX+FmQ==","signatures":[{"sig":"MEUCIFK7M759GKL+1+PhNGrpa+jgoIzUW69eAqSrtCiRLXOpAiEAz5nOeeZMoFVmUnLMoVeY9fqLlKF8f03p2msE0JVzSl0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35542973},"engines":{"node":">=20.x"},"gitHead":"3042f1016fa08d9a7c43672acf327e12d7bbbf24","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202605261502.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-3042f10-202605261503.0_1779807881024_0.8584255344589058","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-3042f10-202605261506.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-3042f10-202605261506.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-3042f10-202605261506.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"42f1560cc1bd2cc2b6cc69e4ba9f008ab4ea50d5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-3042f10-202605261506.0.tgz","fileCount":484,"integrity":"sha512-OL5a8UF9nSgUFvaXrpv2bOIuw45cwIcpeO+UbANxs3j32wbS3EqgmXF9Z+WKxB7ppL1y7Sfdc0Mzmu9x0h77Cg==","signatures":[{"sig":"MEQCIDOn3UghKZ7svXKh/u7SUC/LwKZnC4icq9HwckyNnVF0AiAjWr18fz9I2QpoIu+qkcSb0mewENP2jbX0Wt/A+FOMZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35542693},"engines":{"node":">=20.x"},"gitHead":"3042f1016fa08d9a7c43672acf327e12d7bbbf24","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202605261505.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^5.1.4","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-3042f10-202605261506.0_1779808082739_0.0793793004273402","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-d4ae183-202605261604.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-d4ae183-202605261604.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-d4ae183-202605261604.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ee27c5267aa1ffd03c3f367b185846c623cc9cc7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-d4ae183-202605261604.0.tgz","fileCount":484,"integrity":"sha512-FMFcohUIu+8lG9/gUW1CJesoK4/mScn8J6e3hE+IEAaLU4in31yDPGYVT5Iu3jT4L2kNjAvZF+TSBvvT8WCoZQ==","signatures":[{"sig":"MEUCIQDgJPe83NzVVYWFrMn/houC8oH/3gdRlgsh7irt03KjgAIgH3phWSKcbfJn4UVMfrFXNwMWluVddXxbawAqH7YRPt4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35542830},"engines":{"node":">=20.x"},"gitHead":"d4ae18376c191c71f9d1a1bd6d8ada2e03a90907","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202605261505.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-d4ae183-202605261604.0_1779811555345_0.09315760186026911","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-d4ae183-202605270831.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-d4ae183-202605270831.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-d4ae183-202605270831.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c868373a945a949df688a3c66143ec8d29653f51","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-d4ae183-202605270831.0.tgz","fileCount":484,"integrity":"sha512-jllZSKeTUW0aPEXfqXPJiZWRBcMnL9XXS/TGOkMTvr7/QycUFXhlvmchBD+bOziVhAqi11XLQIdh0uiYG7QHxg==","signatures":[{"sig":"MEUCIQDue+p3uxXuTPBQcFsKCZt6IpE9vmKTSyyDa2VDcLhEggIgbJpbw2trphP9haP0HKhgWUQXszlQfTcsOvNb/okI2Hw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35542747},"engines":{"node":">=20.x"},"gitHead":"d4ae18376c191c71f9d1a1bd6d8ada2e03a90907","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202605270831.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-d4ae183-202605270831.0_1779870800365_0.03029136373921415","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-0460f02-202605271256.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-0460f02-202605271256.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-0460f02-202605271256.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3721482e5f0ffab023cb1cbf7c65c0d7d16ddd6d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-0460f02-202605271256.0.tgz","fileCount":485,"integrity":"sha512-soo0onXOGyJy5yhSe39zoXzXhNgUsg3wt4vAXWE/b8i6nGP5cYFDkQVimc1KtjD+0Waoa9npKPBQ6D7PQu7xbA==","signatures":[{"sig":"MEUCIHAddLyEs8APzAva+Evg1C0PccjrVu87RFp+zin2Rdx+AiEA/P0qEpYhgiz8hTMNr8cgiPYaWvnx1SLhgVej9jEJ3aM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35543516},"engines":{"node":">=20.x"},"gitHead":"0460f02a76621bc6c23cc8d82e35acff23140921","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202605271255.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-0460f02-202605271256.0_1779886684060_0.9953546844220191","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-0460f02-202605271644.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-0460f02-202605271644.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-0460f02-202605271644.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7660c5429ac4a014fb02c5b004dcb747adecf121","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-0460f02-202605271644.0.tgz","fileCount":485,"integrity":"sha512-3dxad6G0504Uc33iBh8Y3LcmPN87ENP89FdL3MGgdIk0p9HrV2Qif504uHlfl/QiwTeM8GS2ZbIIzGqwiRAMFQ==","signatures":[{"sig":"MEUCIGtDG9BtO+5d64Fn3BICdsqGetq++QY8H6S1Em/hRdtaAiEA9LLG4A3VpKLb3bLrmWEYDMcYzWd+mDQId74imEVoPwQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35543631},"engines":{"node":">=20.x"},"gitHead":"0460f02a76621bc6c23cc8d82e35acff23140921","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202605271644.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-0460f02-202605271644.0_1779900381175_0.10219673158860876","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-0460f02-202605280553.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-0460f02-202605280553.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-0460f02-202605280553.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"00e7a7ef9e503128003b5e5ee6e9847bd3ad3d38","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-0460f02-202605280553.0.tgz","fileCount":485,"integrity":"sha512-1kfJDl5/0aVJLukkRqGPofpfZ4JS8TpJTC4LmGks/tB+23sGFZVGTtvKJ4141SHuIWB5scUZ0Ob+h/8g2yNBtw==","signatures":[{"sig":"MEQCIHcuGGmR3w47N8qYfTSv7ufaIl1eLgn+dFJJCLUM5SrcAiAHQLDeWGVYGQksa8IQAlZKQfOl7YS0AjtpPCg3e3vUug==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35543679},"engines":{"node":">=20.x"},"gitHead":"0460f02a76621bc6c23cc8d82e35acff23140921","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202605271644.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-0460f02-202605280553.0_1779947739802_0.7978544867310275","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-0460f02-202605280558.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-0460f02-202605280558.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-0460f02-202605280558.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a7a49368f840480330b91e04df5d5e76e5db62f2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-0460f02-202605280558.0.tgz","fileCount":485,"integrity":"sha512-9Je3mjGBlKOhOqOrD84j/EH930fmsnp4RyuuJNgV9rKildWzx9IkyTl/yP1dajIpdf0SaZXZeqM2q4Ho+Lt/1Q==","signatures":[{"sig":"MEQCIAw+49QAs33eCKPxe5B7Num1pe1QdiCSEu+mcBghsluBAiA0UqGel6aCVoiwMt3+wcd1gTEFGURnyaibi64vZCvecQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35543566},"engines":{"node":">=20.x"},"gitHead":"0460f02a76621bc6c23cc8d82e35acff23140921","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202605280558.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-0460f02-202605280558.0_1779948020548_0.2591729470426489","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-0460f02-202605280601.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-0460f02-202605280601.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-0460f02-202605280601.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"67e4f2f0e8aaa01aabb5f5371da7a939c76d1174","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-0460f02-202605280601.0.tgz","fileCount":485,"integrity":"sha512-XQGRJG6ejJzUFfSIS4rVfuyFGvoBRG69XMP42uvITPXZMkEiXfNpYS4X7RiobnpKSedacB8GI2RC2Cbv3C/ZsQ==","signatures":[{"sig":"MEUCIQDDmz433FNzhwE4oIPbDW5fDikwDjEVspzxqGXG4byPfwIgEnb0O/crJONco3s01n5Cemnpe06aJOmp/7nJQtBBrhM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35543347},"engines":{"node":">=20.x"},"gitHead":"0460f02a76621bc6c23cc8d82e35acff23140921","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.12.1","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.15.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202605280601.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-0460f02-202605280601.0_1779948222624_0.11184548826921015","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-822dce4-202605281438.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-822dce4-202605281438.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-822dce4-202605281438.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"63130ca703fdf2f6909110c573aa8c3db24ad56e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-822dce4-202605281438.0.tgz","fileCount":485,"integrity":"sha512-WlZUJejKYEqt+7nsv41jQfVX2OU5nk1LJBVLtUl135eQMtwu8nfg3lEPGGc4B9hJaokw3nBEBXyFw35Ub1jAwg==","signatures":[{"sig":"MEQCIAQ4O6tIgniQlpOrEV8E3BBj7O8A8V96UYYsTGv2KprQAiA2WhaW8x7WhWN0iaALvZ9lK9aoCUBwFn+3Fyh8dLgZ5g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35543374},"engines":{"node":">=20.x"},"gitHead":"822dce4744883a1ad0850411306c916f44ec9a2d","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202605280601.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-822dce4-202605281438.0_1779979248081_0.41134843777191277","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-82d7d73-202606010903.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-82d7d73-202606010903.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-82d7d73-202606010903.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6a4df798e238503f3ab19c3f313fcdf15e5aff1a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-82d7d73-202606010903.0.tgz","fileCount":489,"integrity":"sha512-ySr8WGwQeko3G5/o6qwqrue0YDOKe9kWkZmIzKEMYGTyhlTIyt79wXnVhOulo/FrMF/OmI6PQTcT1Q1MnqRO7g==","signatures":[{"sig":"MEQCIC8koyMPJ4GVWYJqHIEOBfQxoctNU70eOoYlzQh0C/SEAiB4xAvNZNevuqKW8mG0x9r58kQx/ZO2HV+mnlktDRgBgw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35565062},"engines":{"node":">=20.x"},"gitHead":"82d7d736594675c0fced8ad3d5a8aaaca4b6fb53","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202605280601.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-82d7d73-202606010903.0_1780304745817_0.6524683645708773","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-f2fa4c3-202606011605.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-f2fa4c3-202606011605.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-f2fa4c3-202606011605.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c6f36deb640c8e5ed403b50bc0b346df88aa61bf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-f2fa4c3-202606011605.0.tgz","fileCount":489,"integrity":"sha512-7BGMVzNTesYwD6lv17KT1I9QM+6CY8m8q8OVyfdscuW+462s8nwNtXwCdK9lrdcPwycyrDxgehHPhCcJPe1LJg==","signatures":[{"sig":"MEUCIQCTQSONj1W0GZ3TbQz0fX4MQ7uwYOxWlNlV+D5Ue3L+vAIgarNEkGjnWEQctfh0vJEo+enTAi3UbccAn6PCaR8CWeg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35565106},"engines":{"node":">=20.x"},"gitHead":"f2fa4c3b1297634c1a64bfd707eff9ba0f8efe8c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202605280601.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-f2fa4c3-202606011605.0_1780330040373_0.8503470124715329","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-935b669-202606020922.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-935b669-202606020922.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-935b669-202606020922.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8c980bfda61ae898bc4f5ebd37b71dfd9828ae80","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-935b669-202606020922.0.tgz","fileCount":489,"integrity":"sha512-eE7xCnx/a7JBdNOFqMSQ7HBiNCnD6T8s3DyeqOW9yzeBEAW7JoY9IlZlfXxYp5XpXI/Y92cJzgN4FtWGq0ppnw==","signatures":[{"sig":"MEYCIQCU3ANd9FVgHiraBg35rbtSvaOP4U+uB0CV3l+ScLkTGwIhAL5bl3hvpAvlE4o7HTR3O/tj9c/PVZGDsF0ht1Q9511h","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35565431},"engines":{"node":">=20.x"},"gitHead":"935b669257ed897e2d0555584426ae9c550a7018","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202606020921.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-935b669-202606020922.0_1780392247418_0.1058794749717229","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-4810241-202606020937.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-4810241-202606020937.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-4810241-202606020937.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cf963a71ee1a3119dd407eaa227767f0f316bafb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-4810241-202606020937.0.tgz","fileCount":489,"integrity":"sha512-mEMCxDZlKYrw87upbzTVz1dCi4xfgcyOSm0ksta3rtNSnQLKxFJesGM7WlsAElSFPKKYJJcE24LJ2w7taD0M2Q==","signatures":[{"sig":"MEYCIQDWANL2tXGlo7UAJD5OCySnmRnQ8mD4As2i2hKY38t2jAIhAMBUY1XTK4jBS4nX6NyYyqjBud0ZFcyArx3sf/CsmRSK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35568418},"engines":{"node":">=20.x"},"gitHead":"48102416b1fdc56df62f2efc802653e4dd12f16e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202606020921.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-4810241-202606020937.0_1780393154196_0.8183674052891097","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-4810241-202606020955.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-4810241-202606020955.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-4810241-202606020955.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fc73480bf405cdc94b40ed6ade5c04a1daaf5450","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-4810241-202606020955.0.tgz","fileCount":489,"integrity":"sha512-h5rk2Ikky/d6AmiVkV7Am3ErAD9RfIyWWCILF5xq4C+Rw0LAg4S9lGjs1gwB0spx8z1CUb28v3nBHKpWlbNGXw==","signatures":[{"sig":"MEUCIQCQAgt8d6nv8idTpueAWdZRCN7NgF/Gw8QL8+vTs3xWzwIgChQlZ70Gpg6PWW4XaeQKtIcv1j3z9Ybl8cXzyGLmBRQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35568522},"engines":{"node":">=20.x"},"gitHead":"48102416b1fdc56df62f2efc802653e4dd12f16e","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202606020921.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-4810241-202606020955.0_1780394253735_0.55475030308122","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-b974fab-202606021211.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-b974fab-202606021211.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-b974fab-202606021211.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"758af865d80457fa567371da9716858068a0c8be","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-b974fab-202606021211.0.tgz","fileCount":489,"integrity":"sha512-cRHvHiL4vb5s07RpLof1zloAWPg4RBFBSi0Lkr78bU6oyI38NVqJVRYB4459HW2xveDgu+0SjL+6N+6nLDSIbg==","signatures":[{"sig":"MEQCIHOdIx4Vlipu6qrrEMxfj1QTvqgCwcoTapZIWSkkKC6EAiBjVTKY2onwsbY7vTUZOia+mfkyZTPeQcM0fQGEzoxSZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35581576},"engines":{"node":">=20.x"},"gitHead":"b974fab66567e9912405115d3bfacba9cac1a3bc","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202606020921.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-b974fab-202606021211.0_1780402383815_0.4172400217432919","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-fdfcbe3-202606021510.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-fdfcbe3-202606021510.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-fdfcbe3-202606021510.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1ae3dcaf93cb56942c776c0b93f3d1e67c240c52","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-fdfcbe3-202606021510.0.tgz","fileCount":489,"integrity":"sha512-Y2sPtPWycb2jcuZy9nANThyQs3FNRDjzVIbhm5qt5bCdZBP8TueuxeD1XLUB8qC+Si7Kf9Cm2Xu5pBKkXqnLMw==","signatures":[{"sig":"MEQCIBeo42K8WtTjlpWi5DxMruFsyMv7A25mAiN0DOwpmA7/AiB2iM3k7g99cVGsXI/uh6pSMoQJUBEvMgtomSmA/ldEAg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35582139},"engines":{"node":">=20.x"},"gitHead":"fdfcbe38002e0e264e21ca5ac2c1610e4259666c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202606020921.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-fdfcbe3-202606021510.0_1780413135937_0.31813996696643865","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-3b2963f-202606021955.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-3b2963f-202606021955.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-3b2963f-202606021955.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3432915a458b1984fac1e783700dc106c91b033a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-3b2963f-202606021955.0.tgz","fileCount":489,"integrity":"sha512-3g/S/pknJV6d90Wmnrc3bobAJswN5tjGsqez5T+ESa7gXFT5Ny1G1RXXKrp6WvB6kdUuq0fdk5SYWIdHVe985Q==","signatures":[{"sig":"MEYCIQCnX8AB59xsL7UQbPD4BFkDAtfFKf0W5tjt+63hsL7RbAIhANAdJAlc0GBkcr/eke7ihrOJnx6+hqUc4hi11DnSTPD/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35606628},"engines":{"node":">=20.x"},"gitHead":"3b2963fe2bcb16dd25e34e360a8faa75df2b4a57","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202606020921.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-3b2963f-202606021955.0_1780430228324_0.7725494705581397","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-d71036f-202606031320.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-d71036f-202606031320.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-d71036f-202606031320.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2e2f4816f3a3a310095d79d7d63da431c622ea61","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-d71036f-202606031320.0.tgz","fileCount":489,"integrity":"sha512-Rd1F4//VmMDRlfuJQJmR9YzVCuCyNNmxTP5OgkMMcuyfm4LKO/dkG0EHWehFvkZBnVFJDF3iGORcDhCKVn07SQ==","signatures":[{"sig":"MEYCIQC3Vn/Hcq0PZBwgGqVsILyiKm9AjHO15sv8diOfQuIHbQIhAPlPFHrgnaTnadXNdfvscfIOv8Nphf6zqccKglKCzHSz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35608949},"engines":{"node":">=20.x"},"gitHead":"d71036fdd162fd1e5cccdb2cdf8e9ad066db7648","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202606020921.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-d71036f-202606031320.0_1780492930402_0.48495951971873663","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-495ec2b-202606031412.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-495ec2b-202606031412.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-495ec2b-202606031412.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"292e4f9476ce5974ceb251ff7ec84e263e4cd5c8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-495ec2b-202606031412.0.tgz","fileCount":490,"integrity":"sha512-xSl7PUFrl8KW3peAsMn7VdgEbRN4H0uBTUxfRyw0pbowgwwCzb9b+3V6qcIeaxgKNLYX6ySjWG34t1IRTLNSVg==","signatures":[{"sig":"MEUCIQCnt7sJGo1Jcxy+2NZKG5b/sAmRBcSjcbD+v/o8feMoxgIgBqbubriBNS/8ZoQpEcnLseRe7jnlJYyUWDrrB1BQgpY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35624893},"engines":{"node":">=20.x"},"gitHead":"495ec2b71c0c54074acd11dce388a54f6b3aba84","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"1.0.6","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202606020921.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-495ec2b-202606031412.0_1780496044414_0.6480178700705237","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-2295c3f-202606031448.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-2295c3f-202606031448.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-2295c3f-202606031448.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2b6ea8d836a24832c76353f433c84d0a9d0ac79a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-2295c3f-202606031448.0.tgz","fileCount":490,"integrity":"sha512-IHZnCQ7l6WISI8zcyNslVRDWa5e1MgMcga5tgz70ERuHObzos8IUQs3RsihsC4ck2aJuv+hTP+TOMc2cECwQ5Q==","signatures":[{"sig":"MEUCIHB7mSeF2VZelC8DN23aX3QeWVUIRGobDrOhwJ4F90dhAiEAsUqPpMBkaJGqVue28X6ZUy96GhnLTVR6AI1uLUqpj6M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35693965},"engines":{"node":">=20.x"},"gitHead":"2295c3f0d109e488eca758ab115d2fec8104e82f","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202606020921.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-2295c3f-202606031448.0_1780498194002_0.8515735435651468","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-77cdb58-202606031625.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-77cdb58-202606031625.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-77cdb58-202606031625.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cacb855985481211766eda25cea32cf3a8d6f98c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-77cdb58-202606031625.0.tgz","fileCount":490,"integrity":"sha512-gyA5xt4XdjW6KpNzUAYYaKBBMjIsX4KmTPPgJdbQPR444P81Gy/Dq6qVX218XRTrUEDbXrskLHQrmajz/CVLfQ==","signatures":[{"sig":"MEYCIQDoZzmoSth0Y5V2/8ttDKsFf+FdRrQs2L7rXSSItmz3DAIhAO+cw83xav1cONMWygoSYazkc1rhUoP4lzVUZ4qymyr/","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35693926},"engines":{"node":">=20.x"},"gitHead":"77cdb5895f80c7761d99f2f55567793c8162d7c0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202606020921.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-77cdb58-202606031625.0_1780504029517_0.9981472266586495","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-0b8ec33-202606040954.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-0b8ec33-202606040954.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-0b8ec33-202606040954.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5ddf0a8458e47872516e132dc3e77845b6bbb1ba","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-0b8ec33-202606040954.0.tgz","fileCount":490,"integrity":"sha512-0qJhwETD4z+GEDJGwjlGwffFk61W1xrGf9zV4GgvOzjt1GrKKUquZ/kVnhLy6z17vBM0eBeECClPtd+xtBIN5g==","signatures":[{"sig":"MEUCIQClW1rxNEbE+pvtqgqtDCOWN2z4gilo6HM/G2D4lMJvMgIgGXbxOmpm9vU6bfZvLsJr/0alM4i3CpwDFf0m6MCopt8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35694636},"engines":{"node":">=20.x"},"gitHead":"0b8ec335177a7516423c4e50ff0d61a0fd5431ac","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202606020921.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-0b8ec33-202606040954.0_1780566992631_0.6045985414667487","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-954b8ae-202606041134.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-954b8ae-202606041134.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-954b8ae-202606041134.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"79413187132366d6e22d6608943f778c364b9eeb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-954b8ae-202606041134.0.tgz","fileCount":490,"integrity":"sha512-S1MpHEYH9MgxpzUYcUPF2pAmWa5gNlu0K6v5+9xv84k1mxvBSRQV7bp69HvI+ZUOgSC5QhzKcO6zE0iyonevpw==","signatures":[{"sig":"MEUCIEfFOvebyMdEX1mCoGydCBhirNNmJY8gsNSZXmWg+GakAiEAgiNoikCUxOlH1Htg4UjiIiAV3FDUXPFfHHdiqnFoCcg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35694739},"engines":{"node":">=20.x"},"gitHead":"954b8ae203c96a42014c952ea5e11301054b373c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202606020921.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-954b8ae-202606041134.0_1780572962951_0.29997014335206873","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-954b8ae-202606041315.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-954b8ae-202606041315.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-954b8ae-202606041315.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6bd10572e2d38ff3368ce637a9f88e9e083d917f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-954b8ae-202606041315.0.tgz","fileCount":490,"integrity":"sha512-mzIEKBR+rYQD7a5Fwclz91j1aWx37PKabxsafHNtUgeCfHN9TJeg6lJxQbseKzeRd58zS08hg4uWjKr5MCyTqg==","signatures":[{"sig":"MEUCIQCneeOZIiev1ZNVLi+0m+7q2N+pc91qNabCHrbPv+P3ZAIgB8NxTWKkITg8eJfXD5fTRgSeLXhdstff6cpdayJwUdc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35694845},"engines":{"node":">=20.x"},"gitHead":"954b8ae203c96a42014c952ea5e11301054b373c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.30.2-457c7ef-202606041314.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-954b8ae-202606041315.0_1780579021894_0.0844506870329449","host":"s3://npm-registry-packages-npm-production"}},"2.30.2-954b8ae-202606041319.0":{"name":"@flowfuse/flowfuse","version":"2.30.2-954b8ae-202606041319.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.30.2-954b8ae-202606041319.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5c898b2a124e92c8724c7a7fb0450329e5aabda5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.30.2-954b8ae-202606041319.0.tgz","fileCount":490,"integrity":"sha512-6AayVEegHvaX2yB5jl8uXhwW/Z7DEBc/qHAQDP+UWnQJ3ixoCZushxI/6wKuKGBJ6mGujPr8PAh/j4KuIAXrbA==","signatures":[{"sig":"MEYCIQC/wyp28NIVLjxcorDpqTbCAqAQDRn49VU1pPUj+byk+gIhAMsfDKNPju3tgM7k4Gh3gObg8tRa8FeUlMOl4GK0lZ5h","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35694466},"engines":{"node":">=20.x"},"gitHead":"954b8ae203c96a42014c952ea5e11301054b373c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.1-cb1cc06-202606041319.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.30.2-954b8ae-202606041319.0_1780579306765_0.8620728023904902","host":"s3://npm-registry-packages-npm-production"}},"2.31.0":{"name":"@flowfuse/flowfuse","version":"2.31.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9109c1bc06681fb3e0e21360a9b744a89c70944a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.0.tgz","fileCount":490,"integrity":"sha512-ru4v8gudW76LWH34uBlSZ2Es44HwJoA3eCgNQQ30ZxxexEfZ2chqX/+AuP3PzlKzKCXpRAFkalYdm6YtMi5Ryw==","signatures":[{"sig":"MEUCIATIEelQXChoesDDBuFTj8RtpHQMkwNk1DfiEqTDFgX8AiEAyd67IF1Sw1zg5OBVi5LTx26gQtlmi/ZO6dCi+/hpTvM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35694015},"engines":{"node":">=20.x"},"gitHead":"2c680ad648708aa8712d4c8920d5cbf30f3999ae","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"^2.31.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.0_1780580987130_0.7302424296158836","host":"s3://npm-registry-packages-npm-production"}},"2.31.1-2c680ad-202606041400.0":{"name":"@flowfuse/flowfuse","version":"2.31.1-2c680ad-202606041400.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.1-2c680ad-202606041400.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5773619fdf0f68526d3625236422d84a12fd8bad","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.1-2c680ad-202606041400.0.tgz","fileCount":490,"integrity":"sha512-SBzoaUO1beCxLQf7/KiaTvTv8dR11Ela73zKwXyMigv53pyF8C2ZsBHbAvKLXUv+vBIzn65s5E3iRo3slpbJKQ==","signatures":[{"sig":"MEUCIQCiTrPxPw/1hi9zwZxjbZ4BrNh1bkNvZDYM/zhou7KsbwIgFij+Ie6oT41Hflwa9ITR70PwPEyrULXAUW3SziM6cwE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35698711},"engines":{"node":">=20.x"},"gitHead":"2c680ad648708aa8712d4c8920d5cbf30f3999ae","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.1-cb1cc06-202606041319.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.1-2c680ad-202606041400.0_1780581757433_0.12441808695664869","host":"s3://npm-registry-packages-npm-production"}},"2.31.1-ae322ef-202606051040.0":{"name":"@flowfuse/flowfuse","version":"2.31.1-ae322ef-202606051040.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.1-ae322ef-202606051040.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"47862237748822aedbc4fb29c7f0817ada2a3c68","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.1-ae322ef-202606051040.0.tgz","fileCount":490,"integrity":"sha512-5H8cEpHww47LaaKOR5HURSfLkr4QBxSWs1kcmhHpYE5juRJPJxLQKu4sr8IypJI59m/F8pzDDcPtw02+wMHmkQ==","signatures":[{"sig":"MEUCIArhDK1QbmoWJgg24Squw4vR9HkyuTYClmKRYCzGQRGdAiEA6OWomcgOaFj6I0O9WRJek+n84x9Gjl6MSeLeInvioPI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35698445},"engines":{"node":">=20.x"},"gitHead":"ae322ef5597b0f6fd3461a72e9c8a2cabee7a459","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^5.11.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.1-cb1cc06-202606051040.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.1-ae322ef-202606051040.0_1780656167346_0.792632859523241","host":"s3://npm-registry-packages-npm-production"}},"2.31.1-90733e2-202606051216.0":{"name":"@flowfuse/flowfuse","version":"2.31.1-90733e2-202606051216.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.1-90733e2-202606051216.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"496c17bed70ed6942e3dbdfdc9e9826d71ae5f27","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.1-90733e2-202606051216.0.tgz","fileCount":490,"integrity":"sha512-YC1XI3YJZmOJzXogUUD9rynq6FQz6UFTLKjko9wQJAQNmgtjUef0NhyWvvRhHJhuIwIg7uNpaEIoHblgBZleDA==","signatures":[{"sig":"MEYCIQDokP+UJIyAcYjjEB0G/lcwCceyTbPriYXH/SkSEJOj8AIhAJqNwAyp53Byc4VZtE4qLsUlvRQjeLdFRmOnXw4YtFN+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35698643},"engines":{"node":">=20.x"},"gitHead":"90733e21542314f4f58d378b63cacb46bf0c019c","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.1-cb1cc06-202606051040.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.1-90733e2-202606051216.0_1780661883840_0.12851816273856165","host":"s3://npm-registry-packages-npm-production"}},"2.31.1-d6d525f-202606081426.0":{"name":"@flowfuse/flowfuse","version":"2.31.1-d6d525f-202606081426.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.1-d6d525f-202606081426.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4b1fbb543685c06bb8ed624b3012600daa427d74","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.1-d6d525f-202606081426.0.tgz","fileCount":490,"integrity":"sha512-+rzg2DeYh8Y/HiuBxG15SIeRvmmPMat/ODO4sghpwOvCg+16PY6qdqQdehAkB/qr6wtu8GOO7d27/cyHL/Guyg==","signatures":[{"sig":"MEUCICwDvdQjKoOYcTpbS8W23kKPintOEn3cwV6c1trFzHdiAiEA8N/Qb+h5rrJnJ2uxxOt/gJFTwwhcX85R/csB7yONHic=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35699366},"engines":{"node":">=20.x"},"gitHead":"d6d525fef4d1a410b0fbd07528de5887c03c0576","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.1-cb1cc06-202606051040.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.1-d6d525f-202606081426.0_1780928910821_0.6404612857550487","host":"s3://npm-registry-packages-npm-production"}},"2.31.1-9cabaeb-202606091327.0":{"name":"@flowfuse/flowfuse","version":"2.31.1-9cabaeb-202606091327.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.1-9cabaeb-202606091327.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"70cf6aee041b80bc4b7f12d6757d42a119049580","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.1-9cabaeb-202606091327.0.tgz","fileCount":490,"integrity":"sha512-G2dlbPxhZ1jDBs94ZxZzz5C7iQWSDuKkbslgk5oFsUuNQIji3pH2x8bVQunj4EtAJSqCgurwhfRlr3ZWph2jyg==","signatures":[{"sig":"MEYCIQCaaPOPYpgwt97REW85HblrYrZIgeoYWH4+0vTq/EUrOAIhANLsVNDEtcTNb7yu/PruybmatWir66IaXjM+xLLRQYne","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35701511},"engines":{"node":">=20.x"},"gitHead":"9cabaebda7fbeee86ea04830e672e3ea329b2938","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.1-cb1cc06-202606051040.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.1-9cabaeb-202606091327.0_1781011780283_0.004950609007704498","host":"s3://npm-registry-packages-npm-production"}},"2.31.1-2bde162-202606091336.0":{"name":"@flowfuse/flowfuse","version":"2.31.1-2bde162-202606091336.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.1-2bde162-202606091336.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4d6b855d86a617924bd8a2d15b6bfe9a21d70988","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.1-2bde162-202606091336.0.tgz","fileCount":490,"integrity":"sha512-oqSs8vM3LuYGh4HHt5mRZF2RqLMaG/3GCIj2/wOhSmPLYcuStE7R5OHIku88Us0615DWtGM6cDEDgYObP9u/uQ==","signatures":[{"sig":"MEQCIDNBsNWjHEMmohSUfcXk+XW5cZ7Bqk7FMpkqSBrwj9VKAiBdnSIiCVm056Sd8dYyAN0/hKxgCcFPwGD7ytG7xxwTkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35717787},"engines":{"node":">=20.x"},"gitHead":"2bde162c963bfa3066988e49faf5d8069e584ed6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.1-cb1cc06-202606051040.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.1-2bde162-202606091336.0_1781012270261_0.35266897367536165","host":"s3://npm-registry-packages-npm-production"}},"2.31.1-2bde162-202606091347.0":{"name":"@flowfuse/flowfuse","version":"2.31.1-2bde162-202606091347.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.1-2bde162-202606091347.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9af1aa824d71e1ab587ef3ac7fb44a5781284615","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.1-2bde162-202606091347.0.tgz","fileCount":490,"integrity":"sha512-efc1EMzeGoy7E817FhmyIryFFrbMhHuTBvVqpnoCcJyt8uCJGtOmtYyftpI2XNUZMf+yiPkOYZT0C4HnUMo7zQ==","signatures":[{"sig":"MEQCIHmnooorjgawHxeUeGdjYdz+VWw+/tESsxXUEGgBIBIfAiA3NbQk/NYw3d/6mmCP0sNT0Sehnl4bffGa5cDqkp8rIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35717987},"engines":{"node":">=20.x"},"gitHead":"2bde162c963bfa3066988e49faf5d8069e584ed6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.2-548235f-202606091346.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.1-2bde162-202606091347.0_1781012933006_0.8416933780792668","host":"s3://npm-registry-packages-npm-production"}},"2.31.1-2bde162-202606091354.0":{"name":"@flowfuse/flowfuse","version":"2.31.1-2bde162-202606091354.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.1-2bde162-202606091354.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fca60b86ec9af2048567bafd7c4ff1033a70efae","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.1-2bde162-202606091354.0.tgz","fileCount":490,"integrity":"sha512-PxEupcRJ3Ezx3VeFe4M54Kj0ROLYz9aNUXj24vRLTu1M74OGSvbkfDLBfLgK/xIPPin+xmmyhinw+EaqGbt4Hg==","signatures":[{"sig":"MEQCIE98f5DNWHDaOL8tuxhcgIrL9USONjaZ/VlZnxXWSikHAiATHIftQUkI3Xuk3URU7SiBmTPCUsaHuRXJ29WeI63YbQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35717782},"engines":{"node":">=20.x"},"gitHead":"2bde162c963bfa3066988e49faf5d8069e584ed6","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.2-548235f-202606091346.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.1-2bde162-202606091354.0_1781013371804_0.9254082945868427","host":"s3://npm-registry-packages-npm-production"}},"2.31.2-8b1152c-202606091419.0":{"name":"@flowfuse/flowfuse","version":"2.31.2-8b1152c-202606091419.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.2-8b1152c-202606091419.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"871c69253183d682ca465070aa440955d2200edc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.2-8b1152c-202606091419.0.tgz","fileCount":490,"integrity":"sha512-DPw8SOc7QqK6+1Ax6wHBjHmHTAW7XdBo52qqcn2VBDdH522q0ODgXxVjgxFIb/3RNCJ9eRdAbwWn60j4pXTkqw==","signatures":[{"sig":"MEUCIQDtOYYtxMyUKqmjUX9PO41LNOXjEZ8p0QOj6ECI+hHYWwIgI1aK/48LoKIFm/iYmF/UyHDut5g7I/L715tASjeKZCw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35718755},"engines":{"node":">=20.x"},"gitHead":"8b1152cb6d3b3a3b7c7fa99e5b8f6b0153994936","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.2-548235f-202606091418.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.2-8b1152c-202606091419.0_1781014850463_0.04378486487011357","host":"s3://npm-registry-packages-npm-production"}},"2.31.2-8b1152c-202606091428.0":{"name":"@flowfuse/flowfuse","version":"2.31.2-8b1152c-202606091428.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.2-8b1152c-202606091428.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f4e6b676dfa9df37e38fc487eceb7b2f4aa153b1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.2-8b1152c-202606091428.0.tgz","fileCount":490,"integrity":"sha512-gXpi4r+qCXdULNTgQ/4euz6QwAmkpEoTsr5DuYIoSqETsR/YC34iN6xDGPfBsak8pwmuDvR2VgTFWrGnhbIdWA==","signatures":[{"sig":"MEUCIQCIklg6Kj5PIM93ojfXHnaoSToKFDPgZi6cd8UdiZGNogIgFXAFErHO998fqK79FQOVbVKc0prfNlTvKepc65IULpg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35718513},"engines":{"node":">=20.x"},"gitHead":"8b1152cb6d3b3a3b7c7fa99e5b8f6b0153994936","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.2-548235f-202606091428.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.2-8b1152c-202606091428.0_1781015414219_0.13699402306980923","host":"s3://npm-registry-packages-npm-production"}},"2.31.2-8b1152c-202606091430.0":{"name":"@flowfuse/flowfuse","version":"2.31.2-8b1152c-202606091430.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.2-8b1152c-202606091430.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f0918006cccd36dea138ebf467d91d112dc463d1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.2-8b1152c-202606091430.0.tgz","fileCount":490,"integrity":"sha512-OaezBrB8KJ35JIpstY8mo4+FO7HWRUcKvawP37Y7Y+Vi/4Ooiz8slbH6OxFYuZi545svvdCO10g35Qv7OVvk0g==","signatures":[{"sig":"MEUCIQCvzfJEWdodPl5Usfd+QTZ+G7WvIVP8mbWF93eBl4yRrwIgXgQXV/w0afWpLhqRclU+yhUoOHXwDlXdQ00aP+wVvl4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35718755},"engines":{"node":">=20.x"},"gitHead":"8b1152cb6d3b3a3b7c7fa99e5b8f6b0153994936","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.2-8b1152c-202606091430.0_1781015555859_0.7058899662243827","host":"s3://npm-registry-packages-npm-production"}},"2.31.2":{"name":"@flowfuse/flowfuse","version":"2.31.2","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.2","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"75aca38603ef3938aa4e1334fc7fd26e5d3f8c4e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.2.tgz","fileCount":490,"integrity":"sha512-497kFTjCWOfDsuWshHGRQ+zicSJpL+GyjcNZcHb8rFfM4WQb7EHsI8ley5OlrDKuOYq9myPLfa565S4chdCMFA==","signatures":[{"sig":"MEUCICAXfTsX0N3heCQE5jbYj27lS8s7Blt0NtVHXTa89JmvAiEA8mbQotwLOBVqnrzfRdzwRcqRQR7rcB3rfcGka0GlYNI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35713666},"engines":{"node":">=20.x"},"gitHead":"5ca84a5cdbe1cbd8b96f37fef351e3d36add3bf0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"^2.31.2","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.2_1781017106246_0.0600028428925139","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-5ca84a5-202606091515.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-5ca84a5-202606091515.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-5ca84a5-202606091515.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f44b2827218db887b83f74133eab5ebcd7eb4e66","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-5ca84a5-202606091515.0.tgz","fileCount":490,"integrity":"sha512-GyjmFKvcORh6zr1rvKOWFjfbV6X3WX5iryf/wWZCfMNFSO1SrHWbPC/Wq944WQKgRzA27aX/7zbg6odlFHJPYQ==","signatures":[{"sig":"MEUCIQDE3hFXcE5fI6qdMU7nYatwGR8VXP1svTnx+3BWul656AIgP4csa2oYMdjIBuOQufBiWFTREJCS6gPoaOC/OHIlnWk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35718443},"engines":{"node":">=20.x"},"gitHead":"5ca84a5cdbe1cbd8b96f37fef351e3d36add3bf0","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^9.1.3","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-5ca84a5-202606091515.0_1781018209727_0.8132440532941563","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-00ac964-202606091549.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-00ac964-202606091549.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-00ac964-202606091549.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"92e2a83fed1ee31294df43b7d82dfc3c7b2de326","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-00ac964-202606091549.0.tgz","fileCount":490,"integrity":"sha512-Xw8zpVVUeZigLGcXKAwhPQVx0pMpETrstH5p6SrkDkuGCuInZgBSY/f3cFDFss78xQ4+bM+LyDz4Qt9NbY01yg==","signatures":[{"sig":"MEUCIQC01v55pz89nBvZvrKLrT6Y1iK/YWHbKzbdyJP38GcC3AIgUWtwYUIL+P7VTidp3q5RO2UvU3iQrBkFBUIHaXghyag=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35718608},"engines":{"node":">=20.10.0"},"gitHead":"00ac96449263a31f2e6c37254ab4453acf1bdc34","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-00ac964-202606091549.0_1781020296193_0.716796941380555","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-e457510-202606101412.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-e457510-202606101412.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-e457510-202606101412.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"907ef1fda40a658c05701fd29e428ac25c06ee4a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-e457510-202606101412.0.tgz","fileCount":490,"integrity":"sha512-hW9SUj+SR7DEBk9SGPvvcMjTu9KuxAPKs4Jm83XUwQU6Z+0q3R7K/nl/dmuHYPvt1S55+wPKxbJxP5s6WijtOg==","signatures":[{"sig":"MEQCIGuWRiIzIXnrVDP29pN7J9SeJhlEzibFvmqmuYTOnBEVAiA98mQJ7j3vqgFKH9gtSYDsJUfswL3AuCl811XkJy4J5Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35718613},"engines":{"node":">=20.10.0"},"gitHead":"e45751009e07947945892d7a1af5ef9776e76c38","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-e457510-202606101412.0_1781100830968_0.5374956523980585","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-0a7f4a9-202606101610.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-0a7f4a9-202606101610.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-0a7f4a9-202606101610.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"91e3a12f1d8a52a816137c57387d305494142423","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-0a7f4a9-202606101610.0.tgz","fileCount":490,"integrity":"sha512-caSAA6c90Sjl1T20DtyspqhoIUrGjkOi/n+08XbHR9oUolopner/qeBvVKkykmJ/x3bxaiNE7U4WkUcY9CPm2g==","signatures":[{"sig":"MEQCID7ttM0gjLFaF+IKSZen8ufBP0+H1KM9IvjATwZxKRm4AiAOI4c329POb4gbbZq/3+MrBas3mauJmYeATcJRIZpXbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35724843},"engines":{"node":">=20.10.0"},"gitHead":"0a7f4a9e5a03a77394337b72e7ace7f040c9983a","scripts":{"lint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-0a7f4a9-202606101610.0_1781107940278_0.8210993010576237","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-275efa9-202606101617.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-275efa9-202606101617.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-275efa9-202606101617.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"63261b236114f88e745db715c412749ce722561a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-275efa9-202606101617.0.tgz","fileCount":491,"integrity":"sha512-9XqYBKXGSLeRewpnHZJdlOTk8WDiEV0Gqu/7AGfDKobo0r3AbUIwj4fo/PlWLScVJ97slDD8MIApc16ip8X1vQ==","signatures":[{"sig":"MEYCIQCjVq+xfctzwD5Iv41ZgRjS/5/9zhytBFHnTYxMzEw7ZgIhAILeyYBI41ogWMYGF7p3R6tEY7nKqRY+RuK2gxdYu7fp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35918135},"engines":{"node":">=20.10.0"},"gitHead":"275efa923ee8338c09a5a5f2bee3c4e0031f8e58","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-275efa9-202606101617.0_1781108362879_0.4126601530655918","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-275efa9-202606101637.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-275efa9-202606101637.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-275efa9-202606101637.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f91266df1b75c8de55ef93ea7e22502db2ffbca2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-275efa9-202606101637.0.tgz","fileCount":491,"integrity":"sha512-6S7CVS+eLp/UxH/IROG5AFa7WoX/32YT6LVzjD4Cg+JNSe82mmYFhb73X8aKtOCpkhTjmTspnlVtWKA/RzYsaQ==","signatures":[{"sig":"MEYCIQD37fX0vv5jQOWmJFeM4jFk09lfePmaaexq9Tjf1DiDRQIhANDq2iT5+NcbR4upG+xj6I7pT3ULXo2hKLtIEiQTDtVQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35918144},"engines":{"node":">=20.10.0"},"gitHead":"275efa923ee8338c09a5a5f2bee3c4e0031f8e58","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-275efa9-202606101637.0_1781109550259_0.914921695091911","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-ca8864d-202606101654.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-ca8864d-202606101654.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-ca8864d-202606101654.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2cc3b04ff781a01cb5f8a64238f6635ca8226bb6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-ca8864d-202606101654.0.tgz","fileCount":491,"integrity":"sha512-U06jKjiuT0y6X88iwlfbsjxVBBcckJ4m3ze0xrBRj7htG62pCZ9mYYewkK2cM0f/L3+7Ubz8AudYudIt2tJ3mQ==","signatures":[{"sig":"MEUCIEcCZK233LGyd124glTNI0APzxJfsIi31suXxfQm4ojLAiEA+cHPgsvp4YSCizoL/mHjqYQ5tPBMhEEw3upDorMR6Yo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35918270},"engines":{"node":">=20.10.0"},"gitHead":"ca8864d4a2f274a06433353b8f1e7b5d137a714e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^7.91.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^7.73.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/profiling-node":"^1.2.1","@sentry/webpack-plugin":"^2.7.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@immobiliarelabs/fastify-sentry":"^9.0.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-ca8864d-202606101654.0_1781110602910_0.9489377387738742","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-e42287f-202606111317.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-e42287f-202606111317.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-e42287f-202606111317.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"eb7a1723aa84cdaf404dd3b610935f136591ffb3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-e42287f-202606111317.0.tgz","fileCount":491,"integrity":"sha512-39WNRDOyRN+JlMPL+sD0PE4DUM1wkp/OwJy0UJFDtmehQ+jnlklLUAfzZDWV4XiZnPzUpnmg5JtBUNdYTRkqCQ==","signatures":[{"sig":"MEUCIA3awo6UO0it8SEyBO4vDsntNo5tUu8E3dQ/rERhWHrWAiEAiCdzwSRvDlrvRSIe9jHYrqQI8EAYTCi/mGps13VMlr4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34639826},"engines":{"node":">=20.10.0"},"gitHead":"e42287f8e02f72600249c6e27c5fef741453f86b","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-e42287f-202606111317.0_1781183978597_0.907885613877486","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-98c64b5-202606111414.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-98c64b5-202606111414.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-98c64b5-202606111414.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"07e44607d28b7eb8d1b6e2fc7ab082b868b800fa","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-98c64b5-202606111414.0.tgz","fileCount":491,"integrity":"sha512-YlmqHUo0dpjA5PmsRxuyjP2FevMAAKl/WkT2bZTDrkVP8dKmoyqn2hV3UzhjIeYne/jcBhYf9zrxpqeQuAtKaQ==","signatures":[{"sig":"MEUCIQDxB3hMd1mAE16EYssWBylkhSpnr8oLtIXOk7zczPo9/wIgG9BxuUt6mK+IqA0lgu2DIAPeQGtUsapiQ2FWJlzWQxU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34690514},"engines":{"node":">=20.10.0"},"gitHead":"98c64b5edf9709d986da4e8b04e4d465e558364e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-98c64b5-202606111414.0_1781187364419_0.41679031295614544","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-98c64b5-202606111433.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-98c64b5-202606111433.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-98c64b5-202606111433.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8b79ad4eff53dcc15c1c4f6ab53971f9717ddfa5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-98c64b5-202606111433.0.tgz","fileCount":491,"integrity":"sha512-ihbLcQxG0vt6K8q9YLWX9u31vU/bFSoZYCr4tVEJirXASex1S7DSSXffDNKK3xtNsyS4Y8ay6Or/f14IDFhHZA==","signatures":[{"sig":"MEYCIQC4jOQW/SvmoM9KW8GN7V49N8SP/P6ktkEbqiXah32yHAIhAI6fuO8jnCdQQTQ9nFPbXxMeerea+TtnSSA2TyNCYrW7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34690466},"engines":{"node":">=20.10.0"},"gitHead":"98c64b5edf9709d986da4e8b04e4d465e558364e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-98c64b5-202606111433.0_1781188522777_0.29208164977730067","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-45ad7ac-202606121646.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-45ad7ac-202606121646.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-45ad7ac-202606121646.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1fc77c7c5734e299dd5129415b05b47e4259be34","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-45ad7ac-202606121646.0.tgz","fileCount":491,"integrity":"sha512-F1Sfq1XO1a7/WBKjjR5g4nGcQ797JGAwUtQilgk97s/3DOs4q00MEcGwenxS1EICNZ/2P5y2jPfq4os05wR6Mg==","signatures":[{"sig":"MEQCIDd9NxgGAEtsUkyiEftXoZv3cOEnt5NXW3XEX/JOv+omAiB3vW/lT6TSefVt4pNcd3PBHmkEK4+CuS7I50gv0WB5nw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34694063},"engines":{"node":">=20.10.0"},"gitHead":"45ad7ac27ae577e77844bab97bd77e17bf9240cd","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-45ad7ac-202606121646.0_1781282895870_0.13681050056901478","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-8ad2d13-202606151406.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-8ad2d13-202606151406.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-8ad2d13-202606151406.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f009c4cb52f70dfea0aa154ed798a99cab59ef04","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-8ad2d13-202606151406.0.tgz","fileCount":491,"integrity":"sha512-SoyHz9PiLxjdxXr3ciBxGjyzLC2S8OvIXPUm5JvYWR6vGJNQoVSeRh0V8Ww2aJS37gPeF78q1+9bVM+LF4yfvw==","signatures":[{"sig":"MEUCIQCqXdsrBv7Wvg/kQE9JFFVILGJCY68FUhCgaiC8GVUlogIgTeJMVcD2iPx6brchlB6oj5ejo4AjLAB54QqNFBZrHgo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34702133},"engines":{"node":">=20.10.0"},"gitHead":"8ad2d139a68139c88729a598ba4c0210e9bb8aef","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-8ad2d13-202606151406.0_1781532511251_0.09929076695839889","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-d2b69d9-202606151443.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-d2b69d9-202606151443.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-d2b69d9-202606151443.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5d3ce2a3e015c4f64859aac00853bcc573c92870","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-d2b69d9-202606151443.0.tgz","fileCount":491,"integrity":"sha512-LAuPXoI7D8pmbrsg0Lo55uzSPFnGpnUy9D0okVJPKJyezx1xjTzF7tCAlfEWnC9Scz6JrRSgw3ALBMzOlM9fzQ==","signatures":[{"sig":"MEUCIQCHqMny9Zk+Qvz8/vbyOnF6oUrI0YmEERHj08+krwmDKQIgRr/Ca6DSCAqamTc/d/Sfzj27nSfS+sQkDSYgMeNCgao=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34702363},"engines":{"node":">=20.10.0"},"gitHead":"d2b69d940b5238d76fadf0db17103fdd690fe3c3","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^21.0.1","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-d2b69d9-202606151443.0_1781534727346_0.29711655909418866","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-08d6c60-202606151825.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-08d6c60-202606151825.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-08d6c60-202606151825.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"89ee3bffcbab6ec6f01e4bdf3099ff12045f85a8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-08d6c60-202606151825.0.tgz","fileCount":491,"integrity":"sha512-isIdoN5aXx0eckYQyaxhWTpChFGR4837tMJLvg+eMHgvu2RKv6XFQ0VAUegwwLopeF+wxgy9UCX+zxAb2oEtFA==","signatures":[{"sig":"MEUCIQCcIcM8FNWW2tzJfU0FTX/GS1HvY9t19aQFZlV9PSAU/gIgaZQEPFVZB8DMr2jhus8Xnbo5ywTDg3I9suy+L26KoRY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34702386},"engines":{"node":">=20.10.0"},"gitHead":"08d6c60a3023c2a828bd87f7aae22acbcaa2717e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-08d6c60-202606151825.0_1781548036744_0.14735229116407078","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-08d6c60-202606151845.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-08d6c60-202606151845.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-08d6c60-202606151845.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"59fcc921e00abf4a047be79c20a172b154878903","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-08d6c60-202606151845.0.tgz","fileCount":491,"integrity":"sha512-U4P2rPkgTygn+Vik548GZL7uUO6WayXR8WjUGrzjNr7/qrZspfYQIrJbUNN8Dc9i+UCmZFhHbKTB32e9KhUsyw==","signatures":[{"sig":"MEYCIQDDX6nLgCKnHhzz148ktFaX11mAzoObBeSKkDd+2l6EbAIhAO2SsIVzphtAk1OhWKpdGfgRRKxFBWEMBHKOP0DckId7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34701987},"engines":{"node":">=20.10.0"},"gitHead":"08d6c60a3023c2a828bd87f7aae22acbcaa2717e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-08d6c60-202606151845.0_1781549215050_0.5515967581089858","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-4e72c01-202606151850.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-4e72c01-202606151850.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-4e72c01-202606151850.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bddd630841e281796a03c67ac3d23c55b00dd8a7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-4e72c01-202606151850.0.tgz","fileCount":491,"integrity":"sha512-CRbkhZpJWBfcLl43P4LlNpUWHElIOeO+GG2PsEFEfwJazducISNNrOhMfZHqyvjEWGGT0Fe8iSqczVHeXb+Duw==","signatures":[{"sig":"MEQCIDsamzCJkeazPdqSrDSCV/U0xxDTkKJ+tSjz87QaXRffAiAH+MKi5SgWGyBCXfqM2FKIAF2tCcCLfx0BlS4Vk52/mA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34702482},"engines":{"node":">=20.10.0"},"gitHead":"4e72c01bc306c5af249a5d2c167f0b192ee1111e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-4e72c01-202606151850.0_1781549557473_0.2510773064848373","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-75092bf-202606151853.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-75092bf-202606151853.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-75092bf-202606151853.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"37ab6120892c7e5cf7f06a5c2ed78658ddf651f1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-75092bf-202606151853.0.tgz","fileCount":491,"integrity":"sha512-NcwmfA5sixxL/Wy8dEOcOmMcJ6oNDq6snBfiY6dGjhLuPGwTPWz60WOVkiIQOt/IgR7eziELqkD3flIprCKnGQ==","signatures":[{"sig":"MEQCIBMmZtUzPFTflm4C+mwbwGRtmwCpEaBwLqin/DWr3ffLAiAcjbem/+Q9T46GF9SQoB5ohtfg51N+F+XdPXQbEva7Vg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34702619},"engines":{"node":">=20.10.0"},"gitHead":"75092bfd1f6fc2710a2e09833c91d2b275c66c2d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-75092bf-202606151853.0_1781549682507_0.7170369127189729","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-c2b1241-202606151901.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-c2b1241-202606151901.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-c2b1241-202606151901.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"31fb59dd3e8704da00d2a05517c37ba6ef50d296","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-c2b1241-202606151901.0.tgz","fileCount":491,"integrity":"sha512-2syJyRcRF1P1arhJE1RTZYh6fpiCsd5Rn3/one3gD/4ivZ7xP9CZ3sXfGqxsPM7sfP4/AsTZxaQ5An31mgZrew==","signatures":[{"sig":"MEUCIFCtEcwvUOmEgHRNzncGji2OXroRfSg+SSfrhwtmqYyQAiEA7kKo4xHhB+RTPrKA9/J/m8qG5GleYymOOGuPQIkKQXI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34702122},"engines":{"node":">=20.10.0"},"gitHead":"c2b124105e56049a8da741fa102353d9316094ab","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-c2b1241-202606151901.0_1781550206942_0.04156589470788452","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-b4208ba-202606151905.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-b4208ba-202606151905.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-b4208ba-202606151905.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7bc6ee45951cc92ebe4f002ca09cc623d7f4351d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-b4208ba-202606151905.0.tgz","fileCount":491,"integrity":"sha512-hWvDu9qjIq9BJ72RDvTYTgjqkoVBeDgfO5aRUtiiuzFqT8WAnjMR1Q+hU3EDbUxthdozznXjGc652ZOg9BlutA==","signatures":[{"sig":"MEYCIQDhEwzEdCbOqtDBsXMhuR3fao4SOOprYrr6HeumxhLYygIhAPwsKWWGAZ/GhexyWEVJ34MLEiKB3BlXER/QN22lTqwg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34711222},"engines":{"node":">=20.10.0"},"gitHead":"b4208bad5c068bbc6f2b80680f7911550b359274","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-b4208ba-202606151905.0_1781550408181_0.11211508147202176","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-08887ed-202606151910.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-08887ed-202606151910.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-08887ed-202606151910.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3d81be699d3b2cba4c43ac277ea928c17b4d470c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-08887ed-202606151910.0.tgz","fileCount":491,"integrity":"sha512-2pitRx1ksrp9pFH1H/DrLK3OjocQyuco9hAQMgpY6B62B3bJvDEihOY8l5uiEXlwh7MqFrkDzVFCnMTRygT+GQ==","signatures":[{"sig":"MEUCIEDGZEXAc5FB1bfDU66BdTDp/AC83Fx1cuEhdsbgQWnlAiEAwS+edEyItcaEHkNyRdGOKOBqAqIh9gMU8jnfaxCBa/A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34711342},"engines":{"node":">=20.10.0"},"gitHead":"08887ed7683fc8da7cd707485cadba093aed84aa","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-08887ed-202606151910.0_1781550714732_0.03762163068792668","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-aa092ea-202606151914.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-aa092ea-202606151914.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-aa092ea-202606151914.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d6e044b952ce165686dff4f5f6d3c69a841c7ce5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-aa092ea-202606151914.0.tgz","fileCount":491,"integrity":"sha512-trL5TLqYWqaKBQs9xXlcudjhMST4umt+KnkhTVKMIxQe+/DC22GzGwnbl0YoNhgqXlWsBT10djHiZKaxCpT2xA==","signatures":[{"sig":"MEUCIBA3BTbo/HwHzCg4fscloBVK/bK1yn0sZJGO0mxKbNW6AiEA/jKFCCTEWxUZOLj/fEBBfuugNHtpl1Zj5BMbdxkIcmc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34711374},"engines":{"node":">=20.10.0"},"gitHead":"aa092ea1bc92ad3b04ddf20e63aa29040c5befe4","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.6.0","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-aa092ea-202606151914.0_1781550967722_0.47313063753178675","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-24198a9-202606151926.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-24198a9-202606151926.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-24198a9-202606151926.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ab00c516a8a194112af9e3cbb82bb97b82d728f3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-24198a9-202606151926.0.tgz","fileCount":491,"integrity":"sha512-13jnzdmFX6crq9vW+m0xNR80Hzjq+VrtQPRl+yM59caxcAJUPrZvm3AfjwxP8VlI/pYU3GLji1hXGQIsQzJ3Vg==","signatures":[{"sig":"MEQCIH3Mm/8eHWdlzyG+8ajm/pTexcvqRsVoK7cn1w2akFYuAiAZSJ9i9EOhmP8WvA/XGxLwuBHQzogGpbbEiixGdMjWzA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34715249},"engines":{"node":">=20.10.0"},"gitHead":"24198a951fd13db838e7fb39fb45005fc8ee1bdf","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-24198a9-202606151926.0_1781551716933_0.08830714736134859","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-dd29584-202606151932.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-dd29584-202606151932.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-dd29584-202606151932.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f12b8ce91f4c3c32842ff5a5db49f0cba2ce7104","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-dd29584-202606151932.0.tgz","fileCount":491,"integrity":"sha512-CMTb7NX/tW9iC1R7uTxkNK4YtlFw96omboJw5Nu7XKjMWK0VPBJwFWYK0hBzHFr/ts8K/MAcU5QSYtyjPiWtjw==","signatures":[{"sig":"MEUCIQCWgmwsdQpP3cBQrC4nOKdsrtOJKFrKm50YHYexjW8HZwIgWebRCAEsDCynFgwSGljTd09qUXC3goezSYFzAA+1kC4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34715259},"engines":{"node":">=20.10.0"},"gitHead":"dd29584ce314d33d02cf6ae5e08a4448417f9a67","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-dd29584-202606151932.0_1781552064449_0.2234005959266705","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-e73268e-202606151940.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-e73268e-202606151940.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-e73268e-202606151940.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c96d6e12c227c9a596c4379854a6f47dc9aaa7ef","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-e73268e-202606151940.0.tgz","fileCount":491,"integrity":"sha512-lQeYWhN6KKgA1qC+RptWl5C6sUSnfJ6Tw3X/+xUrAuYHVM5L0haOnN56+EIA3ZbyMCfyEjs7zdNDlKZ7HpF/aA==","signatures":[{"sig":"MEQCIF7JSQsQ4epQT54n5xUIlGIAkWtioWJ3gCa+2zdPj6HSAiBm8K+hnvH4rP0KYuqGvVI8tU+dQ89JquLnZZAW4cArTA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34715251},"engines":{"node":">=20.10.0"},"gitHead":"e73268e23c4ba304d6688620092755f5d5814c5b","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^12.1.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-e73268e-202606151940.0_1781552554042_0.41153856656791565","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-517e267-202606151945.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-517e267-202606151945.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-517e267-202606151945.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a2f558d962d7d03d2b62167780bd50ddab14c609","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-517e267-202606151945.0.tgz","fileCount":491,"integrity":"sha512-xb8YdvkZDk8ATaBW83kBzaNMVxuC01caGf67TKYfknrGG9OhgT8hS8v0+vz7PvPmrc/fSq4yO5vP311dWPobtQ==","signatures":[{"sig":"MEQCIEMxh43VNcnZ1DiVmV4z3VPXPodc6UlWeoEtHeLn4kfBAiB5HHdu9UnWK74OHhf3lQp+rsNmyEh/muDr2pqOGcTWJg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34715187},"engines":{"node":">=20.10.0"},"gitHead":"517e26758ae3fa319c88e36168dfcd47d5be7862","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-517e267-202606151945.0_1781552819670_0.90503472824418","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-517e267-202606152126.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-517e267-202606152126.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-517e267-202606152126.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f119209e9f03dee925059e8ae297208a89005bbc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-517e267-202606152126.0.tgz","fileCount":491,"integrity":"sha512-BJ4LbJ1XXy2cDGdNcSsDBB59+IGsNFuyylwgepWF7hf08/rSSzIQjzWNE+ahIXaascOxdWStzOWwRhzhLQf0ng==","signatures":[{"sig":"MEUCIB5OHvPfusIhSP7q9DVzo9qyb4ZUF3uLnjBBC4Z1eqIfAiEA0+Gci4UM+Ex3huT+wyMWDvu62jjexY1QMENnFqdJwJg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34715564},"engines":{"node":">=20.10.0"},"gitHead":"517e26758ae3fa319c88e36168dfcd47d5be7862","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-517e267-202606152126.0_1781558914285_0.09064078036487433","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-de2c617-202606160821.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-de2c617-202606160821.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-de2c617-202606160821.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6ca7ffe5e041985010944c07627b32ab6d08f8bf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-de2c617-202606160821.0.tgz","fileCount":491,"integrity":"sha512-M274Ne7j8DasQ0tI2yKJGLT54hMReXRM9MG1oFTTFOPB3lt6QSvI2hozN9M7TXjQV56mCLfDsC6khvcHdBjqIA==","signatures":[{"sig":"MEUCID2C7dOWW3L/QRqbh7Xro1Oa5YPt0NDb9X8dc9oloM40AiEAhig1kKCgrGj/K6wpYWItaaPIVpUYBmLpYSZ11/bIOUQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34715609},"engines":{"node":">=20.10.0"},"gitHead":"de2c617d780da00a3da8d59de8b7e1bd4984aeab","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-de2c617-202606160821.0_1781598178435_0.11190681180336148","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-3846417-202606160825.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-3846417-202606160825.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-3846417-202606160825.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4f511a5204df0dd2776e1b3fa8870e7fb26be7a4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-3846417-202606160825.0.tgz","fileCount":491,"integrity":"sha512-8ESh+v6ueo0KNrA40zgnlFQ/BKYuxZBRKwHSmLLMVIVMK/hphhD2VsU2cnXulb/rNiqyN7Ex7J8c+ItznsEZMg==","signatures":[{"sig":"MEYCIQD7Rqu9IyIituSIoJ+IyTFB3pai8wyuIwzmLrn033CcJgIhAMO9ACdcw1uklcFe69TU0vKdvTjraA/C6mrOirbvZn5U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34715046},"engines":{"node":">=20.10.0"},"gitHead":"3846417d8bdbadd4e828e34697b0e930fbc2ec04","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-3846417-202606160825.0_1781598401987_0.7263068429541857","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-3d19b5d-202606160830.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-3d19b5d-202606160830.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-3d19b5d-202606160830.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3e6505081f84d782f3e3e236a56910091debd741","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-3d19b5d-202606160830.0.tgz","fileCount":491,"integrity":"sha512-rPBbOr2mDYl66+yI7vA41dPox2cugXoYePUA+6Hl28voLifAn8+mD9cr7P3t5qmu2IvXuCr9/BtpiKkTN4Kd+g==","signatures":[{"sig":"MEQCIDfQ60o5YTYcIUP8yX/6VBc525OEmx1shJMPfxhOMpuVAiAWthLYnVm6vMMxdAGPrHSpHMBGdI+0LXRbA9gGftPH8w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34715298},"engines":{"node":">=20.10.0"},"gitHead":"3d19b5d90c7d3ca8ae9bcbe5994e7be49ea810c9","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-3d19b5d-202606160830.0_1781598740998_0.79103331434379","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-f009412-202606160837.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-f009412-202606160837.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-f009412-202606160837.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3d8698944d1decc4e2d7a8b5e4a21fc47c9221d8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-f009412-202606160837.0.tgz","fileCount":491,"integrity":"sha512-MMDDxb5+IgKZgrEIavwUSJagQnYUEriIUCh6ihvLKJvAN5x0MUdaKjnrKoe2LNvxxY1WN+QgX7s5qW8qr3UkLw==","signatures":[{"sig":"MEUCIQDYhGEt8IfqSLFBcSwXiF/Lg6P4r4C7veAowmSQCGQ5hgIgEjiuR5xDFtaC0+G6DKB12ExvfJiORASp8xiW2v4BCDQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34771666},"engines":{"node":">=20.10.0"},"gitHead":"f009412212894a0717837f1c648ca29b80787ad1","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-f009412-202606160837.0_1781599159436_0.9488317306831178","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-543e9a3-202606160839.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-543e9a3-202606160839.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-543e9a3-202606160839.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7d5521310bbb215bbbad0baae2f3968a59850eae","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-543e9a3-202606160839.0.tgz","fileCount":491,"integrity":"sha512-ZoXICdUDcPfjb1vhmkU6OgDwnYVjwgK50qwYXEegmYIdACHWcua/gCuvNuokn5oIdSlaoSHx32xQ5YYb405uAA==","signatures":[{"sig":"MEYCIQCPSJDeU1ybuoh7AGoJ3hVPtPta0SM3Jhb5DNvCM9duYgIhAO0lFN3iw8t/IULeFomAbhoLwdKZRAttQBjolHOotht3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34771912},"engines":{"node":">=20.10.0"},"gitHead":"543e9a37a1d410ba482b1efb945d73b6278b6d75","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-543e9a3-202606160839.0_1781599292598_0.6242906021413852","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-fd2036c-202606160846.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-fd2036c-202606160846.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-fd2036c-202606160846.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ae22ad70e44cef705bb0cf67e45442a65e099b13","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-fd2036c-202606160846.0.tgz","fileCount":491,"integrity":"sha512-8ppzH4VDco7lKsbDSxFxu6GUnQSqK316m0MjGl1XcJWmyh20ReZbNr2KqdYi69xWx53H5wzUPi7SVtMpi9zH2Q==","signatures":[{"sig":"MEUCIEVgMwjMaupFdSnQ46ddMUdqqqnIvmHqejJFb402ZMHkAiEA/OPOT77Qs3CreJxb9oe4Stmn7/sKWlFQP1lSWImZpVw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34876915},"engines":{"node":">=20.10.0"},"gitHead":"fd2036c5cb6dc464e63c5c68ed50af9a62c298d9","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-fd2036c-202606160846.0_1781599653153_0.39699440740368064","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-fd2036c-202606160906.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-fd2036c-202606160906.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-fd2036c-202606160906.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9033a8c2c3424093c5aeea761ead9f4c7dd19a1c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-fd2036c-202606160906.0.tgz","fileCount":491,"integrity":"sha512-uN1l4U9GpF7cKNFE82petmEQbXzjtb0Q7LG6JVJLKPj+Es6/lMPmI0T/OuaTmfFKl4mUOL1Py7Sz/R23y2HItQ==","signatures":[{"sig":"MEQCIAUFSozG71jwnjFYS7ukXWS4Q433S4vvhx3lO7LXgKudAiB55J02PGtA3zJm2gcbp8ClxoluWzQVdXCHfvCKOICSFA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34876803},"engines":{"node":">=20.10.0"},"gitHead":"fd2036c5cb6dc464e63c5c68ed50af9a62c298d9","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-fd2036c-202606160906.0_1781600878241_0.7914199082220461","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-55ebf09-202606161052.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-55ebf09-202606161052.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-55ebf09-202606161052.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"38fa4817afb45910da04cbc1da47b1e0f8b6e26e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-55ebf09-202606161052.0.tgz","fileCount":491,"integrity":"sha512-TCUZgF9WBQdo1T2OMECxSCakWA4a897EnBrD4Lci3RP+fcwDcRfM5Ki9ANY97ApCZml8KREEja5ymM6La9Bm5A==","signatures":[{"sig":"MEQCIBOBjuUxHT7gGFlGnggiBM5DhAYrZk14CrFPEHJZWL5lAiBuUFoPQPCh8NaORoWaZBOmNRrQG83OVYZ6GgRogRGMaA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34466557},"engines":{"node":">=20.10.0"},"gitHead":"55ebf09309f1b2bb9866995533a2a4f92c64e1d9","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-55ebf09-202606161052.0_1781607274723_0.70961248909802","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-55ebf09-202606161113.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-55ebf09-202606161113.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-55ebf09-202606161113.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"aa1b5ff25f71cf141f1adfbc8cf390f216a34720","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-55ebf09-202606161113.0.tgz","fileCount":491,"integrity":"sha512-e1s5pFcK+mLVS0syGL0TE/n1eI39LdiNTLKERY/lc4NXBPDN06KQ0XRXOZ8IVXW3Tya8znJK0ZmlFM8hNztwXg==","signatures":[{"sig":"MEUCIEmtLMYipS1/qm0rBIKBzHFLCHguZQNmQTVAMsAXDgUAAiEAz7dw7Gl5/VqpT8v8sOsHacSjs4gxWA+5egZa1ccpW1o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34466335},"engines":{"node":">=20.10.0"},"gitHead":"55ebf09309f1b2bb9866995533a2a4f92c64e1d9","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-55ebf09-202606161113.0_1781608491118_0.9242292123830218","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-91da44f-202606161246.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-91da44f-202606161246.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-91da44f-202606161246.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fce52e34ed2f94cf006306ca46c699c764eb83bf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-91da44f-202606161246.0.tgz","fileCount":491,"integrity":"sha512-eJRocL2SXMDPcaAy6bnr/C49H1p3Pp1juLSG8z8mZkF8S24jrN5g6oW3yfZ4wUO9YhgoAEUJ965v3qEv6jxaOw==","signatures":[{"sig":"MEUCIQDLBJlXEEDiGip5GwB5VP9WrwkzFuHy+1wF8IGgM891wAIgRJvvhoqnPh1qVQaRAWEkMOJLyoR+KMZZ6HFvlgcWgyU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34482173},"engines":{"node":">=20.10.0"},"gitHead":"91da44f9283c8231a42784e3a1e0a047bc979c46","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^8.15.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^8.0.4","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-91da44f-202606161246.0_1781614104574_0.6875428580700622","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-af096a4-202606161303.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-af096a4-202606161303.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-af096a4-202606161303.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ecfb12f73167bf07691dcfae5504df48b0ae7af4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-af096a4-202606161303.0.tgz","fileCount":491,"integrity":"sha512-nbrYEl5HQXE2VrxJOQPISB0CdYzbbbm6Rt9UnO4/e64vXpD0pi+MaWvz+AQX7CyR9le9qeMeT1Okgky4J7lOjA==","signatures":[{"sig":"MEUCIQCPqWYgzrChBMYIZCXkyqZirDd/7l19NhQN03OfPTXOqwIgOFGxrIo/W22cFto4+mcMVR9BVkgsqkPkXDanU8HN72k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34482095},"engines":{"node":">=20.10.0"},"gitHead":"af096a4f86543b5101b23f340d1883f44a1c498d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606091429.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-af096a4-202606161303.0_1781615123134_0.5907434008625865","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-5832e87-202606161321.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-5832e87-202606161321.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-5832e87-202606161321.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d549526606192114a05c220a905796cb6acc82b1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-5832e87-202606161321.0.tgz","fileCount":491,"integrity":"sha512-EaSU5baKsQKnzTo8Y8YY9NsjRjLWDeB2Y54YxPN7un2O8mZDIIYu99aRHdc0Rb1YhjQFkrm/Rg+N/l8l+l6ozQ==","signatures":[{"sig":"MEQCIALXyj86/gYi1BupiFzyfrAigSByQ71K1FdMS0s/UpToAiBTvpYi7vZMXoUjRa6oeX+WXQsgG9Teu7ntMZNlVavkGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34482048},"engines":{"node":">=20.10.0"},"gitHead":"5832e879f25e27e71b1b6931cbc4b9c3a3291eb5","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^10.0.0","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606161320.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-5832e87-202606161321.0_1781616179573_0.5370098250802455","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-f0bc25e-202606161330.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-f0bc25e-202606161330.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-f0bc25e-202606161330.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f03ea2fa794d4f8183f0b37d073d88a01fcfa1d6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-f0bc25e-202606161330.0.tgz","fileCount":491,"integrity":"sha512-u8bXtPuELdeuspU2E7BwZimqp/Nqeibl1yNDe6KWNR/MPHbSMaP8OpSm2JBMvBb5SHgajlTFv6B1IMKcBYObAQ==","signatures":[{"sig":"MEUCIEASOPHJTZdN3qzfb5xIp0gStaPQ9S40hV/GHlhGuktzAiEAzmWP7ukVkMzwqCV6sqLuxQS+/zP/4skZiMcCEQTr3mU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34481622},"engines":{"node":">=20.10.0"},"gitHead":"f0bc25e40ec88fb521c0f8175618ac44ba9122c6","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606161320.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-f0bc25e-202606161330.0_1781616712493_0.27256153865334243","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-f0bc25e-202606161349.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-f0bc25e-202606161349.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-f0bc25e-202606161349.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"34c1f2564cc4c2599243b95df85df34f68f0f6c6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-f0bc25e-202606161349.0.tgz","fileCount":491,"integrity":"sha512-wtMUgE3vkKwraiyvOP1qzqc6q6zSvm1hfOGa9bzIHz2GD68yATXQPsTB7NeUXA7pyrr4LRa2NRjx0R+4849MxA==","signatures":[{"sig":"MEUCIA3DC9IXY7wKIM1Xjgr+jUFsEC+PJuDJgmI44pvAuRbxAiEAsGcHBYLnD5TRl6o26174kwbkayCvb+wQ9SLHCjeukdU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34481867},"engines":{"node":">=20.10.0"},"gitHead":"f0bc25e40ec88fb521c0f8175618ac44ba9122c6","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606161320.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-f0bc25e-202606161349.0_1781617839641_0.8731444882914656","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-f0bc25e-202606161351.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-f0bc25e-202606161351.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-f0bc25e-202606161351.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"317f4b1b0f02d6c94bdda2b8c0ef3876ebc60ac2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-f0bc25e-202606161351.0.tgz","fileCount":491,"integrity":"sha512-yofKpYOALcO5IMlBR4FNNlJJwAf7X9okntmaH1m4BsHGgr6mvuJGVuJvZsu59zclmtgK4SxtNi6mENPmO3Xpxw==","signatures":[{"sig":"MEUCIB0jCZUr6MDR/6ozHCGt00+bO3R4A/VEADAd6suvfbGbAiEA7nH63DrsAcWo4JxTDOZ9NlJLwIr7s4HojcEMBz+GL7g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34482133},"engines":{"node":">=20.10.0"},"gitHead":"f0bc25e40ec88fb521c0f8175618ac44ba9122c6","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.3-b17d7b5-202606161350.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-f0bc25e-202606161351.0_1781617969619_0.37679287024265173","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-f0bc25e-202606161354.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-f0bc25e-202606161354.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-f0bc25e-202606161354.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fac41b5df41a5fbc00a52af5d8ec0a9d25192c97","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-f0bc25e-202606161354.0.tgz","fileCount":491,"integrity":"sha512-Au8X+teuHKYJWb2HIOAtIOlYpDii8kUEXIF2wWCiRb85oh2FCO/1LSMDGFIjJKjRvW81zYbBXpfjNsjh1QCnUA==","signatures":[{"sig":"MEQCICLP0L8c78vnfTjOftYh0y9zJ/X4TuSDQ6Yz2W8QhqDqAiB69L86VkbFfzLhg1rkmJh3Jxa0dfCBJI6KLKMF8MChUg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34482262},"engines":{"node":">=20.10.0"},"gitHead":"f0bc25e40ec88fb521c0f8175618ac44ba9122c6","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-045ef45-202606161354.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-f0bc25e-202606161354.0_1781618198210_0.8292944513791112","host":"s3://npm-registry-packages-npm-production"}},"2.31.3-1c2ee1a-202606161421.0":{"name":"@flowfuse/flowfuse","version":"2.31.3-1c2ee1a-202606161421.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3-1c2ee1a-202606161421.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0457f4c077e2fe5acc6e4ce1b7bdd9825599fdb1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3-1c2ee1a-202606161421.0.tgz","fileCount":491,"integrity":"sha512-DoZ9Wp00nOVgOUEFwrniIq2AmLpDBHaPACCvdQ23RwaNN6a5ul05zucrO4GCrfXtykIEIsRGC5GdaV8wwSAskg==","signatures":[{"sig":"MEYCIQDLlpW/aHMUXQ92b2me7ZNz91l5pOkq4TZcF8KTJYqCNwIhAIZprrRrhAmyp13nZExTCx1ZlXsDyqsudj5Ya3DkJoWq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34481999},"engines":{"node":">=20.10.0"},"gitHead":"1c2ee1a60d3c458043787c410d6624860ed222e1","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-045ef45-202606161354.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3-1c2ee1a-202606161421.0_1781619789651_0.6618262272246098","host":"s3://npm-registry-packages-npm-production"}},"2.31.3":{"name":"@flowfuse/flowfuse","version":"2.31.3","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.3","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c2100f720b04787d655f1a8a00664e556fcb5303","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.3.tgz","fileCount":491,"integrity":"sha512-6TjjnKTATI+scr4oge0xLdrMPg8pohAWjLdy3OBf0P/8+IAP17x1QwL1NYNrfoVZX1434jI0uXWZyvhqH49u9g==","signatures":[{"sig":"MEQCIBR5Og7Wmq4aOmIovXf4PWgjpTCXzpKAEu+RvdtUbgOjAiBZ22oDHaajVoxEThd9lHI752I7qYh9T6ANK2dk5FCv/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34479295},"engines":{"node":">=20.10.0"},"gitHead":"67b10146caf3b234a2b700dc9b1d5ce5a96ef63f","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"^2.31.3","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.3_1781620268911_0.1387068163676064","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-67b1014-202606161444.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-67b1014-202606161444.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-67b1014-202606161444.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7f9c9f56d8a2bcc75a5e6b3858626ec6bfa2ab14","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-67b1014-202606161444.0.tgz","fileCount":491,"integrity":"sha512-Jb95IckjQYpmoDTgXl7g7vKJQ8QCAn6pdUWKAYFqdZb3iYYU8CU1tGaP+9eRBNp3eaNNhCO94fz5Y4+qPR486g==","signatures":[{"sig":"MEUCIQD0pfZCA7DLtqDP9r+BWMdoPJWlaswcv8Jw+BiUbgOncAIgcCzlkyjKCRsvpXtKCYCZXfLJfFBVrJU0b7l9fkTzMS0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34486016},"engines":{"node":">=20.10.0"},"gitHead":"67b10146caf3b234a2b700dc9b1d5ce5a96ef63f","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-045ef45-202606161354.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^3.1.1","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^5.0.2","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^3.1.1","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-67b1014-202606161444.0_1781621184749_0.3606177348795707","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-6651f18-202606161550.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-6651f18-202606161550.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-6651f18-202606161550.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0752a19054f11acb94ec65eb9c8c773911ab8b81","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-6651f18-202606161550.0.tgz","fileCount":491,"integrity":"sha512-iiZ7x5w59cwCueahI3MJZEOVcd8ob+LwmD1ZL1UkMX3dQsZiZWw7KPjlJ2of2K/v6s5FK6iKfj4ex5zeh/xoUA==","signatures":[{"sig":"MEQCIBbpg/sbon8/L2EMSEn7EnCOTQhRbqHQ+R0Uol+Kp/LiAiAKYvcL6HRvMREG/+5Fk+gOc0za06gBEPQ//zhcH5C1Bw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34486019},"engines":{"node":">=20.10.0"},"gitHead":"6651f183de8c0a997d20aa3a66fd3c3fa6ade79b","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-575f955-202606161549.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-6651f18-202606161550.0_1781625135201_0.8792622772486558","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-6651f18-202606161554.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-6651f18-202606161554.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-6651f18-202606161554.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9ae1dd60aaf9094fa3a38350c74fb666c627d01b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-6651f18-202606161554.0.tgz","fileCount":491,"integrity":"sha512-ibwzA3JuHyqZL/Xwa4+Ps64hyXIX6ixKYkd/MFCHLnfdsfxpUsgwc5rN2oy7KhAM+fXXIwj+5QJ+Im6rQRoy1g==","signatures":[{"sig":"MEUCIH0bUNedzhyh4zwjinJ/AjEt9JAB5qKheiI+4h1I6+XvAiEAmzWkzMltdhfFpaNisfjNLygxZJPrDQqq1g2KqQ6Hl+E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34485428},"engines":{"node":">=20.10.0"},"gitHead":"6651f183de8c0a997d20aa3a66fd3c3fa6ade79b","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-575f955-202606161549.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-6651f18-202606161554.0_1781625344441_0.9940193917449822","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-6651f18-202606161619.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-6651f18-202606161619.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-6651f18-202606161619.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"46338c932076f822bc4162c4e79862bcb1ee71bc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-6651f18-202606161619.0.tgz","fileCount":491,"integrity":"sha512-wXonNUcGLrMaF1d190nrTq9wZeyJ4usedzD5fLVHsWFfFCZQnkYZmgkH8CHXAH9KgOYgiNB7MMno74DNv3+8Vw==","signatures":[{"sig":"MEUCIFeIj1efjWh9NN7D90db9YrzpXPPwYCdj0tc9TRBRB1GAiEAv5amc4XWrCyN6ZKe9uwfPP0oN5kslZl420l69SmDwIY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34485769},"engines":{"node":">=20.10.0"},"gitHead":"6651f183de8c0a997d20aa3a66fd3c3fa6ade79b","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606161618.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-6651f18-202606161619.0_1781626857513_0.43437880242306415","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-6651f18-202606161632.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-6651f18-202606161632.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-6651f18-202606161632.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c0e6a0e0cb2582e92ad6352627ea72d9ffa5e129","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-6651f18-202606161632.0.tgz","fileCount":491,"integrity":"sha512-EkBAPiXFSanzcSm138kev4fA3ZqY/0WSB7+wr/gToQUN5ns5yEy5U/xDuw3oBtQ3cxcPZ9aIKkNJ6dIO7Ej+kA==","signatures":[{"sig":"MEUCIQCte+X4jhkUyfmTAsFjOrVIQYeQ3/Bbk0s4QUZjOY78ZQIgA7G7l2IlhH6wQDZscdRtou0rLSg2hmlA/A6tlG233mQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34486141},"engines":{"node":">=20.10.0"},"gitHead":"6651f183de8c0a997d20aa3a66fd3c3fa6ade79b","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606161631.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-6651f18-202606161632.0_1781627676091_0.5218097137003834","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-6651f18-202606161640.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-6651f18-202606161640.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-6651f18-202606161640.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d702e61b924945734bb8108fac7414e4e31cb3c6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-6651f18-202606161640.0.tgz","fileCount":491,"integrity":"sha512-va3fcTaJn3Af3hngbHetPRpr9qKt410jMPMb4lEM0K0ii1OP+LTy1L0QwE1mBnGVpvWIqESEhIitCLsR1TbdlA==","signatures":[{"sig":"MEUCIQDRlCpBzj88F0nMkYjek2dIioBo/ab64uDy25QkiF9DZgIgCj6BiXRmPLsy7822RS2xFou5P3DxeO9gmbeUIIjmcnk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34485918},"engines":{"node":">=20.10.0"},"gitHead":"6651f183de8c0a997d20aa3a66fd3c3fa6ade79b","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606161639.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-6651f18-202606161640.0_1781628130154_0.4400117762801441","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-6651f18-202606161646.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-6651f18-202606161646.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-6651f18-202606161646.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"80fef87d7fd4f656970914c1bda94d0149d18255","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-6651f18-202606161646.0.tgz","fileCount":491,"integrity":"sha512-BpzmAs4dch1ezY669j2ZzW5cAAZ+KU29zgNVoiZZR0aqJcLYB0D0zZxVOmKO2mFf96ZbrxPCsLlD2jhejDy7Mg==","signatures":[{"sig":"MEUCIQD4+5T5QLVl4JMSIsQ9Ktsv3FSRhpVCd3WkOnYReFKV3QIgYGpcMjcxLc6bFMN+JXS2gFOPSioUhAb7nM1vem2rVR4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34485703},"engines":{"node":">=20.10.0"},"gitHead":"6651f183de8c0a997d20aa3a66fd3c3fa6ade79b","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606161645.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-6651f18-202606161646.0_1781628467372_0.19771991305125258","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-6651f18-202606161709.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-6651f18-202606161709.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-6651f18-202606161709.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"88386f5726c330f0cc51f61710ebc040f88dffdb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-6651f18-202606161709.0.tgz","fileCount":491,"integrity":"sha512-QzSqnfpNvC6HF9jwWfYhNlhH3k1KynVL+8azZwKXXA7Tx2gU3JcNjhzc3aDqbe9tBfh58+RJBJSGPJvGBBtxbQ==","signatures":[{"sig":"MEUCIChbceyfeA8V3ZXR7J0gpMvVbVwLzaWJ+WeVay2QiumjAiEA3E4kIsyrJ8pPUFf1645IEYdG/9KaKzaFV8sYp+RC/bU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34485356},"engines":{"node":">=20.10.0"},"gitHead":"6651f183de8c0a997d20aa3a66fd3c3fa6ade79b","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606161708.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-6651f18-202606161709.0_1781629862195_0.3710869688746081","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-e2bf6b7-202606161801.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-e2bf6b7-202606161801.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-e2bf6b7-202606161801.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9d631e9d770c8ee785d58863f3eac3be5132fda7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-e2bf6b7-202606161801.0.tgz","fileCount":491,"integrity":"sha512-M+LVVgJiEeKDMHATP9Y/7Skm1DkPwKEbSM62o+GVlVPj9TGFWfNgWWHteynkmOeMpT3IwpumuLJB3O6xseeO2A==","signatures":[{"sig":"MEQCIAnZ9HeyBEyVVX+eQJpBfA3VwFBCUN3C+Xy1321OuGLvAiBhEzxg+nJ6sBuVwY5yPw9enK/u7Hg8HY89XXOW78jYDg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34486039},"engines":{"node":">=20.10.0"},"gitHead":"e2bf6b7dacf90be6c1290bafb557acca1c6682a6","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606161708.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-e2bf6b7-202606161801.0_1781632965952_0.24194108376352208","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-e2bf6b7-202606161814.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-e2bf6b7-202606161814.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-e2bf6b7-202606161814.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"53b5f4bd12dc261ae50911c97b6f8144572c15a1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-e2bf6b7-202606161814.0.tgz","fileCount":491,"integrity":"sha512-q61cS0/0JV13rTUPbsrkiCX4qkllfTnhFni7Bo7KSvtMiUA4z0PRrCqMTYcAZkZe3Vp4NpZ5I/fujcMkCvepkA==","signatures":[{"sig":"MEYCIQDmQIi73YQi5SSG/uE1QCo+gkc66RoAoWUzU5zFNGOT5wIhAPYbUC/qyxmgWEd7vsS0zPwwpMCVBGAc2645UijhfRBz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34485652},"engines":{"node":">=20.10.0"},"gitHead":"e2bf6b7dacf90be6c1290bafb557acca1c6682a6","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606161813.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-e2bf6b7-202606161814.0_1781633743327_0.2089435524764136","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-779dfdb-202606170816.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-779dfdb-202606170816.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-779dfdb-202606170816.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8b35562c0785cce9c2d40e78ac47a6ec8ded539a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-779dfdb-202606170816.0.tgz","fileCount":491,"integrity":"sha512-53Vg3YzwVnGKcA1ouZCw3Yy2Uz/Ls3qL0aTXUppsbg8R33xrHEqlfK/VF8GBZ02hM2SE+7aq1madz+oUnyTizw==","signatures":[{"sig":"MEUCIQDwxM2P28HGv7aJ3ECFrw//ak4Tcl/T8MZFPVqtQoYxwQIgQBM3aX9KcG/2BuPHHTZSnCUdY8fSTSXneH9wdXqTcCM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34486138},"engines":{"node":">=20.10.0"},"gitHead":"779dfdb966c762e25c77337dae4de5633252aecc","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606161813.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-779dfdb-202606170816.0_1781684282793_0.7479237698350376","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-1901d41-202606171210.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-1901d41-202606171210.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-1901d41-202606171210.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9c3084a389bbfb053fefd54130ad289c7055c0b4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-1901d41-202606171210.0.tgz","fileCount":491,"integrity":"sha512-s1QGj+STVzZ21kZvdlBbNHpZugsZ9tDoWRx4EId84jX1JcYaWqXoCpfHLyNoo4hsofYkzxbZXDu4lK2LiyI2hA==","signatures":[{"sig":"MEYCIQD9ouWPuWFSyZDC5kEsaTsitKPeotxT1ghg6hPi3xGEpQIhAPS1Y+6aD7SIApDSrf6cjraQca7yMTF8QlX5FWOSOG00","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34485807},"engines":{"node":">=20.10.0"},"gitHead":"1901d416e3ada65a5b05b73186fbf2cab13c30d2","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606161813.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-1901d41-202606171210.0_1781698327401_0.1521654312162266","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-a7ffe25-202606171322.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-a7ffe25-202606171322.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-a7ffe25-202606171322.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"86f4faa0a56dd8d1e38019a2fa9f30cabb9711f6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-a7ffe25-202606171322.0.tgz","fileCount":491,"integrity":"sha512-BKJl3QQwrndLF2FWTuLFVl/bNXS2mZBArmaZMkGnQZuOIkAnIz98LkMFi4bpnSOTXRRjCvBAuFanQ0604YWMrw==","signatures":[{"sig":"MEYCIQC7dz6m+YwtwGkJt41rvGXYyJ2m/C44lcApyI/kEwMNxgIhAKGdOzu+LHahoQ9Xhe1Um6ePrNGRGjQWffUBK2vFuFSl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34486072},"engines":{"node":">=20.10.0"},"gitHead":"a7ffe25c12bdd025053f50700935f326b1f7c8c0","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606161813.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-a7ffe25-202606171322.0_1781702631362_0.988703350857701","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-a5aebfe-202606171425.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-a5aebfe-202606171425.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-a5aebfe-202606171425.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dc7c6cd8775b3b6b14bc8ce925c4a58430d43d5d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-a5aebfe-202606171425.0.tgz","fileCount":491,"integrity":"sha512-gkgPx6D7L01wIaM6KkkL/yKm3t8YtxAgHNwThX8ui4JEbKx7o/2ZGndU9gRNC+XEai0Z/OUCpmI39ffia0QYFw==","signatures":[{"sig":"MEUCIA9Q5Q3a0OltQp7USDHM5lbawCErr8/g/4gT1Ss9uorCAiEAjCBDsazyky2gl85Ggw5wFm4Dh2qiokOdA7LuAlOp8/c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34485856},"engines":{"node":">=20.10.0"},"gitHead":"a5aebfe19d0aed3ccf387758baa3a19a165fbf6b","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606161813.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-a5aebfe-202606171425.0_1781706435822_0.20836912051897194","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-83ec01e-202606171901.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-83ec01e-202606171901.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-83ec01e-202606171901.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"419a23d26f2cae9aac9866ea0549d9b4a415caf2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-83ec01e-202606171901.0.tgz","fileCount":491,"integrity":"sha512-kvxepe7j+MRM/bPFLQUFMbW2P9okp1UWPKRpS/EYAc12fkbTzmI4a7eD4W53fiwbs0eaYCTk0OrBdU6Iw6McCg==","signatures":[{"sig":"MEYCIQDvu7PeuHevEeiTkPKSNsEBfApD8v0LY6VvIr2OeimlbAIhAJIDn7dCMEdLTBUDUw60ZOO5z/oWp4ntgj9wO02r7XXQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34529222},"engines":{"node":">=20.10.0"},"gitHead":"83ec01ea9dcd101008a8a8f573e780ed83c9e347","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606161813.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-83ec01e-202606171901.0_1781722973966_0.9729159301467816","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-525a175-202606172041.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-525a175-202606172041.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-525a175-202606172041.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2e529e6ab004a11ffa452234b0830a28ceb4a591","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-525a175-202606172041.0.tgz","fileCount":491,"integrity":"sha512-SEgtT+1Tqecd45bMtzYFg9+Nf3sxwllzzvoXvzQh357vYpe7g5Ugb3sh8mSzZJA99xzVVMdrZ9eo8GW/n7/IkA==","signatures":[{"sig":"MEUCIQCkEqILCBxB39TerDfW/EMCC8Ex7waJJkxs6BkgynQR2wIgITLmLVnsweZynMLDpgemxqz8NpqIBfOqs1ub3qsG1ow=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34551337},"engines":{"node":">=20.10.0"},"gitHead":"525a17561d1dee8e42cc82c3203b66beea6f51c2","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606161813.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-525a175-202606172041.0_1781728966295_0.40882602706812143","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-fab5b55-202606181341.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-fab5b55-202606181341.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-fab5b55-202606181341.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c51a09b41f2e57d3fa0396e57957b964f4d0b98e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-fab5b55-202606181341.0.tgz","fileCount":491,"integrity":"sha512-MyuBiHWjHkLLZSDC/Xf2CY1BoYrAiRMK3BfUohUmIqPIw+OTbT9VIVbBpOWoME03P27DP8y0J8607KDYIR4oUw==","signatures":[{"sig":"MEUCIQC+vSwkMixRUey2nQnrcBd1BGTonjpuiNNvUQvG+f1Y+QIgJ7r6A3Ex7lVshmqmIBpld83cco0t6h3OJx/46WWpwP8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34551703},"engines":{"node":">=20.10.0"},"gitHead":"fab5b55c7c3627cda0409ea2c197dc9bd6e72fea","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606161813.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-fab5b55-202606181341.0_1781790211268_0.47226780385255274","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-fab5b55-202606220921.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-fab5b55-202606220921.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-fab5b55-202606220921.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"59fb8be2883e6a9a0b837a4dd338f41be7ef35d3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-fab5b55-202606220921.0.tgz","fileCount":491,"integrity":"sha512-Zq1zouvPa1n1LUIeTPbO9ANXCF/lje7ZUMmncmSxKQlGT4BR4qkfRCZBJTY6t+BKaokWrhbTNnddSZHrOwYgTA==","signatures":[{"sig":"MEQCIB1iS+XjvSlXgTNrKZZoRUeYycDPBmPhayEGb7mo9ek0AiBPC0V9dtcyDmLxHHLKLLYpENT6dADmbd0ql4VzNUFaqg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34551410},"engines":{"node":">=20.10.0"},"gitHead":"fab5b55c7c3627cda0409ea2c197dc9bd6e72fea","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606220920.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-fab5b55-202606220921.0_1782120187570_0.05508229232120665","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-fab5b55-202606220937.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-fab5b55-202606220937.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-fab5b55-202606220937.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0a2b4e73b5abf0269da4e5e915c24639e23b68ee","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-fab5b55-202606220937.0.tgz","fileCount":491,"integrity":"sha512-4k2IuNba/wphk1xLEvK4Y5BrcdngLMNipQ6WERYWqsYXePc6xpzUPaUb4uLQLZ9mTO8nfrfUy+5yQRNRxpfiWQ==","signatures":[{"sig":"MEYCIQCoS/vfQ1hzXKCrHzHevBWzFwTC33uwG0l3EYUIij34NAIhAJTQlyhCjmzlSOOBpQUbp5pgFjjNVJZEWyU+1OltRNZt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34551468},"engines":{"node":">=20.10.0"},"gitHead":"fab5b55c7c3627cda0409ea2c197dc9bd6e72fea","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606220936.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-fab5b55-202606220937.0_1782121138617_0.9521558755062833","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-656f3fb-202606221443.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-656f3fb-202606221443.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-656f3fb-202606221443.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"224102f6685638f6c7aed27775f0de9afff15419","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-656f3fb-202606221443.0.tgz","fileCount":491,"integrity":"sha512-Hi3jWI1Uh5/vP/QdhDV1z4ScEZj7XVO0dtRTgzwCMg1Sl3THj8SD0myIcFYgEkBH1ZpbHYdJyG6XVJRkEulh6Q==","signatures":[{"sig":"MEQCIBLd6EAUHHPSC/UtbUfLK3HotwDh16KWd8sgXf+pc6LcAiAp9NOD551N2tDzMIIjQLCgPQSTFHTLNR6rcmU+VMUdFw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34557835},"engines":{"node":">=20.10.0"},"gitHead":"656f3fbaf91435bbc529a37bfde2e2d647f29634","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606221442.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-656f3fb-202606221443.0_1782139484617_0.5219483887090053","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-656f3fb-202606221458.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-656f3fb-202606221458.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-656f3fb-202606221458.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3bba6f13f554b2818446f98a76afd728f9557bab","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-656f3fb-202606221458.0.tgz","fileCount":491,"integrity":"sha512-ZKtcIXgUaXVEeBK5JI4WbQRnj5Meeh44qjUdI6hd329q8xVghyT7BpQ7qWNQ9+EBmPyU29jUCD2GkLa4lAaMew==","signatures":[{"sig":"MEUCIBjDZJs9YHRB2L45qzqGrPFrVRuLRd1PCW/erURAEqASAiEA3HljyNR1DyeHS0pNJrzVyfoNu3iKxyCzei370R6f9PI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34557300},"engines":{"node":">=20.10.0"},"gitHead":"656f3fbaf91435bbc529a37bfde2e2d647f29634","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606221442.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-656f3fb-202606221458.0_1782140389397_0.907895100592526","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-656f3fb-202606221510.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-656f3fb-202606221510.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-656f3fb-202606221510.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c9f38a1a2a06a631f8f79c7f85ba7c8df325c9bb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-656f3fb-202606221510.0.tgz","fileCount":491,"integrity":"sha512-z05lWU56L9yJQYGITfyjmq3lYilBl7wwGVeJzCm0p6hSiahrllNTPSGrdFIjIjqQqihqQEyrfwMJ0xMoR/i1/Q==","signatures":[{"sig":"MEUCIFB2HlSCcuG/Z/iFtA0UKTnyAStC3GwrC9O21LNNpSooAiEAxMrMTF8fr4JeRT87gy4Fxv4yIJb3ikxH/N/A4RO3f1I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34557740},"engines":{"node":">=20.10.0"},"gitHead":"656f3fbaf91435bbc529a37bfde2e2d647f29634","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606221509.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-656f3fb-202606221510.0_1782141111592_0.12530116147433357","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-1543f13-202606221533.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-1543f13-202606221533.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-1543f13-202606221533.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d1634d0f95b3c74fbe534bff3151094d20b306cc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-1543f13-202606221533.0.tgz","fileCount":491,"integrity":"sha512-Ktn6/y3ejC+S7YM5tSO63y8DNyYuODaFezVNddFhzaA28XxCQbyuKJoRhv402prS9UA33YeaX6zNkuNnuxOT4w==","signatures":[{"sig":"MEQCIFkQiFiRysPLgRxqIJ84c/HPp3xoFdQWm2VQjj6Uch7eAiBz/xztvogk03KQFww4tkyKxMbYrW3oKvse5NM0WVfyfg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34565983},"engines":{"node":">=20.10.0"},"gitHead":"1543f13cd750c304bc2267cfdc92edb0e234aafa","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606221509.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-1543f13-202606221533.0_1782142499692_0.7184230079574958","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-1543f13-202606221535.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-1543f13-202606221535.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-1543f13-202606221535.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"613f5b851d841d6eebccda8a1dab53fa86c3e9e3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-1543f13-202606221535.0.tgz","fileCount":491,"integrity":"sha512-2XGuCCDQpPgCY5njv5HG0cnuiu2PTtbASFCS6AxUYW975Jxuz1fjiGmbByF0mn6ChMjBWeQ2sy+sjNPWFeRLXQ==","signatures":[{"sig":"MEUCIQDmebsqtFpXr3qcWIRYoaKaFrqIFEJF9aED5HEeRIad2QIgbSJtCP9DrepkoeHpPyP1iu+klVgCWJlT7JJOnzEYn1I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34566298},"engines":{"node":">=20.10.0"},"gitHead":"1543f13cd750c304bc2267cfdc92edb0e234aafa","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606221509.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-1543f13-202606221535.0_1782142624387_0.1106302077145005","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-ea0d301-202606221543.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-ea0d301-202606221543.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-ea0d301-202606221543.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4e69978f316d6836f56141c40726c745644fe4cc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-ea0d301-202606221543.0.tgz","fileCount":491,"integrity":"sha512-aa1UDu/kjwj+HnOP6U7cp7eRr6QzfQi42GmVIOtv4hUIXoWVrianQ//hKirxcAOdiWAQw968b9pitxSzW0zfIg==","signatures":[{"sig":"MEYCIQDjYBTZP3qLil5HkYek4iEsST67JserZmJS8Za2/F1A/AIhAO0a9OY2YYqr6wkcAgKM41EKevf8nEWJYS4SDM0FFzO4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34580390},"engines":{"node":">=20.10.0"},"gitHead":"ea0d301c9a8102bf2fa5ab3ca3c1342ab9f1af74","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606221509.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^25.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-ea0d301-202606221543.0_1782143111636_0.8972153030931203","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-35e4066-202606221547.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-35e4066-202606221547.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-35e4066-202606221547.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"02f2b97e221163c0f6351f2b1e773cc91034d4bf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-35e4066-202606221547.0.tgz","fileCount":491,"integrity":"sha512-VXJUFgPFUMHjNFH3uc3XBKx7shKZWUwYTgoPrTf4lcD3wggBdOY7DMjo8VYjAhBAiI0jBHoSqzKd9vJTRwl3xg==","signatures":[{"sig":"MEUCIB4D7Gsk5EZooy/DcCfyIALxAl7ls8HkFhaThwcIRoL+AiEAzO4KOHux/dthTsThcQ+URpQnkTpMZoTo8hgetgoIOys=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34580645},"engines":{"node":">=20.10.0"},"gitHead":"35e4066e6a9e1c22a963e340ede57d7852f0504e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606221509.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-35e4066-202606221547.0_1782143375390_0.7870000238856312","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-73b7344-202606221552.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-73b7344-202606221552.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-73b7344-202606221552.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1cdda5f0a1260ff2823f43fbd62174f07a653d7a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-73b7344-202606221552.0.tgz","fileCount":491,"integrity":"sha512-VJFhidbqOI57WmWSI9XVPJnMgJR2X7HVxhcoRnjQ5p147ejTlTbQptCIcvoyDyij+b/+knUH+OyIdUs0bwUjEA==","signatures":[{"sig":"MEUCIFYVmHYu9oNVY8Bnm1xsC6J3QzSlhKolYus+gE2e1S9XAiEAkBL+HjLXh7r7kMpEHYkxteH1EEmCUA0ZjmhRsFYaCVk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34580448},"engines":{"node":">=20.10.0"},"gitHead":"73b7344cfc1969f572c0155a3631fd84c73fe3d8","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606221509.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-73b7344-202606221552.0_1782143664263_0.33207112035504993","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-b45029d-202606221611.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-b45029d-202606221611.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-b45029d-202606221611.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7dcc0c5522e1d61a120875840e872497057bbcb3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-b45029d-202606221611.0.tgz","fileCount":491,"integrity":"sha512-6gNb4owygblKjbaA5taY9pbUW2TzSDkD4fiLkd1ExYViYb9PxrxiSO4p781hflFZKpXr7ySUqbAiWfjdvxj1dg==","signatures":[{"sig":"MEQCIATq4kdgpYdCLNgJnDQlJ8NDT5uY2Sn4WWfJGYkDlw0LAiBRkG6nWKccMYN8ysRWZKHPGE5r6WC6R3PgVEclCRUPbw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34580442},"engines":{"node":">=20.10.0"},"gitHead":"b45029d0c0b4f0f6945d363d295e43db9e8d1a89","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606221509.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-b45029d-202606221611.0_1782144799032_0.6226666078627967","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-5285e15-202606221621.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-5285e15-202606221621.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-5285e15-202606221621.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bd6e3b05fe106b7213c2d1c1d5522ce94926da5a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-5285e15-202606221621.0.tgz","fileCount":491,"integrity":"sha512-0hOarF4r2gsqQzMLVuoKQrYwJQVjl3q4vSFD8OlDl0RDLvTnszXrGuMUsHDl41UyiqxV9va7P0Vg29TauywSYg==","signatures":[{"sig":"MEUCIDZPyy9jhC0umX6yx7gzvKtuPQFs0R3IlSFNtsZCo7ujAiEAqj3nWKD0zFi2DsCASSAjDQHIryadC/7ig+r/YyUaHvs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34580736},"engines":{"node":">=20.10.0"},"gitHead":"5285e15117b13068c2ea5fb8f5fdc8363a18338d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^7.0.12","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^4.0.2","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606221509.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^3.3.3","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-5285e15-202606221621.0_1782145384009_0.2484778508556118","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-b7507dd-202606221633.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-b7507dd-202606221633.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-b7507dd-202606221633.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4fa9396f1f64190cffce8055a79757e23c7d54f9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-b7507dd-202606221633.0.tgz","fileCount":491,"integrity":"sha512-pnuEidXkdhQCck/WyLrSpGQ2UjJOzjHoWIqMnkDHrtA4SWqkrzZgM6hpI7nKh6l0iZNaRxZobrmJPT9uXDsSjw==","signatures":[{"sig":"MEUCIQCU3bZLHcQ4c4uoibdrHEGneKgDxhyrZ6IZzvNFj31WCwIgL3QHqhBTqwM1gWsvVna7JcRpDuzigzQuNJeRLp7aaSs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34581031},"engines":{"node":">=20.10.0"},"gitHead":"b7507ddecb6f2f84923ad87e6c7e9a14dac4d9f2","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606221509.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-b7507dd-202606221633.0_1782146127873_0.8841114215086667","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-ca67a02-202606221636.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-ca67a02-202606221636.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-ca67a02-202606221636.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a4752108469d554427e48cdb88f0be2b119f6997","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-ca67a02-202606221636.0.tgz","fileCount":491,"integrity":"sha512-zhBfCJnXpncma5OLHKUKcG0ucG2pfxIZ+GT+YPCLWpM9NJJDdLVATY5/LFaNnaCq5p8Ugpwr4GiZ7TciQtHyjQ==","signatures":[{"sig":"MEQCIHYAARukxPa4q1nkN61E9MbnRH5Nm5YzQD1Uu11sZt8BAiBsmX3G6sMEgxNIYwPYDrKjbXxuqur9jhedLcixDEN39A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34581460},"engines":{"node":">=20.10.0"},"gitHead":"ca67a02282612b1d930bcbdd7121dd8e8f6c80e8","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606221509.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-ca67a02-202606221636.0_1782146282463_0.10267494880498806","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-eb0e5bb-202606221651.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-eb0e5bb-202606221651.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-eb0e5bb-202606221651.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"38689e926fdfc824ec4c7c8992e72629629976eb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-eb0e5bb-202606221651.0.tgz","fileCount":491,"integrity":"sha512-8zULe/xuxk6zRBTAQVyhr8GUU+AQQ1Ec5jhFiomvp/+91syZCQKKHVW1k9VSZXT2mRi+WMmlZ8VFbuHWOeAICQ==","signatures":[{"sig":"MEQCIEDXs6xAxkSYF/nEmDvXrFpRxSDLXK4Pp75cAwVXu3HpAiATNvLDTd+BwwmMP5LVTTG+DFGfIJkToamoNBOIVprmVg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34581184},"engines":{"node":">=20.10.0"},"gitHead":"eb0e5bbe37a05636e5629f39534cba181c7465de","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606221509.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-eb0e5bb-202606221651.0_1782147167366_0.40900204451673416","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-47afd97-202606221712.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-47afd97-202606221712.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-47afd97-202606221712.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"51ebcff725c0c793f26f576ba2b4c279193097f9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-47afd97-202606221712.0.tgz","fileCount":491,"integrity":"sha512-FGLJNNIjtfTXDcTqnivcYJ604tfZsN/zEel3amugX9t5gaOs5BP3iQd0SXHzIbr/vWRR3uU+zMvmECoW8qv0JQ==","signatures":[{"sig":"MEUCIEFL6V72FOK07uF//yPmKrrZHswenu5kbQbQOO1SFN1DAiEAwFFuBMPMHjsSX9jJJCVgSJtypxzDjvGvs+XjY33HR6s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34580973},"engines":{"node":">=20.10.0"},"gitHead":"47afd97ec614760914c95bec1a39a721a4cf3b51","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606221509.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^7.0.3","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-47afd97-202606221712.0_1782148459352_0.4913657279478325","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-4776364-202606221716.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-4776364-202606221716.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-4776364-202606221716.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e162a84d03ffcc1f4f16aff8a67bb3b768ba26db","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-4776364-202606221716.0.tgz","fileCount":491,"integrity":"sha512-F4VFdERiPVw7HvL4/UYrXtnwWbsLSGivEU//38A+b5KdnPSFNxZAOQStyDsCO5va04n2S/YhPZC34NRgqjKunw==","signatures":[{"sig":"MEUCIQDMuyYutG52r48kqGJIevszVrNZbQsDuobHqFD2t7AhqAIgRkJ+9jOilmjcZb09C0HJyckBXKIm8oKgdxuoA708Xg4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34464189},"engines":{"node":">=20.10.0"},"gitHead":"47763640bc513e86071a1c38d32058f42c7f2238","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^16.3.1","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606221509.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-4776364-202606221716.0_1782148687680_0.9082982841064444","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-49fd3c8-202606221722.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-49fd3c8-202606221722.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-49fd3c8-202606221722.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6a9c241a491c047d0cb18963401781b5864f321c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-49fd3c8-202606221722.0.tgz","fileCount":491,"integrity":"sha512-gaTiB0ww5vfudWg3++dqaqL4i8reMRakpanv+j1gmCiBaNlahprAdpthxVreohgsfHf8oEOmxyTIuFNixXWKlg==","signatures":[{"sig":"MEQCIHo7C72G7temLaXOU5pwYRsiBj/2DLmSNM+IVUpxs6YGAiB196pG8HBNzPRpQDiRVWEo1PIxwFNy9pK3u/3C2JAxDQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34463969},"engines":{"node":">=20.10.0"},"gitHead":"49fd3c870a4bbdbf049c3e8023656ed3b156061a","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606221509.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^8.0.1","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-49fd3c8-202606221722.0_1782149037445_0.7096898288881439","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-c38ed8d-202606221732.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-c38ed8d-202606221732.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-c38ed8d-202606221732.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7e46fbfc23ea3da8641d9caa055a2300869d8ccc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-c38ed8d-202606221732.0.tgz","fileCount":491,"integrity":"sha512-6P3VHXsXlTh+d6B1SmO2xWYpVgsfkGsS2UDQW+KMwcr27jkUGC66oe6FbqzFwcAEe6WO5tFdM/PHz9yQP0eQmg==","signatures":[{"sig":"MEUCIDLmpcZGVHu+Q8ZWDPoiZI4jJ/G/ijnfL2lXAb7VLMbYAiEAmqAfwcQcWx5FEVlZFpnv3BfCBcbcQwINBg6cY/mO0u4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34464459},"engines":{"node":">=20.10.0"},"gitHead":"c38ed8d5dbbcff0ad2f0b47099eeaa1c44f884f0","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606221509.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-c38ed8d-202606221732.0_1782149640379_0.9655954285490913","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-8fd57ac-202606221739.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-8fd57ac-202606221739.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-8fd57ac-202606221739.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d446bee9ee83a8d05b61ca20caaef10f22835290","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-8fd57ac-202606221739.0.tgz","fileCount":491,"integrity":"sha512-Uam2NYC4y7JdwSBuHGFv60RxgdhQYCqCOoIOJO9pmUF0T8vEPPQW1arTIp9TLkpSjwxr57vUxsiHiYVvsErLbg==","signatures":[{"sig":"MEUCIQDmjh15CAHu+sE0LW+ua8uAClbzGp/a0DF/IOXFh7tq1AIgGw2U/giGBO6ZwjHQXazslVdZAto8rVL0ezUxDK2/sbo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34752089},"engines":{"node":">=20.10.0"},"gitHead":"8fd57acdd64e15e797d63a380c21f93941f36037","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606221509.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-8fd57ac-202606221739.0_1782150042140_0.35959156665166603","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-8fd57ac-202606221754.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-8fd57ac-202606221754.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-8fd57ac-202606221754.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4e62cca3f8d62a824dd0c68b5ffe6e0c6c530a3e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-8fd57ac-202606221754.0.tgz","fileCount":491,"integrity":"sha512-15jN8fzVZJ2cvn0Mk0wvTLa+1g8+u2m196rjvBlVMxB/OMdF3PCRha02wCFXAIHl2qwhuAhK4+CicmAgyh+Cwg==","signatures":[{"sig":"MEUCIQDatO9Ig/Lb2DxoAigltfnHkItJ3aLuOmoozFgEMlYvZAIgPYXf4O6Htv/r94mcGCMLemri4Twjdgp20MM5senihqU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34752143},"engines":{"node":">=20.10.0"},"gitHead":"8fd57acdd64e15e797d63a380c21f93941f36037","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606221509.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^0.0.34","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-8fd57ac-202606221754.0_1782150951676_0.7001683319771879","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-31d245a-202606221927.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-31d245a-202606221927.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-31d245a-202606221927.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"534ee9dc808feb52bd29ebdaaf6bee8bd9dfac10","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-31d245a-202606221927.0.tgz","fileCount":491,"integrity":"sha512-lo1jF7YE/GX0pkoUXizNDty3fxA/VX2zRTm0TLM32KJWDxxKTqRqcfrJ9dKQcs9UWCyUntKbpiT4VMs0WKUi4A==","signatures":[{"sig":"MEUCIQDN4GPP5CZwydABD9BO5l+JpAFDJuJnUpZlOEPs8oKptgIgPuwJoEdOgmmn0hMSbMQ6ixLDYt6vDrEJbPaFKimi5fo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34751978},"engines":{"node":">=20.10.0"},"gitHead":"31d245a92239a253ecfc13da60e70aa63f1c8573","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606221509.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-31d245a-202606221927.0_1782156520496_0.04700900709231992","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-31d245a-202606221946.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-31d245a-202606221946.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-31d245a-202606221946.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"56a6930de7558c9c646ab3c92e9fac3e32f78cd8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-31d245a-202606221946.0.tgz","fileCount":491,"integrity":"sha512-zM/96RbYqu6BFNnRv15Q2Yn/npqxPZ2sKL8V/DhQ8gEF3md79CRO+WDxNs4AiojF3eibLLtq47WhPD2WOermIA==","signatures":[{"sig":"MEYCIQDOlEmB0/oCkzlXM17xbhL0GPlEpH7e9xFigqeFckG72QIhALG+ROxvb5D7WFU7x+lBk+3mp4je+TUjIo2SaomqEMsM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34752144},"engines":{"node":">=20.10.0"},"gitHead":"31d245a92239a253ecfc13da60e70aa63f1c8573","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606221509.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-31d245a-202606221946.0_1782157720652_0.4751321001415374","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-fca6d31-202606230735.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-fca6d31-202606230735.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-fca6d31-202606230735.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"97b57611605f209cd511051ebdcb08d4d71d78b4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-fca6d31-202606230735.0.tgz","fileCount":491,"integrity":"sha512-T7yhoSJGUXFGl1snK5n8A3nRJMOHjNudOqEoDo3LB9nnynq4Bj1SbWDI3f3OuAVpxrFaCFs5DJnjdtmT98g87A==","signatures":[{"sig":"MEUCIH4fUsPwtG+Vlq8e+BafPrTFsDohGNMTomfiTjgNF2aaAiEA1uAi9mUnZcneb2KYd3xM29eWO+ggZfi2NmY70q1TvmQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34752177},"engines":{"node":">=20.10.0"},"gitHead":"fca6d3129057c7078ef78f01d550bb6d7e8c9bb8","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-0a3e265-202606221509.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-fca6d31-202606230735.0_1782200231625_0.12880287181481553","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-fca6d31-202606231241.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-fca6d31-202606231241.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-fca6d31-202606231241.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"12b1601fe268d4c4f85d66ab7f51e729a530eabe","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-fca6d31-202606231241.0.tgz","fileCount":491,"integrity":"sha512-QuVWQvivGeY+wbuUlzdDqry1D4E6Mlh1m89/3mvA6T0WwpAGEcMt/UlRewGFLRME1p8YUnOxFpoT2TjeEiz47g==","signatures":[{"sig":"MEQCIA58KSD5+OTyghu3cuEU5N7VDoBJ6S2Wv0E48brTshPdAiBh155HSSBsupRkTlS2fiGGrPurLILWLyC/jzE6nQCgHA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34752236},"engines":{"node":">=20.10.0"},"gitHead":"fca6d3129057c7078ef78f01d550bb6d7e8c9bb8","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606231240.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-fca6d31-202606231241.0_1782218547676_0.46562851008860107","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-4643d76-202606231340.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-4643d76-202606231340.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-4643d76-202606231340.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ce3d6457212194bb3b7d6457405bd1720b2d0629","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-4643d76-202606231340.0.tgz","fileCount":491,"integrity":"sha512-7JG4ivHtBUcHw+WBLYeUZfkkttOS0H0Y+zlsvx2bkaUo58Sic5K1d7AhGv5BlpgyzvgXM5vMRTe0cnAHjE/bqA==","signatures":[{"sig":"MEUCIE+Grmuy4S/nzSXbErbPKWNU9sl4FznZhTMFN/675A3fAiEAiPJHYkcm9KkekiWUPgzAwTTBGAxrp3yJv8725s5Zl4Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34750372},"engines":{"node":">=20.10.0"},"gitHead":"4643d76605b99f76aa0e057e17e69b73a4e8f4a2","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606231240.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-4643d76-202606231340.0_1782222120870_0.1700972451373166","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-8d941a0-202606231423.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-8d941a0-202606231423.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-8d941a0-202606231423.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dbbe1c883822afee6e9a5478e2f0ed22e98e55d3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-8d941a0-202606231423.0.tgz","fileCount":491,"integrity":"sha512-7j7Tm/9mywzM9EsRk7jTusvhslYA4sctdvGKfnG5tPg2y+diwzOJPNwcdwKNDjhUHL6vnbWCVCdmOxGYMD0d2w==","signatures":[{"sig":"MEQCIGF1kG7Awd3GqHeD2zmy6BY1S4bbF9K9iDGAW/RMGrC0AiB93OCR9Hmm0qzhcQcwGScgZPeHG7MSrKdnyKMwsaC3eA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34760703},"engines":{"node":">=20.10.0"},"gitHead":"8d941a0647f8808bdca08129526e9bfaeda8f4d4","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606231240.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-8d941a0-202606231423.0_1782224737978_0.4345376502906133","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-14c3010-202606231601.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-14c3010-202606231601.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-14c3010-202606231601.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"69a3c87233cc2caa7564a21486ef22f9fa104a46","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-14c3010-202606231601.0.tgz","fileCount":492,"integrity":"sha512-DdgVfgZeA+icPndiQuEc8n19ymFuHh//2cIpwtGlXQDXY+VtORGEL0wTTtwYYZOcLnHvfiZE8xmhAOTAGFfYpQ==","signatures":[{"sig":"MEQCIEBO7DSqhf+sLxsEOU+edkIcv806f7WyLoJ5CuG41xfYAiBd2r0FCJ5UKUulFnVZ9Ahn9RbPw3f4AjWK4wWWzuy73Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34761347},"engines":{"node":">=20.10.0"},"gitHead":"14c3010d0bd92bff1f36e3c9184dd39a9cc3f14e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606231240.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-14c3010-202606231601.0_1782230603417_0.3956379387167146","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-01e79e2-202606231646.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-01e79e2-202606231646.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-01e79e2-202606231646.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"80f67936263d93ec2c871e9b9d7a6aeb07095a9b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-01e79e2-202606231646.0.tgz","fileCount":492,"integrity":"sha512-q5AxntULeN2879coqxsvnAqy5vczAHm1N78SiPo/G1a+wsed5BzziBqId5eLCUVZtvBrsAo69XZ0ePh/JR6UVw==","signatures":[{"sig":"MEQCIDdNjOBFzQ8VLw42wp8cTCigSpaMfOg1iN9Rtf4phcS/AiAtcxQWLZwRKgF4RuEq6hizQhOfhXjuKeylTdCYc11tCg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34761679},"engines":{"node":">=20.10.0"},"gitHead":"01e79e25f94425947c3c55c2455548bfe8ecb94f","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.6.2","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^5.1.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^9.3.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^10.3.0","@fastify/swagger-ui":"^5.2.5","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^7.1.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606231240.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-01e79e2-202606231646.0_1782233284562_0.5356250322560703","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-2e6ca79-202606241213.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-2e6ca79-202606241213.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-2e6ca79-202606241213.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b907d56b8b027874c93571b79565879771d41a00","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-2e6ca79-202606241213.0.tgz","fileCount":492,"integrity":"sha512-U36l0HPzYjTI1yHLeLDxRUY5YF7j04dhHn6xotR1caLP2I4aytTAqQacVsz+/RL10sWOXl5qdBEbO+tG8bcIjQ==","signatures":[{"sig":"MEUCIAW5gCHx3h+LtPtwPgiJY5UI70/dwTI+SZeSoMge4i3DAiEAo9+bfpVag8DCjJxk9YSufDDygCflnPsfH3sjPlWNkiI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34761700},"engines":{"node":">=20.10.0"},"gitHead":"2e6ca793bd16daf42e1eca2ac45b11d14ad4c503","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606231240.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-2e6ca79-202606241213.0_1782303311347_0.6534860905378161","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-2e6ca79-202606241222.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-2e6ca79-202606241222.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-2e6ca79-202606241222.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cd070d368c648b8b7c49c089fbe66938db21202c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-2e6ca79-202606241222.0.tgz","fileCount":492,"integrity":"sha512-eICDiy0jCxRQFpvqLm7rgu8kzHXdgrqla+6UkEtuFA4ANIvMi4KjnIQz5PaL+WOkeD4HhQhWc9MHCUXctvwhaA==","signatures":[{"sig":"MEUCIQCqVcT8wHY2FF3f4bUyCVhHQ0mrqLK/8Bu13ss4QeDkiQIgMb34dju1PCdVRG1kxfaUEoZ27xwRrsu1I7+ZnFW9Ros=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34761769},"engines":{"node":">=20.10.0"},"gitHead":"2e6ca793bd16daf42e1eca2ac45b11d14ad4c503","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606241222.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-2e6ca79-202606241222.0_1782303871413_0.04523941877112159","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-2e6ca79-202606241246.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-2e6ca79-202606241246.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-2e6ca79-202606241246.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5bfd67eb4f57cc546d147365d120a553cdb469ba","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-2e6ca79-202606241246.0.tgz","fileCount":492,"integrity":"sha512-FEcrnjVK4CX/P9UAAq2A8TmLIbXzjAtc6eF2aoiwNHm8QsPURKMOTPpzpYY33OqHokMGac9lpVSfn/0xusodBQ==","signatures":[{"sig":"MEUCIGgrhsVN+V7WAFOZJH6GWul3Y8Ykz6vh63h1xNCDeh/TAiEA3cQfMYBszYpOXPBzhhhXmC17dvfqldEuqQCVHOD3N9A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34761420},"engines":{"node":">=20.10.0"},"gitHead":"2e6ca793bd16daf42e1eca2ac45b11d14ad4c503","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606241245.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-2e6ca79-202606241246.0_1782305290556_0.9357495169073788","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-858ebac-202606241404.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-858ebac-202606241404.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-858ebac-202606241404.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1074a3239b7074c58151d4d21897fc40d19798e2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-858ebac-202606241404.0.tgz","fileCount":492,"integrity":"sha512-Z8+KlsnWo+g3ap5DfMtvZgfTcv8Qzg6Dim7SVzGoh4aKQ3PWWDXCbGNNYw/wx0sRsKaWvYVQZ/GcOr+G4ruImg==","signatures":[{"sig":"MEUCIQCPMIrRwO9zWLV/30nSUyJrsdGfJkKW0dKN61QJtibf/QIgWeg7QYyzNJcFbtKasiz2OuLrGV5Lb9t2JrypzZEvCHA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34761620},"engines":{"node":">=20.10.0"},"gitHead":"858ebac4d90ecd7c4cb7f69db7329b7aa3d8e07c","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606241245.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-858ebac-202606241404.0_1782309977339_0.3065963188766092","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-858ebac-202606241508.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-858ebac-202606241508.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-858ebac-202606241508.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"441be2d3f3b0548481d34bd84d9e880180f27722","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-858ebac-202606241508.0.tgz","fileCount":492,"integrity":"sha512-uqrd+plCqZO4GXnwmGWEuSTmLk+0yqAyNI4cL+KGrak25IGRYPhlbBjKDLPwipP7ibFemTx7Xiy2Smc34NtX5A==","signatures":[{"sig":"MEQCIBkQIU3y7NrR7swGiSD5BPpCHBaz99Rd59sLsUYc9hAcAiBlNwQdITcSGt8utQuLqZU9PlNz5154eqOeLZUUIODgvQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34761796},"engines":{"node":">=20.10.0"},"gitHead":"858ebac4d90ecd7c4cb7f69db7329b7aa3d8e07c","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.16.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606241507.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-858ebac-202606241508.0_1782313788633_0.22158057759438132","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-858ebac-202606251449.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-858ebac-202606251449.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-858ebac-202606251449.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a6039d285e523a707c6bf862e7bb9822d8453886","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-858ebac-202606251449.0.tgz","fileCount":492,"integrity":"sha512-SiCfat46ccHtNO6HJ3SQdaF/Bf5MUNwEqiIeISu9a71NQ4Hcoaw/FP35GmVNZvaTzBP+nlNb3fQKRS1XBMXZeg==","signatures":[{"sig":"MEYCIQCEd5DKuuOPknUAyipBaD/37Ti3/Z3ra/HblgFFRCNwkgIhAIY++ue2w5369gCYY00rsltfI52jJjmvbWqJxurs/mxi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34761792},"engines":{"node":">=20.10.0"},"gitHead":"858ebac4d90ecd7c4cb7f69db7329b7aa3d8e07c","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606251448.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-858ebac-202606251449.0_1782399069251_0.8685486829782647","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-9f6c480-202606260936.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-9f6c480-202606260936.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-9f6c480-202606260936.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7ff94dbee3cf9ff704915e95e68cfcbc51245e85","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-9f6c480-202606260936.0.tgz","fileCount":492,"integrity":"sha512-wvv2xnFXJu0VYytHAlPGXMNcbQg5jmZngTrv+so6I9TusJv0RMVqB8fNwn03KeD2YPt5lf0yWIfU2dlr0ai30g==","signatures":[{"sig":"MEYCIQD1ybQvS9vh6hPXozXSz4H+62qINCdm+unS1nJKzKUzgAIhAJK7otEA4hbTcPsg6vUxwPSIdIJoNYBmpKq6Apps3lW+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34761717},"engines":{"node":">=20.10.0"},"gitHead":"9f6c4800962aac8c4e13fef113ef6e622916525f","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606251448.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-9f6c480-202606260936.0_1782466660439_0.09319114891884062","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-9f6c480-202606261217.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-9f6c480-202606261217.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-9f6c480-202606261217.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cb1b1647f3522e9d1b22774d53e9f834f75590b2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-9f6c480-202606261217.0.tgz","fileCount":492,"integrity":"sha512-qnELeLe5SSGw/G8Vn5llIFJo1MNt2e8fil3Xw1wE4MMO7XbjLvaaY2i28FXz94h87uxF0HaNg/7UM2MeD2JaVw==","signatures":[{"sig":"MEUCIHKn0a2q3cpYccmy8Up56XKfR297Pj0Q0L8JYnFHYuSfAiEAlv04+2bpK/tVcQghI2TAa/8IfOGUHFqq4HSEsxpwBq8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34761953},"engines":{"node":">=20.10.0"},"gitHead":"9f6c4800962aac8c4e13fef113ef6e622916525f","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606261216.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-9f6c480-202606261217.0_1782476317556_0.8980077684472585","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-9f6c480-202606261336.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-9f6c480-202606261336.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-9f6c480-202606261336.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"28a0faa6aeb3fa467f96437b894b52c5ee517322","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-9f6c480-202606261336.0.tgz","fileCount":492,"integrity":"sha512-GR+7t25Y9lWauMJmT5+xx0hum5QkjX5bM834Yur3jkRJ6WtYtm3Nu2/nFBN1AgH6z9P5LERh0P7Eqj5c7aUdEQ==","signatures":[{"sig":"MEUCIQCnaustVQp/kKkkODirwTTT2XWEcyWjgYOiZ+T6FyTUZwIgGAcEot2UPlMQ2y8mLgGXdJp/IICNeCxGrtabW+S2d/Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34761668},"engines":{"node":">=20.10.0"},"gitHead":"9f6c4800962aac8c4e13fef113ef6e622916525f","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606261336.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-9f6c480-202606261336.0_1782481113468_0.4600581710472196","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-64c84a9-202606291311.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-64c84a9-202606291311.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-64c84a9-202606291311.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6869bdf1f727384f4bc3eefc6a61374be72280f2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-64c84a9-202606291311.0.tgz","fileCount":492,"integrity":"sha512-4eqauF/YHeTgFskXlT5YhSJF9di0PaNthhTVfOI9AlGVGwnJuu7nd5fNCeRvN5OLZ3F5kiCVhLBavYxUMBqcEw==","signatures":[{"sig":"MEUCIQCIA3Ktynjus5Gjm5Xob+1hoD8A93OV891kAS5g6m63CQIgHMRXp0oukgHywdZN6pfMm6x47hBUrowBaizsWyDVPGQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34808522},"engines":{"node":">=20.10.0"},"gitHead":"64c84a978d0a001d2410923b5e4fd1bfb31c7d49","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606261336.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-64c84a9-202606291311.0_1782738818527_0.028759513593655806","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-3664e73-202606291608.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-3664e73-202606291608.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-3664e73-202606291608.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a25b85ef65189149cb77058ff87a1249ad75d872","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-3664e73-202606291608.0.tgz","fileCount":492,"integrity":"sha512-AruoFCV5DQ+2y+atX/pubqZTwCd75eYibV3QHgz/jYlj2gi3qoYR20KGgx9jdEUdasaUFI6lL+k+9NG39G9sNA==","signatures":[{"sig":"MEUCIBT48iRn/G6PBbPL2mz9OxD/n+5O8sX+sdPRqGWQH7oIAiEA0T+ajPAIX8itF6ey6uGtdDQpaCGDnQRJKRPer6Jeu2A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34808253},"engines":{"node":">=20.10.0"},"gitHead":"3664e73bbbf1e90430e39b516bf1dff0c5a342d2","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606261336.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-3664e73-202606291608.0_1782749380065_0.07202705025742029","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-6711391-202606291613.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-6711391-202606291613.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-6711391-202606291613.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9e3f7b59914a63f8847031ff0443fd3b4603a2fb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-6711391-202606291613.0.tgz","fileCount":492,"integrity":"sha512-o+4s4woS27dQLM962rXH2jaPJLOhMgWfV5Pzx41Ti50qQ+6OWKKWJGsCHXdZxR36J1I12FQiVy6ycOdNhWq58A==","signatures":[{"sig":"MEYCIQCjE6z7XMs56rIFllUNikdmlYOsEoEJduWFjjPtGLTknQIhAKK0fQRFobhu94//HfJDFJ4zrUf6W8+NmkNl5+oYnKih","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34808195},"engines":{"node":">=20.10.0"},"gitHead":"671139186766cacd9dab7cf63cead2f641ef97f7","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606261336.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-6711391-202606291613.0_1782749691497_0.9810109549666284","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-8b2a15e-202606291616.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-8b2a15e-202606291616.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-8b2a15e-202606291616.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9ad3ab2a281359a2e6d55e0706fc5719c28ff5e7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-8b2a15e-202606291616.0.tgz","fileCount":492,"integrity":"sha512-9JSy9kTpO9qhaELni4hU8qq52JWhWgErwHX+Q1a4eRr43yn9J4Wr+yUbvQ2485gayfLKs9cBsATafr3F6oNLaQ==","signatures":[{"sig":"MEUCIFAHoum6VFSp9Yz5qViYOamQDWMDMf5RGtSPsWqDPqOUAiEAu4Ed64Ciy9hin31Tlpz4NiAFgW1gEEgKClMTVyh/XHQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34811431},"engines":{"node":">=20.10.0"},"gitHead":"8b2a15e5ae76426f3086948a3f787287751cb918","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606261336.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-8b2a15e-202606291616.0_1782749895690_0.4185780081420196","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-76ad163-202606291624.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-76ad163-202606291624.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-76ad163-202606291624.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2e93176a579941eacd2239654b86e653f69c2f8e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-76ad163-202606291624.0.tgz","fileCount":492,"integrity":"sha512-GAfS1NcPTCeM2zr5UlseEMPbA4ckEdvYmRAM9kvdUPAKFl0CIJlPZPBGY1DyJrY/jjPZqjWnn7vxF2JDaI5bpQ==","signatures":[{"sig":"MEYCIQDwjxjVRDiQ/6vmxUwXMqq7K758uZViUvStAc144BfgZwIhAMUxzJLAjH7KepQ0e8OFEyI0iE6aXCgsZdRYt4Wdchdw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34811267},"engines":{"node":">=20.10.0"},"gitHead":"76ad163038a9cf707e98625c4b724ab915d0ea6b","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606261336.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-76ad163-202606291624.0_1782750389909_0.0032718855452846807","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-5ab32db-202606291631.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-5ab32db-202606291631.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-5ab32db-202606291631.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4650e804ed2cbd59004eea047d25877e99d503c5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-5ab32db-202606291631.0.tgz","fileCount":492,"integrity":"sha512-kbcd1cc1Ey9DX7Ifl94tL17NZCoSe8+zOYayBccyuLjuEHVUBwJQ5ARpZAF22GJpLmmJiL4MY8yvFvFF3oo04g==","signatures":[{"sig":"MEYCIQD4AGL+FfEVTMVodnZ1biG0Z7ymcyu4oUYeW7G9pSpjwAIhAMAg+DTcCcvKlHbTPYxVIvkN99apV8y7D6ZYeTaz14Yw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34940690},"engines":{"node":">=20.10.0"},"gitHead":"5ab32dbfa639b53ab82e9820e4086c7cd598a7f9","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606261336.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-5ab32db-202606291631.0_1782750772346_0.7773386255283554","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-76ffbd6-202606291640.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-76ffbd6-202606291640.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-76ffbd6-202606291640.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"22df53610edb1e2958e29dfc2079873c70f51193","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-76ffbd6-202606291640.0.tgz","fileCount":492,"integrity":"sha512-2zRbYXyeT3w5jeI0b3dH9qbIwqDMeRtWfLmNZN1Yan9TacAcOwUnktTeHubf1O2MS3sQ5cAvdF14ptiZZ9AC3Q==","signatures":[{"sig":"MEUCIQDjIpjCHeJKnWkPpPkRmts6x1J1ijWypGCQdfDPeteD/AIgKJHqnouJ1D88oZ1IDZrMGZ2n7O5VF4NQZEdyIPPypqg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34940875},"engines":{"node":">=20.10.0"},"gitHead":"76ffbd61d9f302512ad559c804ff26e570f14399","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606261336.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-76ffbd6-202606291640.0_1782751330828_0.5949453893587036","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-53b95b4-202606291652.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-53b95b4-202606291652.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-53b95b4-202606291652.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7d90570167f95e0e21074a500381fd884b9670fd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-53b95b4-202606291652.0.tgz","fileCount":492,"integrity":"sha512-ayJB7R175Rrb9PwuJjcRN0/ZLcz4dP6XT/dNMAaRDKrj9bD7PeY2NzPr11N1lUJnc1eSuUsYmJbkr9LKAKX7Uw==","signatures":[{"sig":"MEQCIFopthX0hDj3Q468Z01tQDAYDp9VnBWsrVsjDasjawFUAiBT0CP0hDfNb0mo49v8EPFXwxBYUNzkIs8tzYI9oH6ltQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34808676},"engines":{"node":">=20.10.0"},"gitHead":"53b95b4a758807d3c646c536e42a90ff3042f988","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^15.0.7","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606261336.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-53b95b4-202606291652.0_1782752035400_0.01453310878616354","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-1d536ec-202606291717.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-1d536ec-202606291717.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-1d536ec-202606291717.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9333e8fd4357afa3535f67065c5ed3e1b78f921f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-1d536ec-202606291717.0.tgz","fileCount":494,"integrity":"sha512-8cEnxzyh58eDj8+EITSWUOEqropkT8SvD3KYl6lAooPkVcLkpS7uYHcNgAYxjeaqgdPmDxv2mPfsic+CLvg4eQ==","signatures":[{"sig":"MEUCIQCIlVRpUEdLWT3fBYpSPXivn64+Y2zec7IoX/Z5kPz7ogIgYo9Ct2De+7TEotXsdCrB+ilHVwgJpKEIjhoedX/NQUY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34592976},"engines":{"node":">=20.10.0"},"gitHead":"1d536ec38ed17b6b9e4f85890fb5f63971d52548","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606261336.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-1d536ec-202606291717.0_1782753561978_0.6886661336248829","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-1207675-202606291722.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-1207675-202606291722.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-1207675-202606291722.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"70f4fe94e9d931dc9aa6565547be6c4f06bffe8f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-1207675-202606291722.0.tgz","fileCount":494,"integrity":"sha512-Y0knNijdgWtYl6zlrWai/u86itDt9ZKIj5BertBfSKTu7yRj9wmftKqJkT2GoNRTVePXATk2fGH8SscElkHZWw==","signatures":[{"sig":"MEUCICDqAmjeQFmiq5ZsuF7T0k+Vn9Nya2MLTwA4Z4tLHj0zAiEA7n5ijfsgooCnY4jkh5b8bUfkaDcO+KpNe/YIemrtJq8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34593526},"engines":{"node":">=20.10.0"},"gitHead":"1207675b8207ad3febb168c1eec2d5fbe462e177","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606261336.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-1207675-202606291722.0_1782753869758_0.14409465875279492","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-7907ab1-202606291729.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-7907ab1-202606291729.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-7907ab1-202606291729.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ae170955710d18d86e54b761454954a7ce473209","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-7907ab1-202606291729.0.tgz","fileCount":494,"integrity":"sha512-+kCgjFqNfdK4qQDEvdq2FCqDts3F4gAdC7QXnKMsiDKGFdWW4G3BY057mDDFGFPvuKZDI7QZ1LHklV9URBWxHQ==","signatures":[{"sig":"MEQCIF4XabokZPk/Pxihf4xv1hFYn31ZCH1uL+WP3jD4v8KQAiB0dJY84oeTGg90SETMcUKSvIY1A+cvyuHkR12kMmOVAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34593437},"engines":{"node":">=20.10.0"},"gitHead":"7907ab11ece0c8424096da82f551fc3ef56b5451","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606261336.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-7907ab1-202606291729.0_1782754263350_0.03807536099290476","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-8a803bf-202606291747.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-8a803bf-202606291747.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-8a803bf-202606291747.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7fddb04a2841d8db487533330ea5e77b9f38020c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-8a803bf-202606291747.0.tgz","fileCount":494,"integrity":"sha512-6QQAOcoSfXiJh4PV+wZQDMSIgchNxRyeHwgrNuP7hCAkLczmLvgNtQRuy0Fu2RYjAJaM1J3B7nnWnqhXHAep2w==","signatures":[{"sig":"MEUCIHgPM05AtaIqhEBTDdelLMLU7DmL7+7s9jEhRFYkUosnAiEAzZmjIMIl1JB0N343BRNidVWiGfV9QLGr3O+ivLVjBvg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34593300},"engines":{"node":">=20.10.0"},"gitHead":"8a803bf32884a62c292bcb8e870d876c6553b784","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606261336.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-8a803bf-202606291747.0_1782755375347_0.40248109244784125","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-6e6154d-202606291752.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-6e6154d-202606291752.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-6e6154d-202606291752.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"36077fdc55ac36ef98867cba76d232cc55498cd1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-6e6154d-202606291752.0.tgz","fileCount":494,"integrity":"sha512-N/l/HEoKgeUMm/KduuZLgnIILG/bdkdhIIjKRzmMmAGB//e9dhNfQmSNMw4ivHrJDqEnfFHNwQEwBUg1Iv8xAg==","signatures":[{"sig":"MEUCIQDChzYPtwnJg8Fvg/5FSutaWVkEiiJUDA3jSTVOY1H0CwIgHPMCLQQ3ebEfJX3PEAaKxFnYmX3Pitvn1sFbuAjIuIY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34590664},"engines":{"node":">=20.10.0"},"gitHead":"6e6154d2f5d5a7312a732121a4c1b997af53e41e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606261336.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-6e6154d-202606291752.0_1782755645708_0.9686413696878589","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-6e6154d-202606291811.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-6e6154d-202606291811.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-6e6154d-202606291811.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"051adce714cee0442456a1693697c236b5ec2e29","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-6e6154d-202606291811.0.tgz","fileCount":494,"integrity":"sha512-IfN5saaiDynSmbCALYAXKn3DwKJCHk3yWJBddeFgaFp3cd8jgd+QKTvYiSs9Rr12WoZkIyFmTf7uX/R3xoJeeg==","signatures":[{"sig":"MEYCIQC5MtHXouwIj5zMgov9TLh920db2lSBwNw82DOBUM9NUQIhAOqdhlbFjCjm70tqiasPTXJa0g+18q3+2XN1mqkVHxuB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34590265},"engines":{"node":">=20.10.0"},"gitHead":"6e6154d2f5d5a7312a732121a4c1b997af53e41e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606261336.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^15.1.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-6e6154d-202606291811.0_1782756775585_0.30538415303731314","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-b9abc31-202606291927.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-b9abc31-202606291927.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-b9abc31-202606291927.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"617767ce7975d93609e3763d37a1e2cc53962f0e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-b9abc31-202606291927.0.tgz","fileCount":494,"integrity":"sha512-yv5bbcV+yKKwXRZ6qBAMlMe01GJRLgliuXI0zSARlKtJZ8ioXFpxZFkv0Wc1oT2QCJqrVodOAESiGZ7JdRgJDw==","signatures":[{"sig":"MEYCIQD59eeOiGXnUMw5Ao2KcHfNX6kN0QJD6WqCHLLCE7TDtwIhALz8jX4JUQwZQcU/y7r8PffoMte+j59omRC7vUiW+F0Z","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34590575},"engines":{"node":">=20.10.0"},"gitHead":"b9abc319bbfed5e101daf4997623cd04e7a53372","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606261336.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","postcss-preset-env":"^9.1.3","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-b9abc31-202606291927.0_1782761334495_0.299337505890527","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-c12f0c5-202606300928.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-c12f0c5-202606300928.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-c12f0c5-202606300928.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c9d0c21d6c68e3b976073d9702b023927bb01fbf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-c12f0c5-202606300928.0.tgz","fileCount":494,"integrity":"sha512-y5Hpu5KzdOaGfEkDcLVXx+8PjsY6oI+2uAblQ4XMygl4vqO1+bK0z4U6p+M+ZCI5yurLjVu8aayqADXw9WSV2g==","signatures":[{"sig":"MEQCIEBqTrVSYFFVyFXKXOv+XszOXlul0/GeJKyuURzP8u3LAiA19uU1i74BanL125YJxBDPRQ6jkdDa5Iff17a+yFKiqg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34590588},"engines":{"node":">=20.10.0"},"gitHead":"c12f0c5ed1148a21b895fe96b2b21359c413453f","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606300928.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-c12f0c5-202606300928.0_1782811827387_0.6355195799558191","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-c12f0c5-202606300948.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-c12f0c5-202606300948.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-c12f0c5-202606300948.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3056d2813e4ad9faeb9e7fcfc7e919f76a18f1e8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-c12f0c5-202606300948.0.tgz","fileCount":494,"integrity":"sha512-6lYNPhWT7UWSDYr6zgx8KNaPiWUNrY7ifejrpq5OW/6muhj8ir2G5QEO8UP0z9wFMlJJDBGtwrWFCNHtYdcWIQ==","signatures":[{"sig":"MEUCIQCQOKVYjYnj315fL1LPh1fzDBKoTZi03meqC19nGd4ogQIgIAfGN43fHra60MzBks1xINlLtebXZVbInjAoZEjodZg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34590465},"engines":{"node":">=20.10.0"},"gitHead":"c12f0c5ed1148a21b895fe96b2b21359c413453f","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.19","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606300928.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-c12f0c5-202606300948.0_1782812997213_0.8685692346387384","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-0889093-202606301503.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-0889093-202606301503.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-0889093-202606301503.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"82a72f0308fb2d0d3a01bb6cd8702921b8a9e964","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-0889093-202606301503.0.tgz","fileCount":494,"integrity":"sha512-+IlRDONKg1R76iQfPD7nxqBYX3w/dfYKWaWeUdj50iGHtdFX7ePKG9WTQ8nhkN3fCR+IMumb93FnO6V2kbseeg==","signatures":[{"sig":"MEUCIDoaZozUNgtsSv+7fXMqBpEcSve/bvMzVuDVGQBudC7vAiEAk9GOj15TEstqdzUJGv08wWIuq9YEgTX1DZKu0gUTkRI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34593079},"engines":{"node":">=20.10.0"},"gitHead":"0889093368c3f8f6b5532c1060f4ba425cb9c5c2","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606300928.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-0889093-202606301503.0_1782831888152_0.9409446378723549","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-abe7b49-202606301618.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-abe7b49-202606301618.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-abe7b49-202606301618.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"16c2c03efe7485e654974af220fc31e33f0f65bc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-abe7b49-202606301618.0.tgz","fileCount":494,"integrity":"sha512-P5FfYTM3H5Dwxh1aEq/AmzQbteHcRNb5iL3/dO0q7rEIdrhWLuKY6WbK24at/5NeKqeI4Ejn38eHJ7Wj3ez46w==","signatures":[{"sig":"MEYCIQCTb3sgzFJXofv8pGi8i8/Cbhm+TB9ZE+gSPE7kzxl98wIhAMDJVFY2pOIvY9cbG0I/9GSMeyRbZ4UC0n/IMf5W7WQu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34635665},"engines":{"node":">=20.10.0"},"gitHead":"abe7b49cbe667da6cfcc2a6842668865f9a7277d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606300928.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-abe7b49-202606301618.0_1782836435475_0.8253966741159513","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-abe7b49-202606301857.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-abe7b49-202606301857.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-abe7b49-202606301857.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"11c2811398e290e0ce313ec4a6574b6611dedf6c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-abe7b49-202606301857.0.tgz","fileCount":494,"integrity":"sha512-jVwLz/cJ9RA7LdBbFI+7ftmXQT20MEsrILRmwXsNZRXBdG0Xo7vNF8b3c+C/NJ37RMO+6gq+gXkuS5TSm6k1VA==","signatures":[{"sig":"MEQCIEm9BYsb21fJH/k/Ji3MJUkYqBn/mnOsLVk4LMWwIO6jAiAnVRknEnKyvaIGec8xQK/gSBjlVbYhM49jS3G3Wjb8bw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34635599},"engines":{"node":">=20.10.0"},"gitHead":"abe7b49cbe667da6cfcc2a6842668865f9a7277d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606301856.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-abe7b49-202606301857.0_1782845919441_0.05709773887137648","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-abe7b49-202606301901.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-abe7b49-202606301901.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-abe7b49-202606301901.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"921b9dba4437c78afff30b1ed0cacdc94b8c915b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-abe7b49-202606301901.0.tgz","fileCount":494,"integrity":"sha512-jhPtA1ialkGiLgiMph0pZGnm6HDHMjUsz7y5tja2h8Dhg0int9J96uZRL2oUBgqZVzslXEdzTz4wxJ9f29XryA==","signatures":[{"sig":"MEUCIEFdUoPNttEUENGfqfV7MA3AiXRLb0z/2Mamypg7pWw3AiEAo4Tl10OpvzwmEkz7Q3DjkF6Rr24jv7nBQoVeBGs3jug=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34635927},"engines":{"node":">=20.10.0"},"gitHead":"abe7b49cbe667da6cfcc2a6842668865f9a7277d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606301900.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-abe7b49-202606301901.0_1782846163381_0.7091356676671645","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-abe7b49-202606302010.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-abe7b49-202606302010.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-abe7b49-202606302010.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ccd63ce604842fcddf43cc0b623852d52866dd8a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-abe7b49-202606302010.0.tgz","fileCount":494,"integrity":"sha512-TMl7kUJztTXsyjazbAL2LjKjCLkEbWPpd9evkafcBhdbE2XbNSXi9uvMA8CTAfM4ueroPBqF3Gu3AuE2KEeE6A==","signatures":[{"sig":"MEQCIAeDaPtMeSwMUunvDVGfFD9uDSzIInNb0gd7hbI4Lud9AiBn6R8F7Qw/TM8XbO/xSwQ80Q7qAa3lUqYP+0KT+dfkSw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34635673},"engines":{"node":">=20.10.0"},"gitHead":"abe7b49cbe667da6cfcc2a6842668865f9a7277d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7f2d76-202606302009.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-abe7b49-202606302010.0_1782850298138_0.8880444263492027","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-abe7b49-202607010910.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-abe7b49-202607010910.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-abe7b49-202607010910.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8d0e1e28e58480b1232031f57c55716c2fde5805","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-abe7b49-202607010910.0.tgz","fileCount":494,"integrity":"sha512-G0+yYiZHTEbMv2T2DmiPd/9w9Snb1N2fXIvo1YYhXxFcl0VoZwrlSVpeKmh0zYN/Ho8AuLtJoj6Xpyz3xOoKvg==","signatures":[{"sig":"MEYCIQCtMMWw4peHBfUXol4fu2ILMnuZa6EzZDjeeSMAPV6M9AIhALML+R4NUAjbxk0jZwp7h5/Eqcc2D962S+5lFXUXOjQh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34635590},"engines":{"node":">=20.10.0"},"gitHead":"abe7b49cbe667da6cfcc2a6842668865f9a7277d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-b74ea61-202607010909.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-abe7b49-202607010910.0_1782897107107_0.9547605243212922","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-e1d6bc0-202607010933.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-e1d6bc0-202607010933.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-e1d6bc0-202607010933.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2fc406e621ebcf8fc35879c54c3e4fd7217177ba","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-e1d6bc0-202607010933.0.tgz","fileCount":494,"integrity":"sha512-B3+0fiVCRgWd9TsorI1InrYDTx1FejakE00j37lo14cxrp3Dpj10NBDftNxc6SVvIlno3f+ruo0zY4HaYb84Yw==","signatures":[{"sig":"MEUCIF+bqL4YGPvzMiMgfRq4KouCfaHqmWDfYzPDKnwXM3WAAiEA5BIn37bVp7bXPMeB7sjsQ0jJdGUT7/YcUmzG4+Dyr4g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34701765},"engines":{"node":">=20.10.0"},"gitHead":"e1d6bc0e4056ce377c15aaf94430a20177fb3ed6","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-b74ea61-202607010909.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-e1d6bc0-202607010933.0_1782898482122_0.5880961340450788","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-66f87ec-202607011143.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-66f87ec-202607011143.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-66f87ec-202607011143.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9e05a3ee939917c6df4d744bad2b3042f1c9d562","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-66f87ec-202607011143.0.tgz","fileCount":494,"integrity":"sha512-t5i5TzHfo1MuhMjBtdtIwjVTbMG2qNO0ZJM033i0qZphqOuPIwOZ6jRn0Oy5ZYKf31LF80sabo0rpGwHVrkQSw==","signatures":[{"sig":"MEUCIHuI2Teia9XPbNNY0uESDVD81JA5ccOOTXndD0wxM9uJAiEAyVDsfVffxnUqXmCh3g4bIZ037Jc5d2iu5As48LdaPRs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34701504},"engines":{"node":">=20.10.0"},"gitHead":"66f87ec57ad44ae27f295743a5c1429876d488b7","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-b74ea61-202607010909.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-66f87ec-202607011143.0_1782906281955_0.35786613132210765","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-66f87ec-202607011311.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-66f87ec-202607011311.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-66f87ec-202607011311.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d3d63991d6bd4b245e1cd4ca50585484827202eb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-66f87ec-202607011311.0.tgz","fileCount":494,"integrity":"sha512-j3gg9smP95HAnmDSWzcpD7fzpQ55Rp6j3I1E959lPokQ2cpQv3+KYopPNZIv61YigO17ASwoxZZ3VXtFnH6Csw==","signatures":[{"sig":"MEUCIQCn5av9c5gyOctsI81SVExrawInVXMVPDi7lODl+65nAAIgPgrWnz3LwwmkvUQ0g+oHItA7blhfn0PDaV08+ffkHDI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34701723},"engines":{"node":">=20.10.0"},"gitHead":"66f87ec57ad44ae27f295743a5c1429876d488b7","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7ad0c8-202607011311.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-66f87ec-202607011311.0_1782911601151_0.4566247083166306","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-66f87ec-202607011315.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-66f87ec-202607011315.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-66f87ec-202607011315.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6751094dbc67d7e31d89c35e558dea8c2e7ab00e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-66f87ec-202607011315.0.tgz","fileCount":494,"integrity":"sha512-r8eTw+V7Q/zxsRiY8i5gh9ruvmuikivqQWDGUQYcvKcpCblLdleF9y/R2p8CIK9tZ+eeXscLN9vhoK6E60uN5g==","signatures":[{"sig":"MEUCIFc7ULe1ualV1n9TCYakwl4QjApqDSeoM9wMIRWO68wXAiEA49yahFRktS1dHWOYOf9I8hFXPMde8f3HUYKdjVjw72A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34701255},"engines":{"node":">=20.10.0"},"gitHead":"66f87ec57ad44ae27f295743a5c1429876d488b7","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7ad0c8-202607011314.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-66f87ec-202607011315.0_1782911818094_0.6974251144298416","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-88f7582-202607011544.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-88f7582-202607011544.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-88f7582-202607011544.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dea19497609826bb4ed00ef81b80157e9d6cabb9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-88f7582-202607011544.0.tgz","fileCount":494,"integrity":"sha512-FG7/IGt0mCrDJ2htY9Bw0DQe5dpOxDvHCZtlw53NDLojXqihiY5OgkeVGAXHQPdJJrduGhqL2YSFCiv4Jpm4yA==","signatures":[{"sig":"MEUCIBaDxRSVM1FUDqReo8gmKYiAKhH4NcfFk+0n6EpH/jBhAiEA3w6eP1kMNfvoOcvFF6QvAnVXBcOJssXj0uTyKhNiQjA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34698887},"engines":{"node":">=20.10.0"},"gitHead":"88f75828c8d53e093cf3de0e15f50a966579eddb","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7ad0c8-202607011314.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-88f7582-202607011544.0_1782920749453_0.12444946584134309","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-0c9b327-202607011626.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-0c9b327-202607011626.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-0c9b327-202607011626.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c05fb2adbb227321c16888174dd5762df287bf89","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-0c9b327-202607011626.0.tgz","fileCount":495,"integrity":"sha512-Hvjy6rVXpOOZq+L3WG3C8aXvM5l7H7H/arfj2N1tjMxTh+R2p6b7YIKK3QOeG1mzSE9O5xM4ikURhw24IjbSQA==","signatures":[{"sig":"MEUCIFhcIVio6ILTHz4MnL+HSS0b6Ru4HWou1LhcF+3RH+3vAiEA3GODQl03d7Z4pYKHr2moNlaZRRUo0wnYAWeu8CbbV6Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34740328},"engines":{"node":">=20.10.0"},"gitHead":"0c9b3276e3a04f5c31776504633df71aa3cc0c6c","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7ad0c8-202607011314.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-0c9b327-202607011626.0_1782923266898_0.036692625628894415","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-0c9b327-202607011640.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-0c9b327-202607011640.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-0c9b327-202607011640.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ccf288efb62b0f6c6a13e00a3599f4d552b384bf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-0c9b327-202607011640.0.tgz","fileCount":495,"integrity":"sha512-IRHs3xvK6JangOpbClDamgsSOmq8M7vw30mP/I3Jl3bhuyYa0zo0y87R8jtqaXjD28JuP89m48Uc1ZgBfgx+kw==","signatures":[{"sig":"MEUCIHFAWGZ59a4izDJ9MD8n9dEoRhq4GzZNjofnuQmP6yV0AiEAnGVVJyIkRQcL8FM0kbBK5pcwk0tMpVfryTDX2wIHDBM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34740321},"engines":{"node":">=20.10.0"},"gitHead":"0c9b3276e3a04f5c31776504633df71aa3cc0c6c","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7ad0c8-202607011314.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-0c9b327-202607011640.0_1782924102322_0.5368021090477524","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-f6ceec4-202607020729.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-f6ceec4-202607020729.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-f6ceec4-202607020729.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f901e3d72eef7baa74c96a6db3f578c4ddf96d45","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-f6ceec4-202607020729.0.tgz","fileCount":506,"integrity":"sha512-1dQTSoqt0lhIHRMTjcsKvmrkEqV6xJBZ+pKM2kmpGZd33fF5M91MjTUsbKmLnyqE3PbjITDQyLih8cXXJKMoKw==","signatures":[{"sig":"MEUCIDhPS/7sYYZagDffTDoQU6TS20I8ZoLsTfuMNPTX9VGEAiEArH/BWE98Qy/D653kFas1r4WVK8x6kMiFXp92YWWcBR4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34827112},"engines":{"node":">=20.10.0"},"gitHead":"f6ceec4c53ab0bed00be30dcc663933bc82a3861","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7ad0c8-202607011314.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-f6ceec4-202607020729.0_1782977465978_0.8338664783232277","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-676f620-202607020853.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-676f620-202607020853.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-676f620-202607020853.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dd438ac74f8c11e18ab9cf2088e85e4f9ebac1f9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-676f620-202607020853.0.tgz","fileCount":506,"integrity":"sha512-yWrlvLhj8Bw7nA1t1SGAcObDTSXB6fQiStgciCD1y5tF8zQ8sb16DuxYdQ3/dzg5AVjONSTxPibr9sFNbL2Xag==","signatures":[{"sig":"MEUCIQDOfajkEoXOYSapnP0nlLeeFxadT32Fi+hBRKx+7xs7UwIgUqENClGhTZ/0snASy2AnrHQBK3ROGiBW4P6zdDbDvwA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34871530},"engines":{"node":">=20.10.0"},"gitHead":"676f62077a539533de3da6af2138bcb6ebf54f71","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7ad0c8-202607011314.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-676f620-202607020853.0_1782982494125_0.2341715725898097","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-fd8dabc-202607020952.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-fd8dabc-202607020952.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-fd8dabc-202607020952.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"37be45257d14a7f7f24a017bfed5d690c53f4dfb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-fd8dabc-202607020952.0.tgz","fileCount":506,"integrity":"sha512-WPnw6mkTtTRX4+a5Y9QHn9CN34Tq/AyHM/4hbXMp/hCnomA9R6O1a+ssFeE54El/zluBwT8lnK6Gr613yms2gw==","signatures":[{"sig":"MEUCIQCbcgQxLwhzhcQ4Buj4P9yOoeyvFx2BaT8KPTnPEvHjDwIgFepL2qziyx7KwAFVy91Zr3UqClpoaBPAzYhrDguqpno=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34872141},"engines":{"node":">=20.10.0"},"gitHead":"fd8dabce7b790e88d0d479c823a9b6b00675fa57","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7ad0c8-202607020952.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-fd8dabc-202607020952.0_1782986032371_0.9512082553756598","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-fd8dabc-202607020958.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-fd8dabc-202607020958.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-fd8dabc-202607020958.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"44a5876e62756797b8119c6767ad31211d9b40e8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-fd8dabc-202607020958.0.tgz","fileCount":506,"integrity":"sha512-uhBVPlrZOE92CmJhIbA+FiSQtXANx9j51r0bR01T0K0r6C1nXf4nIIP34LCeU/jH7FP58c1CraVfPLHdOjEgZA==","signatures":[{"sig":"MEQCIGFbAFfUjJr/vcPg2aYJvruH3JeekQqMvzxXjldCdcP8AiB/QmFObRPUkRCo/Qv0sg202YlRwLj3EULFwij0v+HiHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":34872124},"engines":{"node":">=20.10.0"},"gitHead":"fd8dabce7b790e88d0d479c823a9b6b00675fa57","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7ad0c8-202607020952.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-fd8dabc-202607020958.0_1782986411774_0.173461298607126","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-dd6b038-202607021159.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-dd6b038-202607021159.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-dd6b038-202607021159.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1e7a8fe4664fd5f420b40e29f8c4cf2b74a583b8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-dd6b038-202607021159.0.tgz","fileCount":506,"integrity":"sha512-3wgdCqcqh11DYR+LDcSTDqc4N14lQagCZEmiDF03xeib+q/1C5JJm/sN4lV+PR/1rMFWfLDks5ti91i9sLHbQQ==","signatures":[{"sig":"MEYCIQC96WNhcluZhcxkQh+FB4HyyVPggsOouhbAj0cK5dsnUwIhAIWvySZznBb2ea/r3HFPdhU+wkl8RWvLMZ1MAmmSe1xi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35117285},"engines":{"node":">=20.10.0"},"gitHead":"dd6b0388eb55800e3729ee42bba049b57a500d66","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7ad0c8-202607020952.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-dd6b038-202607021159.0_1782993698753_0.05013642132580354","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-dd6b038-202607021319.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-dd6b038-202607021319.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-dd6b038-202607021319.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5064841db525faf9f79abbd7d6dbc2e08df6c47a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-dd6b038-202607021319.0.tgz","fileCount":506,"integrity":"sha512-ULYL1rTNEmI/RFNnS65bN+/3IvV5VnoJ4prINLGT/WspGClH4vQ3DO0GgP3FIdaUB/oLKaeGnEyXbmAWPIZsRg==","signatures":[{"sig":"MEUCIFVnAYU/wIB67VmhPVKvQbf2EMAt95Pwic2zqgqtCuLjAiEAtktVFm4Nm/NzMRwNubKQ6tMHOnSfkwI+aK+q3P6zVq0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35117282},"engines":{"node":">=20.10.0"},"gitHead":"dd6b0388eb55800e3729ee42bba049b57a500d66","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7ad0c8-202607021318.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-dd6b038-202607021319.0_1782998455070_0.6312734171700316","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-dd6b038-202607021327.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-dd6b038-202607021327.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-dd6b038-202607021327.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1a7db6de202386cc29227e29da8f85a925e2e6c2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-dd6b038-202607021327.0.tgz","fileCount":506,"integrity":"sha512-8FO6FBpZqwNBF6DPP6gsrqvJS9WRJASEVaKQHIWkbV5gcie5v07vwT1Tk4p7FFaoUnYrGIavEmDU2Tt93FbnHA==","signatures":[{"sig":"MEUCIGaiiSR4Y9kfEBPdytyZwQo1eGGQ/9vaprZ8ZsTKgDQqAiEAxrS2aqnwqUibhfbjG9JmFlY28UmPR7MnUhrVvbdvcOI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35117259},"engines":{"node":">=20.10.0"},"gitHead":"dd6b0388eb55800e3729ee42bba049b57a500d66","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.13.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.17.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.31.4-c7ad0c8-202607021327.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-dd6b038-202607021327.0_1782998958340_0.0016602125907398957","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-dd6b038-202607021330.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-dd6b038-202607021330.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-dd6b038-202607021330.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"15fdf59a3986e3c7b77ac1a10312f9239c220f29","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-dd6b038-202607021330.0.tgz","fileCount":506,"integrity":"sha512-ez1hzhRU1D7F3eqAU+9kkE6DA/buHvOoUB8xeTJqm5jti1oPpYpAbJCq3Bde3hfkHjhNDmj5ZHosoWUsxI4LBw==","signatures":[{"sig":"MEYCIQDgtA1aW+mOyhgpGLssocOxjkZXhClywURwP1bg7XSLPAIhAP8COW63T0mjrGz76wqLvf5HxhAWuE1XAABTJg1EeS+Y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35117047},"engines":{"node":">=20.10.0"},"gitHead":"dd6b0388eb55800e3729ee42bba049b57a500d66","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.32.1-055d991-202607021329.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-dd6b038-202607021330.0_1782999127150_0.5439125158856737","host":"s3://npm-registry-packages-npm-production"}},"2.31.4-dd6b038-202607021342.0":{"name":"@flowfuse/flowfuse","version":"2.31.4-dd6b038-202607021342.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.31.4-dd6b038-202607021342.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2d4b2d871acf3e53af60d0b52062f118e7c8c001","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.31.4-dd6b038-202607021342.0.tgz","fileCount":506,"integrity":"sha512-W+RD5f/2BaQB7FnuKw4LjfBQXirzExYXf6euI5FARdqYpbPjUdwTuu/RxDJ+rL+xKqOvQtZRzUzVPzifDhHcWg==","signatures":[{"sig":"MEUCIQC4Rwdd1PxTa65GrVMBQIDITf+rxlGwkKekHYX45Ltt3wIgDzwRJaBfMCklkGMFiU+QxwvnOgkZ9Xvbf+V765xhvaE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35116912},"engines":{"node":">=20.10.0"},"gitHead":"dd6b0388eb55800e3729ee42bba049b57a500d66","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.32.1-15813dd-202607021342.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.31.4-dd6b038-202607021342.0_1782999857259_0.611383376365072","host":"s3://npm-registry-packages-npm-production"}},"2.32.0":{"name":"@flowfuse/flowfuse","version":"2.32.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ec32e0b5945275fac22c0fc46d550cdeecda97e5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.0.tgz","fileCount":506,"integrity":"sha512-QEyZeCna+odgc0IXXtBrgcVUHJ/u1cxSkZ90sj0c6VA5eQeVoXxhb6VT+IaA39osa2O0XEkgyz38YtCRvwwS7w==","signatures":[{"sig":"MEYCIQDiedRYwc9QfI58dPG3kHt4VP26aUeOc2Xf+5bsAS1D5AIhALoY9VfA1TwxZ356KmlHP6iN1KoiRWCuOvZpA2lnvWoT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35116379},"engines":{"node":">=20.10.0"},"gitHead":"fc1b7da8281750bf949fab87a9f1a8dcd7bfaa93","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"^2.32.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.0_1783000810328_0.18196522585618036","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-fc1b7da-202607021428.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-fc1b7da-202607021428.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-fc1b7da-202607021428.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bc01900c42529dafc7c7f8ff2bc4b3e6c4f2e582","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-fc1b7da-202607021428.0.tgz","fileCount":506,"integrity":"sha512-JN7Sl2dVv9eGsj104EgPoLTgqXAzEVmQ0Gfp7lSFVYjifRXQZGQHbkd8gBOUaT5AVxVhgbG92RRhFrCPyLk6bw==","signatures":[{"sig":"MEQCID6gdPIz/7WxztVPmRn8B/sN3kxVMiQY5eRmdt2RzcSrAiBq9uIlTC80y/9NB80kOHvzM2Bhb9151a9V12gzsBkh9Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35122989},"engines":{"node":">=20.10.0"},"gitHead":"fc1b7da8281750bf949fab87a9f1a8dcd7bfaa93","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^5.6.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^7.0.3","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.32.1-15813dd-202607021342.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-fc1b7da-202607021428.0_1783002593189_0.23232067826063907","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-5abb3d8-202607021623.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-5abb3d8-202607021623.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-5abb3d8-202607021623.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c0efdd153f6e60d44b6bf6fc588632515b147f19","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-5abb3d8-202607021623.0.tgz","fileCount":506,"integrity":"sha512-L93J4dyVynIcF6kuH85pMI33adgM3bo20a52AJcorRr/eBE+MbIDIl6aBy8Vgi0btlI4g584b746lPQHyj+i8g==","signatures":[{"sig":"MEYCIQDZujNeEbWMRkUnZidoNsre4iV7p8n1/fhZpvNqf0s+HAIhAMmXNdqdFe1O5Z3+DFRgO7rXrO/mqEHUEabSzPbL6aL6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35519115},"engines":{"node":">=20.10.0"},"gitHead":"5abb3d879bf261881bfd9181b720cc5ca3e822b6","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.32.1-15813dd-202607021342.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-5abb3d8-202607021623.0_1783009512948_0.14119255258100716","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-2f572a5-202607061118.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-2f572a5-202607061118.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-2f572a5-202607061118.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"10e54875fb462e1a107c86061283b8a965d214ab","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-2f572a5-202607061118.0.tgz","fileCount":506,"integrity":"sha512-sKBta3YCc+xSgYtMVm1GP6hazS8LerH257zZUsNxmgk26dzVQ2I7x/VDFo/YNHKQz3r6hEMeJ3hGi+Ps3QwEZQ==","signatures":[{"sig":"MEUCIQDcSYHuMLv/+x8Ez3Dxg0LV9lIjY05xAT0Px4Y4K1vINAIgchOhuWzWaWB7kRwCEBn+Vbfli2fROw/ye5BjHmlp5wA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35519952},"engines":{"node":">=20.10.0"},"gitHead":"2f572a592e565104cd6f178f3797aa5d830e6ccb","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.32.1-15813dd-202607021342.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-2f572a5-202607061118.0_1783336813944_0.5927468877114714","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-34a1710-202607061608.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-34a1710-202607061608.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-34a1710-202607061608.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7c737b00c50cdee8d16374a3e1f63cdfadb65c9e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-34a1710-202607061608.0.tgz","fileCount":506,"integrity":"sha512-K3yyyi4wU8YL6ZxxJwMcverNi7q4a0QAjwZXIsVAjoBgPgLhwsJIsw97Hxs32nJ0iQVygaNwYIiNqwvnEElkIQ==","signatures":[{"sig":"MEUCIQDYoul9WtFltCEZIvbK9z5XkbOuAUiVkcsXmd1QNdac9AIgdcr/PibglnfulR88qF/onMKUaCp8+9UI4HzBaA2NCas=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35520113},"engines":{"node":">=20.10.0"},"gitHead":"34a17102dea7383480d74ec1abeb54b7641ca54a","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.32.1-15813dd-202607021342.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-34a1710-202607061608.0_1783354198264_0.012204267774059696","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-4863e17-202607061631.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-4863e17-202607061631.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-4863e17-202607061631.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"81508efd16f0ce2fa37eb3e3e04b704949626678","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-4863e17-202607061631.0.tgz","fileCount":506,"integrity":"sha512-xm51+bCRMny5uJGMVcKoUQLKv+MllS8t3MlOaYtyj2zmUC5FaRWIbXRi3l92QeBUqeA6lQXFUSq/0SYT4sB8oA==","signatures":[{"sig":"MEUCIFY4/qIydnGtBOykdPmgQy2TIllYRgKxKlyNB4b5Pf9KAiEAm4S2T92iXYeCXT5ReZoK7O5E0yOx1jMW82I01t9OwL8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35519704},"engines":{"node":">=20.10.0"},"gitHead":"4863e171cf855ffe48111e4e5758ce0bf3282df6","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.32.1-15813dd-202607021342.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-4863e17-202607061631.0_1783355574238_0.8588884673164796","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-4863e17-202607061635.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-4863e17-202607061635.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-4863e17-202607061635.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"eb3bde247de182126c247c1d5d76666e612a3aab","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-4863e17-202607061635.0.tgz","fileCount":506,"integrity":"sha512-2fnoH+/VORwUU92/eOU9dCK06FHp+NGV8xYA6/+/eZHmTTn7Stllof0qzFM3mFcvGev29sKl+/ibsQbmqoaMxQ==","signatures":[{"sig":"MEUCIQC3++0eGcLzDNAPyCWviNvO40PDk5FvZczZFzW8tEDTdgIgUYrc4WyfRwN60dj74oeoIk/Vo5ZL+6qSYWFLVXp/JhY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35520042},"engines":{"node":">=20.10.0"},"gitHead":"4863e171cf855ffe48111e4e5758ce0bf3282df6","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.32.1-15813dd-202607061634.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-4863e17-202607061635.0_1783355825662_0.28527710582557275","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-4863e17-202607061803.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-4863e17-202607061803.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-4863e17-202607061803.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ff87072161409ba226998af306273dcbbcce3de8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-4863e17-202607061803.0.tgz","fileCount":506,"integrity":"sha512-wWVq7uuGGy5gDmd0NHbog4OVIXiiJ5YokQ0yv6Okq0Zx7LWKUuImuFxHemxaJKn2djByR2XQQHdowEpPg6UirQ==","signatures":[{"sig":"MEQCIGm13Fs7Kxr58ZDDsabnVcUSP8H82nEA8POAHB5kFkegAiAikN+iRz++9h0e7pg8IRnd0tMseTkJecqBgOQ54TKygg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35519888},"engines":{"node":">=20.10.0"},"gitHead":"4863e171cf855ffe48111e4e5758ce0bf3282df6","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.32.1-15813dd-202607061803.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-4863e17-202607061803.0_1783361128334_0.525933667415581","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-4863e17-202607061914.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-4863e17-202607061914.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-4863e17-202607061914.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"742dfbffaf51cfc8949163b5aff667cd4a7946fa","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-4863e17-202607061914.0.tgz","fileCount":506,"integrity":"sha512-XiWi7Ho291HTnA5Jjw/8Sy/TTPcgAAvRT5p51ar4H3krey1BL74lEb5O3SSQga8aRHI3ZjXgG0hdv3zQdQx2UA==","signatures":[{"sig":"MEUCIQDgvkByT5MQ/HZugqU8x9d4+LZjC58ZhK4SvxvDnEz5bwIgaK/2basm8LG43Yc66U5+Rhk5Ry3TzvrKO+vwz+xT//Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35519702},"engines":{"node":">=20.10.0"},"gitHead":"4863e171cf855ffe48111e4e5758ce0bf3282df6","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.32.1-15813dd-202607061803.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-4863e17-202607061914.0_1783365372574_0.6192574065928977","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-c0969a0-202607061956.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-c0969a0-202607061956.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-c0969a0-202607061956.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e20e47525f5b9c4760dfa3c59c29fe0deddebd19","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-c0969a0-202607061956.0.tgz","fileCount":506,"integrity":"sha512-GsGEVqBT1rYhHRsU6cf+xvmgR5NHmSUT4xpGHnEtbnIctvD1MIVMpoYOOS+IYDzFGrbSw3M9eX2iDh6zJoNSwQ==","signatures":[{"sig":"MEUCIAL4UiGajfvsG+9fpiG7S+9Wkh+6ZPLEkyQXjc1NZWwXAiEAlPHClAAgI3TlOSqJY6RhDmr8l+azJ1NOnOY2MZO3Dyg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35519855},"engines":{"node":">=20.10.0"},"gitHead":"c0969a0d6f3d92c5c744ef35dd336db1c6cb9175","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.32.1-15813dd-202607061803.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-c0969a0-202607061956.0_1783367886583_0.9276336927285624","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-4f57168-202607070846.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-4f57168-202607070846.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-4f57168-202607070846.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"65a008a74242a868b8822fc41a484e667c6d0d9a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-4f57168-202607070846.0.tgz","fileCount":506,"integrity":"sha512-lI6c88y6nA77QvUDnJWodLCfzCiLfELz6gdg5oTvfkVjpyTh7p9LSlpAdJ3I4YhCxZ2uL4dmt2zAJQZcslgAKQ==","signatures":[{"sig":"MEYCIQDO9mJ0GGkwUPOY1W7NVJyk4XKwemIaroSxisW0myWtsgIhANIYOydGqylj4QVzNPS5izxpgDzYaNCKioHHOqV79h/B","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35519595},"engines":{"node":">=20.10.0"},"gitHead":"4f57168686bd1e5c9182d5fdf6f84a3fe6e5dead","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@flowfuse/driver-localfs":"2.32.1-15813dd-202607061803.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-4f57168-202607070846.0_1783414071301_0.6220779976757012","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-cababe3-202607070902.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-cababe3-202607070902.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-cababe3-202607070902.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3065697a614f4f1d1677160aa113e722234b365c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-cababe3-202607070902.0.tgz","fileCount":509,"integrity":"sha512-9QvpyJU18ESoeYBVCvpJuaQkl0k/PJCa/ClIHCxkg8JE3a+1P30Z3xqxw/AcfLqiBTzvtUzlka8Cn/kxvY5Obg==","signatures":[{"sig":"MEUCIQCDFOvrZhDEf3EL5TNFtsVmGcsq2di/WkpMiy1x4vi2agIgalcVqpbJwSFB+ilE+hcYINEu8NljcKj542Pg4O/uwyc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35540263},"engines":{"node":">=20.10.0"},"gitHead":"cababe3110240b9c3e8c983f54d784360a4d1543","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-15813dd-202607061803.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-cababe3-202607070902.0_1783415017057_0.38396975136585376","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-cababe3-202607070933.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-cababe3-202607070933.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-cababe3-202607070933.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a382e12c25e161af9cddd167b43a4a03e125f4bf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-cababe3-202607070933.0.tgz","fileCount":509,"integrity":"sha512-9D2doOXbl7Z4Jp3o/rbpJLvlZELdKnoqd6m4AboE429ei8IIDosqsvYGqBEYi3eMwOfrorv7obNzUI++GCHJMQ==","signatures":[{"sig":"MEUCIQCO+LD/LauVABpbyPUQvk1TAtgmRcJ7LcYDKAQ7GfCyBgIgCISP0ZfI1GQMI4JtInXxUqdGny/IZRTmntSBhqfQPJk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35540114},"engines":{"node":">=20.10.0"},"gitHead":"cababe3110240b9c3e8c983f54d784360a4d1543","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha 'test/system/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t './coverage/reports'","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha 'test/unit/forge/**/*_spec.js' --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-15813dd-202607061803.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-cababe3-202607070933.0_1783416898158_0.29619586208807736","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-8af93d7-202607071646.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-8af93d7-202607071646.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-8af93d7-202607071646.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"583b9469a9a06e7ff58fa28b8674d82ee189de26","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-8af93d7-202607071646.0.tgz","fileCount":509,"integrity":"sha512-CvTCkx1ZVZXS17wnkM8lyEBCJTjLONfsZD6piXgur4Apu3X6Ts0EeDJvnosEBJ+cQqq9IAUYe5oqZ+jG8VGz/A==","signatures":[{"sig":"MEYCIQCfJuGt9M5WavSmhGfsGmyTONuimWIxRKeCcaVVv5N73wIhAIpsHp+cGVwzyV00ZJBnRBoBejWRW18JBx0O0Q3m+NxX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35540258},"engines":{"node":">=20.10.0"},"gitHead":"8af93d7f59d8178c063e9c05bd482d3e7e6cbe28","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\" --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint -c .eslintrc \"forge/**/*.js\" \"frontend/**/*.js\" \"frontend/**/*.vue\" \"test/**/*.js\" --ignore-pattern \"frontend/dist/**\"","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-15813dd-202607061803.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^8.48.0","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","eslint-plugin-n":"^16.0.2","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^9.19.2","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-import":"^2.28.1","eslint-plugin-cypress":"2.15.1","eslint-plugin-promise":"^6.1.1","eslint-config-standard":"^17.1.0","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.1.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-8af93d7-202607071646.0_1783442898388_0.291649933334891","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-3a61885-202607071748.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-3a61885-202607071748.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-3a61885-202607071748.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3030918e4114a286148823df6c7cb569b4b7d5b3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-3a61885-202607071748.0.tgz","fileCount":509,"integrity":"sha512-komFYJhBIYrm+BWQDmT7xpPuOgbOpCugcUKnIgJcJ371EAg7Icn3InxGcz5/BaMbWjHPOIiB16pmiyPUMhnTmQ==","signatures":[{"sig":"MEQCIGIYS9VypvOES1yszktLB3cgACFThmDMD3xHxYUTYkewAiBM+74Li9hAgyNO7QPDjlJ7iv+cd1MhCP47ctt31mIoVQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35543912},"engines":{"node":">=20.10.0"},"gitHead":"3a6188506147861c6a19651413e0d8fa712542c8","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-15813dd-202607061803.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-3a61885-202607071748.0_1783446581431_0.5051992923844566","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-3a61885-202607081328.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-3a61885-202607081328.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-3a61885-202607081328.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2aa7f887f0a63731e8a62d159aa3d1596516037a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-3a61885-202607081328.0.tgz","fileCount":509,"integrity":"sha512-Tuu7WSOSVw3Qe5TXj4W95EkqBaDWsJmuLbS+xRplvndAxoc4zXfQKCP+lQ3b7NRBLSZ0uoFizW+o2o86uWmO5g==","signatures":[{"sig":"MEYCIQDwIYQ1TVjxr2smxRNMQSty2gG/craiha2La6xtCZl3rgIhAOgl85EYij6KNS1DC/ngA2ZxMRVmGmBbc3aCWN1WgRTO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35544061},"engines":{"node":">=20.10.0"},"gitHead":"3a6188506147861c6a19651413e0d8fa712542c8","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","@node-red/util":"^5.0.0","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-15813dd-202607081328.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-3a61885-202607081328.0_1783517427344_0.5642274743110274","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-1ee838f-202607081359.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-1ee838f-202607081359.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-1ee838f-202607081359.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"014e32ee3385b2f22da34a9644e0f49410d700ed","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-1ee838f-202607081359.0.tgz","fileCount":510,"integrity":"sha512-aTbpfQXi16o8jF7dluRpZ+N+9JZMPjt3ihSMp3Bt4LKcJ4mA7KUP5xHNZRcqErY2P8wPEORW0n3uL7VzMKNWvA==","signatures":[{"sig":"MEUCIQD+deRt5ImlEGg5PHlsGq20aqUblkot2hVVurcbLJl3zgIgMF0NqbGnoQP6jWah5EJq0fPiUrBw/V4jwr0QxN6vkvY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35556244},"engines":{"node":">=20.10.0"},"gitHead":"1ee838f999927defadc32d1e1bfae5068c8fd435","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-15813dd-202607081328.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-1ee838f-202607081359.0_1783519307518_0.5710285799461825","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-fc7a0e9-202607091019.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-fc7a0e9-202607091019.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-fc7a0e9-202607091019.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2b386649b702a94689926e0c4f9bf9596af9e6ad","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-fc7a0e9-202607091019.0.tgz","fileCount":510,"integrity":"sha512-tiGlVZ7IJ6Bjsm3XTm8EI8sybfPirMfs4xLRiI4q7O+xhAZj7wrizy3gMAA++hJpOXGft/bN1JP3yHLE5Tv30w==","signatures":[{"sig":"MEUCIHg0KOS0/bObI5aVGLjYZzL0uyB7YFhVrPxS3NnJJhC8AiEAsZ/8/JnGxoLXXUQvuWBT2kyij1rHfnssnsUvCj185T0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35556532},"engines":{"node":">=20.10.0"},"gitHead":"fc7a0e90be9f311c38cf22a15572cac4bed42dae","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-15813dd-202607091018.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-fc7a0e9-202607091019.0_1783592493020_0.557968376133462","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-0d4cf33-202607100906.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-0d4cf33-202607100906.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-0d4cf33-202607100906.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d44160dc0588dbaa8d49da53359aa101a86010ce","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-0d4cf33-202607100906.0.tgz","fileCount":510,"integrity":"sha512-do38KCO7FC1jeWR4o46kTP5dcl22kBbkNta3wbZ6Ykta6633ec1Hguz/gnZpuFcHe9ZNu6kCwCdanEpfRMknSQ==","signatures":[{"sig":"MEUCIGBvurz2DWKClTJgnKKcpgEQydxTH0xGPi1OlAbgJ+F1AiEAjGyWz1cZuyiQv8GDbiBwmwNgTUFvm5onQ3DcQ2Ot6fM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35557700},"engines":{"node":">=20.10.0"},"gitHead":"0d4cf3362c51437a84f374371257c373d6fde1e9","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-15813dd-202607091018.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-0d4cf33-202607100906.0_1783674466357_0.9053673708936412","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-0d4cf33-202607100927.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-0d4cf33-202607100927.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-0d4cf33-202607100927.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"609126db2f4ee2329c5e770c525de0db9dc4e61a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-0d4cf33-202607100927.0.tgz","fileCount":510,"integrity":"sha512-Vdq39TeSX9LtRGyMvhGELnSmyF3i0tIIWqUaTH+mRyj/ujC8UyjiS3LZak01GBfJBiXWN9JAQXqYXWF8+DVaGw==","signatures":[{"sig":"MEUCIFlQiOhEqBsCsFSR9Fev/E1ioEPrTbziI1aIjS5WD6psAiEA/ICgQAxVlqXiA0/VUy53/uv/ea46ScwHoxDy8Tnj81U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35557495},"engines":{"node":">=20.10.0"},"gitHead":"0d4cf3362c51437a84f374371257c373d6fde1e9","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-15813dd-202607091018.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-0d4cf33-202607100927.0_1783675772671_0.49048461273565125","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-80066ac-202607101031.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-80066ac-202607101031.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-80066ac-202607101031.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"31e59b7dbc99fac16b8203171c49c1430238a6dc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-80066ac-202607101031.0.tgz","fileCount":510,"integrity":"sha512-6Y1it1xLEIuf9ZNgih07E7dD4osLQef8Pi+bJOczBVFVMCJYT3YtXa+xgBi8LY8I3OfHca5vPFprvBRvpgaw0w==","signatures":[{"sig":"MEYCIQDfVwulZR7aVIkj0TTk31+hUBe0c9Fdky+tmO8p/eyh4AIhAIOPD6mi2FMV6+gtdQb/jsYsnG+eQE/KWSHsNZyNRxrh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35564990},"engines":{"node":">=20.10.0"},"gitHead":"80066ac87ee71cd45ca70f493993bcdb37c0556d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-15813dd-202607091018.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-80066ac-202607101031.0_1783679603597_0.6541336333090129","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-d87c69d-202607101153.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-d87c69d-202607101153.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-d87c69d-202607101153.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b5cbb1519f745d69fb7d961b383d6f9f3f972944","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-d87c69d-202607101153.0.tgz","fileCount":510,"integrity":"sha512-mIOb9jtsjpNan69sxoOuoVa4hnO/eAA7sKAzp9bqUaVOSWxBmVwhR1PiqZ1kSPrOM/nUknwlutPkyZ4jOzGr6Q==","signatures":[{"sig":"MEQCIGRp33qbzMIoA1Eq43wDcxLiLOVFvw65q8iWG9yG3Bm8AiALJFDpMDxt6aP7FhhCYqxWzBNKhXM21s+d5a6sDCtHag==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35568579},"engines":{"node":">=20.10.0"},"gitHead":"d87c69d7b45a579c3205c1d3ccdd1e74178b0f0c","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-15813dd-202607091018.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-d87c69d-202607101153.0_1783684491534_0.47880232743516626","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-a5e2f37-202607101423.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-a5e2f37-202607101423.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-a5e2f37-202607101423.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a46b156920b035da93528d012438eda40f05f586","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-a5e2f37-202607101423.0.tgz","fileCount":511,"integrity":"sha512-NIoEUJEd1d6dWQZeob9CpZM4N3FME1hwqHnDB1ZeyDEmgU8GmqJyKOs8ki5lNf1veRpZb48vYJoK/r9auKzEZA==","signatures":[{"sig":"MEUCIQD9i3uRemfXYfiMMxUej5H3BXC7vAMeV7N6x2c8D7b7oQIgI9UXppou2Iwn6R48RvlI4/phHxfN2FuNzPuE2Kz/q1w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35569186},"engines":{"node":">=20.10.0"},"gitHead":"a5e2f379dbcea00d6e64b21512d4bf3fe30299b0","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607101343.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-a5e2f37-202607101423.0_1783693484070_0.32891267533689117","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-eea028e-202607101644.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-eea028e-202607101644.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-eea028e-202607101644.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4427d4afd6d83eb55fe4bb5c591ca5d3ab24a1d8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-eea028e-202607101644.0.tgz","fileCount":511,"integrity":"sha512-7nstqL6Xc1BMLudAlrodaBfFp2waGRLm1t5quD9ia4t5whIirqAkMmb08Cdk4rZJVt5OLEu8OWC7M83Q/oUGIA==","signatures":[{"sig":"MEUCIA00ZTRoazhFwLKTGi3/gtl9WX/HjvwwsR59xTLNPcX+AiEAi8TKMQYKxYLzTPL7yjCnovqKOR3Q1TviyoD2KQ7NM7Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35604532},"engines":{"node":">=20.10.0"},"gitHead":"eea028e2134aff304dc92f738479995ec07b56c0","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607101343.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-eea028e-202607101644.0_1783701951040_0.3762990037515552","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-fa3d134-202607131727.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-fa3d134-202607131727.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-fa3d134-202607131727.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"49f87ebd49422372d0ce58f950fc8bf19db3fe6c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-fa3d134-202607131727.0.tgz","fileCount":511,"integrity":"sha512-4H+Vsp64rELaAv6ytQVe2hy/hSSC1Bim0KjTIV4ijAijbfeRYxQIDbIsUr4sr+rEjQ4fjgfUIA9i6McCpN59NQ==","signatures":[{"sig":"MEUCIG5vFstzrB0Flxp1BPfERtQBG3DCbQm3c5lWT5WkrAZlAiEAxnRenK22NaeZEZL+SsAcdBiUaJeZInFx/SI2nh3h74Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35605712},"engines":{"node":">=20.10.0"},"gitHead":"fa3d134e0ec490006ff5af55ae54c36fbd7341fc","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607101343.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-fa3d134-202607131727.0_1783963731387_0.7941361253501404","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-e0d7fee-202607140709.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-e0d7fee-202607140709.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-e0d7fee-202607140709.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4519e6795712131a7b2cf2997ae1416703310b05","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-e0d7fee-202607140709.0.tgz","fileCount":511,"integrity":"sha512-Un7dthIqMKgwiOx/hYtKb50i292DiF0XgqbeAd4w2mGP2pF7QPcwEOXoxPYZnZ6dM5vSw/YCWSn5tKth5t7DKg==","signatures":[{"sig":"MEUCIG097G3i4V1EUTopImtrP8PidG+nC7pEVaSdTjOFTu66AiEA/Y+UqLCM7eBjfmYcPRdsK3wejhtKKIXeXdmPKVWfGpM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35606170},"engines":{"node":">=20.10.0"},"gitHead":"e0d7fee1549df45bd4bf3454b575b0c34209b2c3","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607101343.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-e0d7fee-202607140709.0_1784013025028_0.5445227336722651","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-9de571d-202607141023.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-9de571d-202607141023.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-9de571d-202607141023.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fc6caf93cbf758e88b1e32d0ea59b40bdc6d2f26","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-9de571d-202607141023.0.tgz","fileCount":511,"integrity":"sha512-mhb9r3APy78VmS0r7P6QfT5UVfGzPLeFKRghAMjFkh61Xdmo7lLmcG5pDBpnKx3CItFYQlETPZS/OqVijvYZDA==","signatures":[{"sig":"MEQCIHiHGaxAS2Mch4S7dIx1sWc3WhBNVy8LBPvkGwnyi6tvAiBvT9rJcWqUTojCVzKSaa+Z+DVfqc4eVJc2RKrds3izdQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35617667},"engines":{"node":">=20.10.0"},"gitHead":"9de571d67fc25ab86e324b2a663242ccced03b84","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607101343.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-9de571d-202607141023.0_1784024699661_0.9713377710640048","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-6c31eac-202607141026.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-6c31eac-202607141026.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-6c31eac-202607141026.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b1a88459be5daf6573ae756c3a2d531a7db7a80f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-6c31eac-202607141026.0.tgz","fileCount":511,"integrity":"sha512-ogrBaYICIIzM+blhxnW9FNfjC3UTnsFyEuT8G/zQnIku9op6CNd6001r3x+zaTPuZqYE3BV5/FJ8uD3gebx2sg==","signatures":[{"sig":"MEUCIQClzMqJEkMQLMdrMo+6nh8l67D0gYhTeZbFCXUK1d0G5wIgEVXOEohUeNrVGITyEd21Rby1cMpTkLKj6+1uoju9VGk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35618012},"engines":{"node":">=20.10.0"},"gitHead":"6c31eaccc5d0948ce73219b44abb1082722530b2","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607101343.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-6c31eac-202607141026.0_1784024874720_0.9419193356291635","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-8c9e9a4-202607141035.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-8c9e9a4-202607141035.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-8c9e9a4-202607141035.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2bbdf353e8af7ba377c17e6fd96b8ebbe385091c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-8c9e9a4-202607141035.0.tgz","fileCount":511,"integrity":"sha512-JCbPB/7yQepQqcpomR878lT71I5+gsdxEwE67x5OaKh6AZxTe0wCrATRaBx6bpgf5FGcjdoFr4pa9iOQILU6hg==","signatures":[{"sig":"MEUCIAwhTHK/fHEt5W5HWAHPMSIp/PAjPR4WjvwEYp7fuZ//AiEAgR2ts3jC2V7rfg31+6iReIxL/aCOKUssPHaQUfdKDGU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35617638},"engines":{"node":">=20.10.0"},"gitHead":"8c9e9a4848cc24683400369bf61ac5db00eca499","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607101343.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-8c9e9a4-202607141035.0_1784025395629_0.10145613896069494","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-8c9e9a4-202607141055.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-8c9e9a4-202607141055.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-8c9e9a4-202607141055.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d86597ca08be729b22dd48df7b27055483c81944","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-8c9e9a4-202607141055.0.tgz","fileCount":511,"integrity":"sha512-+42TU6A9SV+mSKM0Revm3C9Rnp5YbWpYyc9iRi1aWL+H3oZfY6Vg6OtRKwC2B5RyvuGdA71lbBXx0jef2K3i0w==","signatures":[{"sig":"MEQCIARWbFEGUUxZhOe/lcolQV7twbrnCkHQcXZwqHW4OeNMAiBlqATNujLJF1efzo7vKKcE++GD0x/9PFSlw03xka3nFQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35617679},"engines":{"node":">=20.10.0"},"gitHead":"8c9e9a4848cc24683400369bf61ac5db00eca499","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607101343.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-8c9e9a4-202607141055.0_1784026656563_0.4980453205783595","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-8c9e9a4-202607141538.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-8c9e9a4-202607141538.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-8c9e9a4-202607141538.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"92e7d72506e17b9a9fb261fe72bd0fe5a276f20c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-8c9e9a4-202607141538.0.tgz","fileCount":511,"integrity":"sha512-iCNs9G4KVU8TnPHNvFymoc7t+hCa60RRqnbYufDiNpqzg6MVVBY6OoHqwF2sH0h2ouZDGR00TbO3PUtaqxGz8Q==","signatures":[{"sig":"MEQCIC8F9gEiIq0RiQd6LAwHGVNJhKpOHaksIyVTxwBDjLl4AiBt924TTMfoMJbn+gjb5445YITB8LPlCepF5bysinwniA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35617824},"engines":{"node":">=20.10.0"},"gitHead":"8c9e9a4848cc24683400369bf61ac5db00eca499","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-8c9e9a4-202607141538.0_1784043577564_0.25800099014487166","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-a7b9f86-202607150611.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-a7b9f86-202607150611.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-a7b9f86-202607150611.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5f89ae2a0057b97330fc124b4258a6bc650cfc67","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-a7b9f86-202607150611.0.tgz","fileCount":511,"integrity":"sha512-oeb9NPdqX7s71kgPDx/4Hzp1SRM4HHqBZEgGaMDXs0QG6BDEi9JVJ9HX3jtGAsk76doTkzGzkxUedkZIJd8fjA==","signatures":[{"sig":"MEQCIF7aL2LEXX4kXnlWylKiSiWvaz+jt+oCrWKom6yK+CtgAiApvj4wBAQsJqo9ebMwlGwu7gVzVJnm55tjzJ2IBb9Dmw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35618681},"engines":{"node":">=20.10.0"},"gitHead":"a7b9f869f9a2afa18dab182218afdbcd88037b42","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-a7b9f86-202607150611.0_1784095982902_0.7939289944052799","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-00b8d9c-202607151453.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-00b8d9c-202607151453.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-00b8d9c-202607151453.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"606502a21fcde959c4f1843d9c727ac2845761ed","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-00b8d9c-202607151453.0.tgz","fileCount":511,"integrity":"sha512-un6pN/pEXfhFbjBza5O2dgauprftjkrnMdEmdehvdHS9MvPMl09rAwM5ZwwcxFTvjkytyW8bumU6yqwrWyLyMg==","signatures":[{"sig":"MEUCIQDgj87salAk/EjrKFbpTEygBJMmtJkaNtjxLeWLw+L22QIgCGjDjbn2l3Wz07W5Imbe6T6xC5IfiSAABJFpaFByzak=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35619135},"engines":{"node":">=20.10.0"},"gitHead":"00b8d9c82153d752e061b1606fa48c5c69037c52","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-00b8d9c-202607151453.0_1784127320672_0.399815921445964","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-844a704-202607151551.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-844a704-202607151551.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-844a704-202607151551.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f305e2c863325f4c0bcd8b17eb346a4fc50f6bc5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-844a704-202607151551.0.tgz","fileCount":511,"integrity":"sha512-+UJUg4Obtr+Eq9aeFrcivplu3DzvVacnjdOyDMk+mEayNCUyZCMAmqAW5vohasHZhrYJDCGl39/OVBXJ2KYklg==","signatures":[{"sig":"MEYCIQDbAEwMM1xgdH08nW+GEgq6Di0Ks5fTqNeJ81gX+7fOAwIhAIXV9xm3gIMKHwNl+aQKKHvdNs/k+ur7LFLHxz/g9llA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35619428},"engines":{"node":">=20.10.0"},"gitHead":"844a704a59ea20b8e501d6c13adece2cffef7fdf","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-844a704-202607151551.0_1784130804987_0.9322723521899356","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-bf4de33-202607160938.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-bf4de33-202607160938.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-bf4de33-202607160938.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bf1783af85e15c75b14d1033c9ec41c8aaedffde","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-bf4de33-202607160938.0.tgz","fileCount":511,"integrity":"sha512-DBq4tLD6+7Gjk0fyFLCtAZB8+7iVkPtpBVxfTUJ9lGJOg48LM/qiADYIwJXiWgmnOgRrVAkPo5DCB6EgMwZdRg==","signatures":[{"sig":"MEUCIDty3RihAYyaxumVvAqIF1KdwxRR9wxZxTEASegUt4STAiEA61sGT3BSHHGQ+CBMFAfFz5blQEGEqVdJF22on9ioM4Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35620521},"engines":{"node":">=20.10.0"},"gitHead":"bf4de33567697d870694fa727874369e30549540","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-bf4de33-202607160938.0_1784194799367_0.6558640353829306","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-18a1d55-202607160947.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-18a1d55-202607160947.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-18a1d55-202607160947.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"69a328910c846b595cd4f7143af89263b6b3f27a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-18a1d55-202607160947.0.tgz","fileCount":511,"integrity":"sha512-fCFejF4F7jC4FD+/jhrCDyJnDlaROsceAQLNSj2cjU/PbZKdYRW+TigjjsTzSEA2U2G3JAeBENOK10AWgTnc7A==","signatures":[{"sig":"MEUCICpfKGYvHu8Ln4fP5CNbo0nXOqZW/LH12TWXkYUKnI54AiEAnTmNzs2IXU0h5MJyY5a2xhPhBTzrULZKpUGF0mynZXk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35620281},"engines":{"node":">=20.10.0"},"gitHead":"18a1d55f3904edcf6d35e3b23959a2daac961c3e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-18a1d55-202607160947.0_1784195360569_0.6268762572702171","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-56c95c3-202607160952.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-56c95c3-202607160952.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-56c95c3-202607160952.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"61fd91f46dc6e8c28403ed1bcde65c2b69819b51","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-56c95c3-202607160952.0.tgz","fileCount":511,"integrity":"sha512-2le9J8yX7awMK8jGCjfUuAUan10ejETSA0pSC017bKvaCSL6Y/hntZTuXKxauQ3dvNl/+alJGy/LknXExWteLw==","signatures":[{"sig":"MEQCIGv1Ox0EMfM9BEHtnFPTKME4bGdylQQN1Ce2DIvPI/P8AiBHKTeJi1mK5WcbIlhzXvGfXro2r0YsnXBI1mqmjLqyKA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35620092},"engines":{"node":">=20.10.0"},"gitHead":"56c95c3433564c56f09b094bc150c72c7bb26f51","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-56c95c3-202607160952.0_1784195673345_0.4813589545640189","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-56c95c3-202607161014.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-56c95c3-202607161014.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-56c95c3-202607161014.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"11d5aed62e998cf3f3d270bbf84efb690aeca337","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-56c95c3-202607161014.0.tgz","fileCount":511,"integrity":"sha512-x9fuGG55ltq49bXQSqxvnZ4lrcep+mtF6u3w9BYrY6JfD5rXuTNbov5pyN4KQNsrULCXMaBaiUnobEYqXIluMg==","signatures":[{"sig":"MEUCIQC/ag2wdbBSEGbfy7JR2Tp3nYEPFyjlU1FVo1jQ2buVoAIgeAFUgOa2t1zyEgktuqvB3RCB1Gq817sdGCstWZeQzkQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35619657},"engines":{"node":">=20.10.0"},"gitHead":"56c95c3433564c56f09b094bc150c72c7bb26f51","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-56c95c3-202607161014.0_1784196939255_0.2017022349886557","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-892eef2-202607161846.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-892eef2-202607161846.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-892eef2-202607161846.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e457956620b8630251b1bfad52bc22b020e9978c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-892eef2-202607161846.0.tgz","fileCount":511,"integrity":"sha512-x9k78DLnzHni+tofWIWSJGWFfPorF5ywpQa0mFPbS5DnxLVLhLX0liPP9LHraREDaBbod9yT27BZUV1riMGUUw==","signatures":[{"sig":"MEYCIQCXyXjxxJrO0MMarDWCROgU2pzveSaV9d+Dt3fmh8zYxQIhAORriK49iWBViP2hsTcr+Yf8DyY1sXLLpFZjkMOWSnPK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35623173},"engines":{"node":">=20.10.0"},"gitHead":"892eef219dc754f3b1f7eb4b2c7f062125797b08","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-892eef2-202607161846.0_1784227671036_0.26374198841579855","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-c2393a0-202607161851.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-c2393a0-202607161851.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-c2393a0-202607161851.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8503e1f716f10d872ccd867bd77988c1411d7ba7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-c2393a0-202607161851.0.tgz","fileCount":511,"integrity":"sha512-RhLq6/EVmDsP5ZAnO309jPXf9O2o2Vws7ne4971znlw8jdi7VjdGCvcXCjQojpwHSJVu3HIXlqrTbxxIBTES0g==","signatures":[{"sig":"MEUCIHwg/KYVvEi3glX6552QcHpIFpZHH+uOF6CbRKdi2fQfAiEA0Ejt9J/sYDtN3F0P7HIKO/Xf/WI4vVZAGpFJH405QRQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35623354},"engines":{"node":">=20.10.0"},"gitHead":"c2393a02a8e72b503e6a3c2d56e44fdb0714ebf3","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-c2393a0-202607161851.0_1784227998191_0.9979828347247299","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-b0e7d73-202607161856.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-b0e7d73-202607161856.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-b0e7d73-202607161856.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4b4710ea2880573d9dffe7b62f7fa15d4a9c0ebd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-b0e7d73-202607161856.0.tgz","fileCount":511,"integrity":"sha512-EqhPYNDh5B9yKuZkCxtAN5vMVMh15BlTKRSiCbKoJ4x4IKmK2A8TUkpTsGojYkFq99JAEHZ/AZqv8LDm7264Ng==","signatures":[{"sig":"MEYCIQDEdvRaS23pLvGsFcQon8dFTLwabDWcsIEzhAXK3uR57QIhAPngb2zn7Cnxtu1GZ9XE53sH/VUUq6Rk2tSRYalU0TGe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35623281},"engines":{"node":">=20.10.0"},"gitHead":"b0e7d731d95c5470a2e630436733eccbbe68e4ed","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-b0e7d73-202607161856.0_1784228278401_0.43124383288068757","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-4caa36a-202607161901.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-4caa36a-202607161901.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-4caa36a-202607161901.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"622a85f666d0cc69f31f4969e99644f7f6f57a94","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-4caa36a-202607161901.0.tgz","fileCount":511,"integrity":"sha512-OOI9qcceuVayzOssR8RsqfO/rnRYvPQDa2HSOqKDWU/NbJoblHe8DYmlQn9iLynPnRYvm8Qg9i9hveV1dsJ47w==","signatures":[{"sig":"MEUCIGB+eA79igWp4EDxahQSOZ9Hp7jCyGvcdyUmjRJGH2IBAiEAtpFP04+QButUly6C9EQrKMmyvO6QMezOD6HdwSwF2ng=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35623556},"engines":{"node":">=20.10.0"},"gitHead":"4caa36aee887dbb009396ce57ffaf700d6afa750","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-4caa36a-202607161901.0_1784228594210_0.384527944586583","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-788ccef-202607161906.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-788ccef-202607161906.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-788ccef-202607161906.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"aef82deb9cb84bf8d95d5ee85c1a9642eaf7119a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-788ccef-202607161906.0.tgz","fileCount":511,"integrity":"sha512-PZqda72rDWhKobe4SGM/l4iRCRpDozAcM+ITMeyDV/StS4nUQ9YOWec0aAvcLa6Ax8KjtlQH1AIR3Vz9et4w6w==","signatures":[{"sig":"MEUCIQDwNDLM/JkMUMEPKY6lUkoqorf1g2lkmS7Ie6hCh8ziCgIgfRJt3HnjrDQkelUzM+OVOhE+PLOS75JWDUVy+UAxvOI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35623414},"engines":{"node":">=20.10.0"},"gitHead":"788ccefc7b961a7da7cb2813c0896a928c32a42d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-788ccef-202607161906.0_1784228890141_0.07249535141282948","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-788ccef-202607161928.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-788ccef-202607161928.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-788ccef-202607161928.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"58c2b00c7d98a0c7c37f5a0b36c91d05d342c7d8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-788ccef-202607161928.0.tgz","fileCount":511,"integrity":"sha512-c4f2bMapmXPQAARav7VotRE4Zzb8CywwabllUPMKlzLKRklIJaJ8LETcS2Je5xUJEgfvy3/xTGk91figwmUywQ==","signatures":[{"sig":"MEUCIQDH4emCgdMuJ7Dlj3mGps2WQ1VMsFNck3xKha3D+iC3hQIgFa2jytmWT5MlfyTR1JVeSeaSv24SkFH7cVQUN2MOjQw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35623184},"engines":{"node":">=20.10.0"},"gitHead":"788ccefc7b961a7da7cb2813c0896a928c32a42d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^9.1.2","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-788ccef-202607161928.0_1784230198192_0.7672893322732004","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-d34cdab-202607161951.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-d34cdab-202607161951.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-d34cdab-202607161951.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bd1799269076236b4e3d2cab00118416be3f54eb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-d34cdab-202607161951.0.tgz","fileCount":511,"integrity":"sha512-Ft2XSyxbHcDGevhzxKIUEbRjlLlbsVsU4ZljzOkH+t75QwLxsqYC5qNlksw4etBB0LltChZyXRLtNZnUE1NWNg==","signatures":[{"sig":"MEUCIQDqhMQdsabg3s5tUXKiNiaAfoKRA1h5PMrS2bmLhCFScwIgHZkORPanRSuf4C+jc2kpt7oa4nUK3rIUF6rncT5fMiU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35623249},"engines":{"node":">=20.10.0"},"gitHead":"d34cdab15c7919ec623d67fc5da431bd9deeaee6","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-d34cdab-202607161951.0_1784231623451_0.0012727575055027085","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-e2f1a00-202607162000.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-e2f1a00-202607162000.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-e2f1a00-202607162000.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"586e6d48f0c3ec8472316162f182fb70113e030a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-e2f1a00-202607162000.0.tgz","fileCount":511,"integrity":"sha512-RGdLDQ7+SBsLZ3GjV9AE6sFXRMh0rvVS8uSWKgLyNiZWcbWvhrs7qxLPHmFn74KE7MNKnggmUbnGvVPRxKhO+w==","signatures":[{"sig":"MEUCIHhDP3NWr4cYtRxoswS8tGbGSXn4OKodVJVDw6kJNldpAiEApWpUeeUQKLYKFXYem6qFRp1z+v0x3SFNoHk4B12J7v8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35623411},"engines":{"node":">=20.10.0"},"gitHead":"e2f1a00628043b966e9e376ce0338c3b6ab15997","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-e2f1a00-202607162000.0_1784232146083_0.5583607328773346","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-8fdf6ed-202607162003.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-8fdf6ed-202607162003.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-8fdf6ed-202607162003.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"eccbc2ae00b74b2dd5ea490c75f2d3dae5df883f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-8fdf6ed-202607162003.0.tgz","fileCount":511,"integrity":"sha512-hrxuuuDPBRRL1BEJ+px2xrjceU2kK3PDS42UnZZG8Q+cnIaUEFK/0fGvvjxDfwfUh8X6aC49HBXvgfbSjkHrQw==","signatures":[{"sig":"MEUCIANNUoUk/h0jfGXDcl+DQ3AIIEPl5/BgkstPLVIu2QdoAiEAuYI3XOdqXWsi+iIDJK/XMKhq/vZEWu66VzNevHV2drQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35623269},"engines":{"node":">=20.10.0"},"gitHead":"8fdf6ede116e80a50aba9bf819801c78832a4874","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-8fdf6ed-202607162003.0_1784232339136_0.7992161299656011","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-577b03d-202607162011.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-577b03d-202607162011.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-577b03d-202607162011.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"75ed30d820d0d82995695de9d1ee66f51438052d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-577b03d-202607162011.0.tgz","fileCount":511,"integrity":"sha512-zEKP2RPEkwG3uzGWRQvIC6E9yHuIl76cvNEHDBuAKT+1MyVAOjCPV0uU+/5Rlrxj0o4fTQj3ZQKmjHLojuj6MA==","signatures":[{"sig":"MEQCIBqaAbiCbQOEVDK4hyrhAqqMn/PIKGL75RrBCc09iiNoAiAzDlTh9SMuDMS1mu+IwpPS5hhVRJHD2JwhhUbg7TpWKA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35623339},"engines":{"node":">=20.10.0"},"gitHead":"577b03d4bd4f61583a23381b7e8f310a1cca12b7","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-577b03d-202607162011.0_1784232799540_0.6827168515460389","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-ce4235f-202607162018.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-ce4235f-202607162018.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-ce4235f-202607162018.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"040d7752c043cf280d95c65479dc8faf8260b86a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-ce4235f-202607162018.0.tgz","fileCount":511,"integrity":"sha512-uhz3VYFp0P0hGZRfkPDF3VjgOxutCtGXMLxyPMg2KASrAexpw/ajyhupdWWdh5ws3thy7AUgAOcsV+xAC+5kXg==","signatures":[{"sig":"MEUCID+Bhoixc02LEx27IJ05yQZjbxs+oL0o8E2ZBKw3/AIHAiEAqNAHk3lijCgsZ52rxSu2dOBxkNjcYr1S7ehXW3VghXU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35623738},"engines":{"node":">=20.10.0"},"gitHead":"ce4235f1577bad3cde3ff0305af2b9a4833a15f4","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-ce4235f-202607162018.0_1784233218335_0.5834803421502657","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-bb6fbd4-202607162022.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-bb6fbd4-202607162022.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-bb6fbd4-202607162022.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b2333ec0176698c4288ce09b17a0192f4a913400","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-bb6fbd4-202607162022.0.tgz","fileCount":511,"integrity":"sha512-8DdxzT1jyvDKCSIdU/4yId8KS9US6xQ8uVbMvADtd/y1eHVGiefR2cxYhpo7qNuz40NUtVVJmIevtiDRgYSCGQ==","signatures":[{"sig":"MEQCIEP3wb2+gyISCsD7fpzGIgz0XRU1Vk2dTEuTcwr6wKp6AiBkckZsfcSlcPZAPoeV9CPSs2v76rlc+U+muAqAHpIN4A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35623568},"engines":{"node":">=20.10.0"},"gitHead":"bb6fbd4a23abffeb8b85bd58dc87023e61187403","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-bb6fbd4-202607162022.0_1784233424624_0.2440467518946472","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-c409129-202607162025.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-c409129-202607162025.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-c409129-202607162025.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"655139a2072395ad58f9214d9f84c9046521112b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-c409129-202607162025.0.tgz","fileCount":511,"integrity":"sha512-AVfoqNLmDXTc7TrHxcDTgaWAnOUPf5lJ5d9elsc6I/6R15Nt8kMf2QxQWDcAjnzBRGbmSHACZwkV4t9aYTyClg==","signatures":[{"sig":"MEYCIQDjqCfmKahKbKH0DRPQFXdxHrQ2xW4l+o2wX2V21P37gwIhAOeCnV4UogxzeDZ+SnrtFECqB2PI1WPdtS/E08ffM84Y","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35623372},"engines":{"node":">=20.10.0"},"gitHead":"c4091298c50938485bfdc80c206cce7307fdaa8c","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-c409129-202607162025.0_1784233624030_0.6715095311295367","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-ea557e7-202607162030.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-ea557e7-202607162030.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-ea557e7-202607162030.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"37110d7588c32128e906d8ae85189cadaedc472d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-ea557e7-202607162030.0.tgz","fileCount":511,"integrity":"sha512-BH5wZdjSbSjQi68CMVwENcYl+QbAR5JDiRlfO4qA+AJqBYujWTZXsTXvpmurH/G3XR0n8FE4HV7sQBj8uFdIvQ==","signatures":[{"sig":"MEUCIQDXQF9WSclGvj+Hh3BW9V/HW/9no3T9PEF605AG7dJxAwIgYq0lJURiynwtrEgK+72uvWLhPI71CXAb44fn5IbSbJE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35623758},"engines":{"node":">=20.10.0"},"gitHead":"ea557e7d364fc057b380373c186d71082636f42f","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-ea557e7-202607162030.0_1784233898374_0.8774302182480389","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-214e2c7-202607162033.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-214e2c7-202607162033.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-214e2c7-202607162033.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bfaa74ab963309af5a5ed217d7eb17227db9ec9b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-214e2c7-202607162033.0.tgz","fileCount":511,"integrity":"sha512-xlju5UFIJRJOzPB5/5xJsZay1zatrNdsJFOv0htzzmlMeTpiZwHPjneJICo83AxK5wvh0vxINBRCWKC7OvA2/A==","signatures":[{"sig":"MEUCIQDRAZCODBm+Pql1RKoITnEY6re4JKjWSvolX+ZLExH9zQIgD2VuQYvpIUSyGvJfw5jwglTCQGME3dm5lzweJHhs0UM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35919543},"engines":{"node":">=20.10.0"},"gitHead":"214e2c7a27542fdbbc17237bf78449f573f2a99c","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-214e2c7-202607162033.0_1784234107523_0.4403883259060737","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-214e2c7-202607162054.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-214e2c7-202607162054.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-214e2c7-202607162054.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1ed7f9a374a21c312d347a03b30fbeb6eceef268","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-214e2c7-202607162054.0.tgz","fileCount":511,"integrity":"sha512-+BXBJ3yoQ51zOFxbOu0NeKUclSmNATCCsHpjZPfth+E1xWiWsqkqW4WFpBTBbbccpnhlLdlzfS3haGdNoo1Ofg==","signatures":[{"sig":"MEUCIGUQV+Vv6txlTzrPz+1zuF5QoelFtji7RqpcNGGZyELJAiEAiSK5dNFp9aSM1SIfLYVtjHy7hzSDpUJ3eFtWcBwnSw4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35919481},"engines":{"node":">=20.10.0"},"gitHead":"214e2c7a27542fdbbc17237bf78449f573f2a99c","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-214e2c7-202607162054.0_1784235389010_0.14329642772999573","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-ca477d3-202607170903.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-ca477d3-202607170903.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-ca477d3-202607170903.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ac993c28cd64bd21b93f5fabc1a099fbc03e7f99","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-ca477d3-202607170903.0.tgz","fileCount":511,"integrity":"sha512-AQtClvhPZnQNnUXFYhCgMGwbrATWgWDfGK+XO56SKd+brXeKKav9OJa0w0CbOz/O0GT4FfSATAkhxdPckqo6Yg==","signatures":[{"sig":"MEQCIFOru4lxL9NpNgzN5foxWOK4fh5UCdPIaDG6THiBUJK6AiBbMHwLf8PtiAtt+LpIDENf+x0c1SxpC1ldevsPjZYTvg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35924431},"engines":{"node":">=20.10.0"},"gitHead":"ca477d34fc3879ce435f6d48d4933de8a736eb84","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-ca477d3-202607170903.0_1784279122403_0.218653924397336","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-19e0c9a-202607171125.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-19e0c9a-202607171125.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-19e0c9a-202607171125.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"48fbbeca42cab9841104c3faaa4bdc86b429c9ad","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-19e0c9a-202607171125.0.tgz","fileCount":513,"integrity":"sha512-hL60mPBZkNo+WtZnmaW1YyhRATtm5IxNDguyLUfcFFqoT6aril9tWNEd0+iTNCrWhtmLM8zKGzgF8xAwbJgAoQ==","signatures":[{"sig":"MEYCIQCK+idvxPi+UjK/uuSuFxDsKswyWQxIwsC1PszPesFCoAIhAOyBJIy3NJEPYIlHvPOE9Y8zE2hFna5ivLG+wSIOdBSh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35930922},"engines":{"node":">=20.10.0"},"gitHead":"19e0c9a407cf1a59e53a5c76a4a96dab22f9f6e3","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-19e0c9a-202607171125.0_1784287601965_0.2419389899726423","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-9209878-202607171245.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-9209878-202607171245.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-9209878-202607171245.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a6e42e0498b054eab6fd08dfb77dc7ef7c334816","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-9209878-202607171245.0.tgz","fileCount":513,"integrity":"sha512-0i9CfHz+NafVSgHe9RhAw3B5pg8/17ANItQR5/gFAWr0kL/a6XTFp65yuz3DhGpAwqd+U4V2WQbGeIbWDkXPyQ==","signatures":[{"sig":"MEQCIGF9xqz8UpRQe5MfQA47ptaAh2hYrdXTgppeI7krZ/PsAiAm/qU9SKZCY/5EGdK6SO1ES0eUKNWNhUB+P88V23MSIQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35936661},"engines":{"node":">=20.10.0"},"gitHead":"920987817c80ec92d4ebbf7f4346908afce17c64","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-9209878-202607171245.0_1784292409100_0.14464889924478563","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-9209878-202607171306.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-9209878-202607171306.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-9209878-202607171306.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0dd8a1cbe4e7eb052e5d7d8b1e0cd22246a8b2b0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-9209878-202607171306.0.tgz","fileCount":513,"integrity":"sha512-78lVbB4FpwlD6Nf7LacjLNCf6H5zNCDz1PeDjqMADeGElXj/z3K0sHIkL3P7BvY9tm75icsuT+c40esYdKhPsA==","signatures":[{"sig":"MEUCIQD+BwpqRWclNTOjVfaWQmhPsg0DT0HIsVyOIKRKZ9ULjgIgfUyA/3zxo2oW9DeeopzXqHoILna6nSyh9pk6XbmrXkA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35936677},"engines":{"node":">=20.10.0"},"gitHead":"920987817c80ec92d4ebbf7f4346908afce17c64","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-9209878-202607171306.0_1784293671870_0.02980052008826517","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-2eeedc9-202607171337.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-2eeedc9-202607171337.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-2eeedc9-202607171337.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2f8d82969f24fee0f5c53c1586ba22b94d326710","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-2eeedc9-202607171337.0.tgz","fileCount":513,"integrity":"sha512-Z8Yr4WlpQogyAbqdMYSQK5KluGXX4MlIkLD0RlyqGYECF/Jn0/trCde8K70M/LaZg5Gy7ylJezpMpvHZg7kfbg==","signatures":[{"sig":"MEQCIDbw7mKRRNhGBbJhDi/u8SlvzdvpUnQ91sUIfTDt4rcBAiAeTVwH14qz8DDeZKYhfqOlyKcVu0dCsNmV36wi7GxtEg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35945009},"engines":{"node":">=20.10.0"},"gitHead":"2eeedc96dedf295898be52e14c2db4bcddb5cb57","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-2eeedc9-202607171337.0_1784295537398_0.8145436216475785","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-2eeedc9-202607171358.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-2eeedc9-202607171358.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-2eeedc9-202607171358.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9b811897a05e55aa8ab6fa07e137376a96019c4c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-2eeedc9-202607171358.0.tgz","fileCount":513,"integrity":"sha512-cpf16PZpgEBQgL92ZDdw/zrX0fYXhdW+XGFHXmHABZsr9w7vUEiY2IrmLtDpkzqzOP9sZas3ByDnLKZ6CP38ng==","signatures":[{"sig":"MEQCIDEZNn3ckDER7DEiqONBjYpdogvIrZwmsJXB4R+/JjQ5AiANoCaPJOWF1BYNtnmTndaRd4YyFhJ6ljU7Dx2zc2wUQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35944891},"engines":{"node":">=20.10.0"},"gitHead":"2eeedc96dedf295898be52e14c2db4bcddb5cb57","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-2eeedc9-202607171358.0_1784296796308_0.40626585934591875","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-809d320-202607201404.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-809d320-202607201404.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-809d320-202607201404.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7fa2879c0fd09adead474685c4b7ea3a55607cbe","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-809d320-202607201404.0.tgz","fileCount":513,"integrity":"sha512-A5aJrgi26oH9MOWM+iLg4X1fYnQ6NovbFNI2FLfiCbRLYfKURJaTrZbSJCQXPzzEqZyYpK+p/zTPS4TMWVDTUA==","signatures":[{"sig":"MEYCIQDzTkd31Oi6l3RI4EhU2IDbEOmEM2YUc2tBDQ2Dlw1gnAIhAMsOPJmE4vI/JgXT5Eq54MVY4ptsi72I2YaYWHQEjZ77","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35946274},"engines":{"node":">=20.10.0"},"gitHead":"809d3201eeaa55ca7a032460f1386d46fcc3bcc6","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607141537.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-809d320-202607201404.0_1784556389447_0.8783491557934415","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-809d320-202607201419.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-809d320-202607201419.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-809d320-202607201419.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"21eaad1238c9645e11344ea30be565ee357f2524","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-809d320-202607201419.0.tgz","fileCount":513,"integrity":"sha512-icRgQzZuydubj+n6c2Z1NWt1Rgcza+yRTPx75rAjv5JPeai7qpaNMN0SfXsGatZovbGc7p9iAikka53wYpJiIg==","signatures":[{"sig":"MEUCIQCr1YMPqQ3ApVc/YirYksSBA/0U4Y+U/m4xexP/3U3MaQIgHH0kKjfJ7hIBumDVgkjp+Qh1iLU7JGIdOBqGoDutQjE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35946304},"engines":{"node":">=20.10.0"},"gitHead":"809d3201eeaa55ca7a032460f1386d46fcc3bcc6","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.1-cd2989e-202607201418.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-809d320-202607201419.0_1784557242570_0.2430039407870872","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-809d320-202607201421.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-809d320-202607201421.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-809d320-202607201421.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"04601baad1636fa1b364a61f2e4b18b4c3a43254","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-809d320-202607201421.0.tgz","fileCount":513,"integrity":"sha512-6q+obNCKqveyl3vhJfY2kGWUDOII03L9V7QOJiLvFI+P+bIdjadL58+tnnncUciVSGEmDWa+rzvr2BShza5WoA==","signatures":[{"sig":"MEYCIQD9Cfn3KaxsIA9p9Wv7OEOfdEBE2XnJ3eZHpkkjBnfQcwIhAI+V8BJmXGBq0LmuNDakVeAPmrWKuhVW5OenjLmerclR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35946604},"engines":{"node":">=20.10.0"},"gitHead":"809d3201eeaa55ca7a032460f1386d46fcc3bcc6","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607201420.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-809d320-202607201421.0_1784557370277_0.9177320020967132","host":"s3://npm-registry-packages-npm-production"}},"2.32.1-809d320-202607201426.0":{"name":"@flowfuse/flowfuse","version":"2.32.1-809d320-202607201426.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1-809d320-202607201426.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"12ffc599eaf1e8d953805f88296fe87c6469e9e0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1-809d320-202607201426.0.tgz","fileCount":513,"integrity":"sha512-nedh9Yil+6n6P2Uu/4bx6gh1PBCv0lCUgZSE+mZbn7nzd32woxIkOJ3gWjlt7S5OdVFQ4T6S1XuatUgjyppPSg==","signatures":[{"sig":"MEQCIEeLALw9TSmqWPaqdyuxS1kqKup8TBBDbsNylN1P4wlqAiBPDFxO8w4aVATC/FMyVkL0zFhqVkCfJ96OEV5aXFJiQw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35946467},"engines":{"node":">=20.10.0"},"gitHead":"809d3201eeaa55ca7a032460f1386d46fcc3bcc6","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607201420.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1-809d320-202607201426.0_1784557665694_0.5860065608103995","host":"s3://npm-registry-packages-npm-production"}},"2.32.1":{"name":"@flowfuse/flowfuse","version":"2.32.1","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.1","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cd4ffd960532fddede3b708b9ba54ae346290116","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.1.tgz","fileCount":513,"integrity":"sha512-9NOb6x7FywLucZVm3MhT0imltUYh4/NGBZIVaZql138pBo/nT9BiaE5NjgxUvw+aode9fARM6zd3RNCan04ULg==","signatures":[{"sig":"MEUCIDeUtaYtUgxbx0v7k/E/YeqNMCJ9cPVG1mknjvx0usVnAiEAnT8HC1ZTKQa/u/EBs9NbKhUJXEDRvEw580HtdQFilp0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35944453},"engines":{"node":">=20.10.0"},"gitHead":"ca9224bfe1fced930dc4a113772e2cb8f0203a58","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"^2.32.1","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.1_1784560266784_0.5654543079012608","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-ca9224b-202607201528.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-ca9224b-202607201528.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-ca9224b-202607201528.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4085bad6220131a83d8b5ec6c8202d44378f7db6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-ca9224b-202607201528.0.tgz","fileCount":513,"integrity":"sha512-wtpORsLGngi5OO891sOIelARdaIUuM2fZZnarSpEO95R717WSx6W1XRNBp0im5x1XroV4exBUqvIJsloX+fpJw==","signatures":[{"sig":"MEQCIGm2OtRNBnJyPVNOolybwB59YIVBjwrLu+JEURIrKbs5AiAmLtVbilVJbetdJ8wdiActY5TRFia6k9Yl6tiOBYcZZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35951398},"engines":{"node":">=20.10.0"},"gitHead":"ca9224bfe1fced930dc4a113772e2cb8f0203a58","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607201420.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-ca9224b-202607201528.0_1784561417969_0.08945118899252935","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-752ffb8-202607201957.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-752ffb8-202607201957.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-752ffb8-202607201957.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2999336278f6b013f5d5101fedd30685f1e569a6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-752ffb8-202607201957.0.tgz","fileCount":513,"integrity":"sha512-HPXs1noqKlQBXR8yNHd9s8h79+kaOZIC5TwSzkFCbHxBmJhCcOk9yr/8o2XUurLMq+wBoc5k+XTe3/sobdppMA==","signatures":[{"sig":"MEYCIQDXfA4+1hGHWtyh4VDBhNqvohzTArG6sN7nBukD79qdwgIhALWfF+4kgHkdZAhWYwky3VhX/2zWPyCAx3ZBaHYgEZNz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35951432},"engines":{"node":">=20.10.0"},"gitHead":"752ffb82651b9180038d97654698b0a125ce274f","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607201420.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-752ffb8-202607201957.0_1784577563390_0.7952156944332838","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-722e3fb-202607202000.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-722e3fb-202607202000.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-722e3fb-202607202000.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4832acbe77551d35bd8a615071049207d7952fef","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-722e3fb-202607202000.0.tgz","fileCount":513,"integrity":"sha512-LmkFm1a/r9XowhQW1/qw34xmCnLEstnODxEptb7SqT5cypdTbXPOupRqwx4wKgTxwcH8B7xqjzysuKSF+/rwqg==","signatures":[{"sig":"MEUCIQC+S8GKz6T86BFybZ56XE7tdEAPaLT4fV5/3KPm1sO02wIgfIwrwwwevM1mEB+WI1+TnEP3VbpNVcb7/LuDO2VR4W0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35951829},"engines":{"node":">=20.10.0"},"gitHead":"722e3fb1ab5128552c8be4027bdacfa62ecbf44b","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607201420.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-722e3fb-202607202000.0_1784577692831_0.528892042139051","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-e148667-202607202003.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-e148667-202607202003.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-e148667-202607202003.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a9a7806bde41b45e8e5a86acae1d1f96bdd4468b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-e148667-202607202003.0.tgz","fileCount":513,"integrity":"sha512-doJ1a2fjDtll0s9ye/X2YuL+FYXYBcNhabpjCQGF1O7zoiQsVr2FLvqyTuMya1Mp5GpA917NU+lmfBfzYX8UOw==","signatures":[{"sig":"MEUCIHfrNTEzUlKEVyPSatojz06aM539udSttazy6HtUDj0YAiEAnZf1A+erl2HGtQmjoMw7ikpcpeqB6t1uXVuZHREIfiY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35951414},"engines":{"node":">=20.10.0"},"gitHead":"e148667130972cf46e1c82e093ac93b10ed7c5fb","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607201420.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-e148667-202607202003.0_1784577907420_0.9850402605521711","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-c32e95c-202607202013.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-c32e95c-202607202013.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-c32e95c-202607202013.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2e11c93cf77763abd72563c2f17d7552039a6e3c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-c32e95c-202607202013.0.tgz","fileCount":513,"integrity":"sha512-xuq1ntthSSZ6RCZGgj3iZPAsp/ngVjcjPEGZQpSwzQ3bL+fSmrW0L+AG8JQVUCi7mWtalbqp54xBv0StAz9oig==","signatures":[{"sig":"MEYCIQDQCRmp+cpO574KtmhaZ2XoH3QQVD+uJo2usmqmOIqE+wIhAOm9fNK6dBGJ1ioYcDhfN3GpcoJPl36op7u4XBSfuAD0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35943881},"engines":{"node":">=20.10.0"},"gitHead":"c32e95c829e297eda0940400c967672da214e110","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607201420.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-c32e95c-202607202013.0_1784578545882_0.5602810751210212","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-86a3edd-202607202023.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-86a3edd-202607202023.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-86a3edd-202607202023.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f8d468cef9d9cd5713a0747aba40fb41b7355009","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-86a3edd-202607202023.0.tgz","fileCount":513,"integrity":"sha512-htkwtauxwYgKZaA8OjKRfJtXzH64Gt6ZGE7g4/i0DQwtcphlx7THsH3NNahKSe9LAqyVcUIl0HZoevoZN4pAeg==","signatures":[{"sig":"MEUCIHwrOXrGHHnXU/BwrZKhNnw96btTLEcYeXARpqMrGXcMAiEA1+3BLo9W91knVp038KpmnEDrjLZkyBj06PFxnq9cxyA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35943744},"engines":{"node":">=20.10.0"},"gitHead":"86a3edd67ae9997664c5d5c6e60c4830df117f36","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607201420.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-86a3edd-202607202023.0_1784579104668_0.3619280289803888","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-86a3edd-202607202044.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-86a3edd-202607202044.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-86a3edd-202607202044.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f5c3dd61cfd42bbefdb8ab5678c6243414307293","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-86a3edd-202607202044.0.tgz","fileCount":513,"integrity":"sha512-mqW7EovBKHMS9x8hFpN02R3QlKCMX+I1p5W5xreHG/deEhOPaBHwvMfeOJaFi40dQRhwveljekMB5KsIqq0yZA==","signatures":[{"sig":"MEYCIQDYdu2nNikkOoJjLlXpqnkB44agBHTml7yF/QC8ofB1UgIhAL6r62IUng6QJL4+SlT9lgfUEoaqsHo9IzOwSVXdJhW+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35944031},"engines":{"node":">=20.10.0"},"gitHead":"86a3edd67ae9997664c5d5c6e60c4830df117f36","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607201420.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-86a3edd-202607202044.0_1784580352358_0.8202901930464881","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-a8dee95-202607210817.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-a8dee95-202607210817.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-a8dee95-202607210817.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b56c4bdb9184cccaf45ce6d85e7072ec99e5edb3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-a8dee95-202607210817.0.tgz","fileCount":513,"integrity":"sha512-UYQaT5Jd5fqdjkXbJtcDf7YhghkfUbqN9/zPJEz4a3Mj87t/WkQfIngbEUkHvQOiXxAGjDCADPecWZnbgHoF9A==","signatures":[{"sig":"MEUCIQCU2Xk0l3avQoSk019TAx1wa9Axeosp09eVDvvpc/h9tQIgOxkd0fhXhU++J66F+wQygmgLlYS5hwoiqhSk2tyHGbE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35953955},"engines":{"node":">=20.10.0"},"gitHead":"a8dee95f236b888aa57bdb080a79b547c2f34fc6","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607201420.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-a8dee95-202607210817.0_1784621949112_0.7632139933479889","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-acb7c11-202607210836.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-acb7c11-202607210836.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-acb7c11-202607210836.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3d420b1741320359bdc8f9f932349b6f35ec18b9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-acb7c11-202607210836.0.tgz","fileCount":513,"integrity":"sha512-Lrky9i2J94KXVQhACNZoTEFVlix+KLf4hvHgonhBd5RWLQEJMSPN0yU09WAkKfRSQoQ8/S/riTg3vw5ibTUsFQ==","signatures":[{"sig":"MEQCIBT46aKmtQxV/vgkJwbxS4JnCL8H2L3TZPhkZpqo47hzAiAllJVI+6HdBYgJSodSpVzz30fmUMzklHy1CXU4kPQ79g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35954517},"engines":{"node":">=20.10.0"},"gitHead":"acb7c111e58526340aef3162b31a05ecb4c4cf63","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607201420.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-acb7c11-202607210836.0_1784623105297_0.7733258857464962","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-5802322-202607210902.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-5802322-202607210902.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-5802322-202607210902.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f0ed2647e5cd5cb998c9840b359da7f6dca62bfd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-5802322-202607210902.0.tgz","fileCount":513,"integrity":"sha512-8iCwEc3swFWP5tn+d/PLV5nr5p2ymQ1rYD60VO5KpEih+2PcGDSsMZ2qo+drT12oZ0iT0nSN/ngreiKJ9I/7tA==","signatures":[{"sig":"MEYCIQDhWNOysQ/cUGmeB78XkNp6npfAyeQXcjXcaTWgH5HbRgIhANeR2gVvcaMhfTIh9voblBBt1cxTSIzWB9o6o6Q6ro6q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35962184},"engines":{"node":">=20.10.0"},"gitHead":"580232252d71aebdcd34e99f7be2306e014a6fc1","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607201420.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-5802322-202607210902.0_1784624657432_0.63657455291301","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-7de1857-202607211439.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-7de1857-202607211439.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-7de1857-202607211439.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"464739db07670343137c61c3394378df65087167","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-7de1857-202607211439.0.tgz","fileCount":513,"integrity":"sha512-rMvnyV49YwxMgSbtRL3gbXSnSRLF2lnQZde343BzjNeDd48MdUenFGEbtd8dGhhtL0pqguwblIaPQtOEQ+PNEw==","signatures":[{"sig":"MEUCIQCbGOGoYsEBmMCrYIXUsaiwVtSX43TIK3Fb4Dn9mme0twIgA6z9/Oqm53xi1YyeOrr/O7zXMmF3Oru7IZb2VismpJc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35968499},"engines":{"node":">=20.10.0"},"gitHead":"7de1857996e0660291697f8187c4578080a1d872","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607211439.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-7de1857-202607211439.0_1784644899823_0.42377896494495104","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-7de1857-202607211455.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-7de1857-202607211455.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-7de1857-202607211455.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1e1811b01d66552af2596ea78c61356b1b87029d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-7de1857-202607211455.0.tgz","fileCount":513,"integrity":"sha512-sm7pgy44AzknS69r6umUhA9qvR9lfyyvYQ/zwVGraRRybKpVoeAN5xBUS55rwj1H+7oWUoAg7wNISLLDvRbDRQ==","signatures":[{"sig":"MEUCIGUfkiu2EwuklShihZjllOC/j04Myj+tl5fyx2o1/amKAiEAlvrzZxpQaXBOgJgCzRHNLkfNQePqQHr4QSxVdVAMlaE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35968713},"engines":{"node":">=20.10.0"},"gitHead":"7de1857996e0660291697f8187c4578080a1d872","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607211439.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-7de1857-202607211455.0_1784645825272_0.008830007819306873","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-56fc151-202607211528.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-56fc151-202607211528.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-56fc151-202607211528.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b026a42ad52133c2242d703a001c02db11dea8bc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-56fc151-202607211528.0.tgz","fileCount":513,"integrity":"sha512-jqfThyadez/F7LjHxrC9B783fDyz1FUlENeqTu8P0g5YZxsymrMAOqFcYNl9z/WO4pVu6SOKHS9z1F/eH7i5UQ==","signatures":[{"sig":"MEYCIQDBahZ69Opmd5QjuxZ7Qr6q5IrDFf5X8f+z22JrzlwjKwIhAK0g5j65Od42qH/KN/AR5R27KwweThFa+5fM0WhuEMQm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35972841},"engines":{"node":">=20.10.0"},"gitHead":"56fc15165a0e790107e7ede37c8bade47d011e12","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607211439.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-56fc151-202607211528.0_1784647778207_0.9452730140423264","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-917e485-202607211542.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-917e485-202607211542.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-917e485-202607211542.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6a43b5a1fdf7d390f07a8444792aa8f95a7af4a4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-917e485-202607211542.0.tgz","fileCount":513,"integrity":"sha512-1uejLsgkSv1gsGJoB0dOpOW4Md5cyLARUZjE7dFw/k0zMZTi3J3gmimksrjLteU9h6G8WamlI0yTkpr6RCJ86w==","signatures":[{"sig":"MEUCIQDex2XeSmA9rVtxA6ozrcp8LD5G4yIYeyKU382UaWFyrwIgOLs0VT65ek6rlgSBh0VI0owYJ7K/dkPLu/OJpx0aRvc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35727919},"engines":{"node":">=20.10.0"},"gitHead":"917e485279c8ec4442904d42ed8a4b972d489801","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607211439.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-917e485-202607211542.0_1784648664891_0.2053164638233862","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-9567ed6-202607211545.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-9567ed6-202607211545.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-9567ed6-202607211545.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5c0fc7029f177d1b4633961ce59723b87f2d72ea","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-9567ed6-202607211545.0.tgz","fileCount":513,"integrity":"sha512-iZVzPsQTyNB/OytTizKQL2KFhTlZ3KdK4IBBA6BB5HKem9WcItn1vcc61Ouaz/EHq59x432ppemUc6WpdLHhKQ==","signatures":[{"sig":"MEUCIGqOO4xz8XgpzIbuHUlj3dNwdL2AAFodD+hCPFrDnr7kAiEAi6mJr9aaPsO1OV06zqDZ2c30/Cic1MAgObZi5Y4d0qQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35727996},"engines":{"node":">=20.10.0"},"gitHead":"9567ed6cca44140dad35524039f1dbab4e59ca7f","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607211439.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-9567ed6-202607211545.0_1784648836827_0.3298923120708832","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-16f3184-202607211548.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-16f3184-202607211548.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-16f3184-202607211548.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"760bbade40ecfe38b7ca3dcf3efe9801247ee88f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-16f3184-202607211548.0.tgz","fileCount":513,"integrity":"sha512-+OVk1Dji5/hyGUb3nKTMtufj50RXSij88RiTauEmGIamc67SjT5mwQzxl8trLLx577fWXUtwOZgMJ+sYNT9Erw==","signatures":[{"sig":"MEQCIAgJhSzIDTuFG5u+PkFNNNJAxpTi+1ApbQhzgVXQT4agAiB7Uwjt31TpC+AWlLpH4/bcfrNWW7J2C+dpU9f0U1frlQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35728083},"engines":{"node":">=20.10.0"},"gitHead":"16f31843017a1c15acbb7a408a0ea29ea1ae0f76","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607211439.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-16f3184-202607211548.0_1784649021560_0.9028072453991163","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-e40cca2-202607211555.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-e40cca2-202607211555.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-e40cca2-202607211555.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"802f8eab156a28f4c1b7cd97aab6e9afb5f42bae","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-e40cca2-202607211555.0.tgz","fileCount":513,"integrity":"sha512-6UbbX+3U2hd/9hRzE5fzOas6V9cTK6rQ+Q1UPfVZQe789tOsNRou9krsrp6IpmUCFczWO8Pd8yaLDQ3s6XFANQ==","signatures":[{"sig":"MEUCIQD3fw8CHFWpkatZJuCus7kdebPJgvMS0RYkUbBeNQS4vAIgZLNLZnUAgUtJIwBXJGUQfiYACzKHa+DMkPYtGfKVs4U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35727676},"engines":{"node":">=20.10.0"},"gitHead":"e40cca2641aa4d118c5cf5fa3aeeb71484a727ca","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607211439.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-e40cca2-202607211555.0_1784649433905_0.7471982794051637","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-382cc9b-202607211600.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-382cc9b-202607211600.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-382cc9b-202607211600.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"934fb2105d64c30481410b8c7efea9c3866f0ee5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-382cc9b-202607211600.0.tgz","fileCount":513,"integrity":"sha512-OG6Cu62yzLR1iDkRwlyfpovwsFferSUudNMiD9GWRP/zdtCVJzlzyX661y1kfQYhQwV/7Oz0ZGtdVjOg0aaSBw==","signatures":[{"sig":"MEUCIEYsAhuOtNX3fzJQQqkz0tBbr2pHA2rSKIzBf2vNkIkJAiEA6dPUGC3NCGKMdBq/JbLOHrMBPiQ+DN3n5jw5DcEiCqA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35728226},"engines":{"node":">=20.10.0"},"gitHead":"382cc9b4d7cf2b30b28f0e73778175a918021599","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607211439.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-382cc9b-202607211600.0_1784649747904_0.8498887945197662","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-382cc9b-202607211623.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-382cc9b-202607211623.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-382cc9b-202607211623.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a22c86f3b3f6d9f9b6c238cfefac8f456cb13764","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-382cc9b-202607211623.0.tgz","fileCount":513,"integrity":"sha512-qOpCOGZO4xTFJk5ScR7Pu08DxyplRhwwq/+q2ywU6svntiEhAinJGD7qxo3JAnt6CEpvo/JzxcmGZSmIXxNkYg==","signatures":[{"sig":"MEQCICgokk6tyLHoPGr6S5GQoMoTfaWqyLJfz83yFyyJ8M4fAiBxv9L0ezvrPhQi6zJoM/1BUQwHJ7BnNZUSjoi05o61EQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35728041},"engines":{"node":">=20.10.0"},"gitHead":"382cc9b4d7cf2b30b28f0e73778175a918021599","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607211439.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-382cc9b-202607211623.0_1784651086724_0.6890703017447644","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-1a58306-202607212015.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-1a58306-202607212015.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-1a58306-202607212015.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e6cc3f50f42478e55b3c369d0108c1e447a12b88","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-1a58306-202607212015.0.tgz","fileCount":513,"integrity":"sha512-pk7zeZ2ZCwSB2jph82uxyNyy+C6zNA6BtZ27lH31ssIzlG4p6atvzpzBLg800gbFVPM4SNcQgO3s3ydE2Mr+Mg==","signatures":[{"sig":"MEUCIGQzKQBvpS/LwNMfBaWYJwlnJDJvX1sqmDqDStu35RDbAiEAkLrqkWYYHACXGhMfQ9LWhUjy5Ude8+1kK8qlFQwVu/U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35728135},"engines":{"node":">=20.10.0"},"gitHead":"1a583069395edd0d59b896322d836362d865ff16","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607211439.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-1a58306-202607212015.0_1784665037322_0.7877056532553603","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-881e259-202607220908.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-881e259-202607220908.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-881e259-202607220908.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c1b366bfef7dec0cf252e69e3b5ae077f465da52","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-881e259-202607220908.0.tgz","fileCount":513,"integrity":"sha512-CaJoT5yy2sNJnil+hLQfQMpg0ZQKgxy3WGi2u5Uwra0pTkAoUmcZUyvTgqNze/bxcw8+QVEaAspNsrkAo6FY8A==","signatures":[{"sig":"MEYCIQDHcr/DxfzKnHe1iNB/3/sU/btp4vfdOLlK135g+ABokQIhAMcmiL9uFrvu2lcIgg0ZKn0ghrQfv1af9c/ebBqJrr1G","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35728041},"engines":{"node":">=20.10.0"},"gitHead":"881e2595318cc9d174434308a2c95e21fa277112","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607211439.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-881e259-202607220908.0_1784711411520_0.4787582127105756","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-43ef287-202607221446.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-43ef287-202607221446.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-43ef287-202607221446.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5b91848f995ce68d52bce7d8ce5f0a7785940f09","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-43ef287-202607221446.0.tgz","fileCount":513,"integrity":"sha512-0c+ywXKC0irkKGmfltySVp6i1F+a8xsjYp3zu3dNsZhpm9Tp6ff4p9jhmEBTqVehuVv6jh+iNqEg2AG1pkK15A==","signatures":[{"sig":"MEYCIQD7XI0dctEam1VP4AzWz/bmeQcC+bjGlcc9Z5CmH2i2GAIhALqUQQ84ZtWPWwLRuqHyPcEir4VnLtsxsqYKVGNcYd+j","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35728542},"engines":{"node":">=20.10.0"},"gitHead":"43ef287498f9b2befac0dc86178bf764fae833e7","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607211439.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-43ef287-202607221446.0_1784731701678_0.029217268569268207","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-d674a9e-202607221646.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-d674a9e-202607221646.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-d674a9e-202607221646.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"77323efd7aaff048579109e3da321372541ac82e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-d674a9e-202607221646.0.tgz","fileCount":513,"integrity":"sha512-N/IYe/7Qzns7CdWfg2DV2FggaQxpEHq+Qa4w01Zx9+B3IcK9mHoBT7zhtP93cVo+U5rBe6y8ZiSfVjH0orNGig==","signatures":[{"sig":"MEUCIQDUNiUhNxcKuVIgvYdcgOXSsAA0hl0D9HLWRQ8Db5nbuwIgDVyY/2+7VL3k6kx4L0G53Vl9RuVTTHm1z/LXxpmwAfQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35730433},"engines":{"node":">=20.10.0"},"gitHead":"d674a9e388d40917f9ac67644c37ca7dda520b13","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607211439.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-d674a9e-202607221646.0_1784738887716_0.9612463199459549","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-200538d-202607230934.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-200538d-202607230934.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-200538d-202607230934.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"58471578ddbca362545f815a737bf8994c04b4af","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-200538d-202607230934.0.tgz","fileCount":513,"integrity":"sha512-IhAcc4OIH1QOt7iPhUVmf5boD/oX3SoqHURinbgg38s2Dw1aMzSSYr4XRxkHk2SaZ7Uv6vlDzlEKlj4mVtLbfA==","signatures":[{"sig":"MEYCIQCHgjwu3s4mkzrFW7oYwCAnK1sEHCLjvNFfBxWR5CyapwIhAOML9kwAaa3hgv76bgvFzZWwlxI9WFN4/l0Vo/Ib447u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35729103},"engines":{"node":">=20.10.0"},"gitHead":"200538ddd55b0f0a2e3ac5ce1f5058933daf4c16","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607211439.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-200538d-202607230934.0_1784799350663_0.430100287596503","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-d3ebe4a-202607231049.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-d3ebe4a-202607231049.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-d3ebe4a-202607231049.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6c4b3dadb9d0149e418bced2ac2fb2f5548bb0fd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-d3ebe4a-202607231049.0.tgz","fileCount":515,"integrity":"sha512-k5cMCCnRtiudw/F6psXwBg9KyFpg4dGQ9t0U5ZP57z+3eqKEtTio1FrXuSvEUgtvPcAyrUbXjtBPkcom5bXX0A==","signatures":[{"sig":"MEYCIQDzOuV4xNGtoIOW1KHQwLjFutGvOXLfvYISsZaiat11MAIhAJE+NMy3+rsuJBJLadZAAKBVCNyiLCuKb3D4HYZtbzWk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35744116},"engines":{"node":">=20.10.0"},"gitHead":"d3ebe4a7877b80a9786aaf681e15234970576b98","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607211439.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-d3ebe4a-202607231049.0_1784803882565_0.32297017018817","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-304bcc4-202607231501.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-304bcc4-202607231501.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-304bcc4-202607231501.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4a9e0008f4f40d66ef020ec303e501fdf16c388b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-304bcc4-202607231501.0.tgz","fileCount":515,"integrity":"sha512-H/gxgSRE5nI4EsyaP3H+jofmUBu6KCvR5E9JDUCtomqkFEc9zu/+N3cMMzt/GPkCdG/Z6KnFpQiRff6AV9zGeg==","signatures":[{"sig":"MEUCIQCNrZVJVEc51fXX14OetvoAVRq2SOG4JarDsD0sV2lcIgIgYXaMPzbUMMSHZopDLM9OvMBViavgHactE2lPIRegtOk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35870709},"engines":{"node":">=20.10.0"},"gitHead":"304bcc4d75384287e46773418c8f6ba2cbcb041d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607211439.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-304bcc4-202607231501.0_1784818979414_0.19677633573226672","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-eb9911b-202607231621.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-eb9911b-202607231621.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-eb9911b-202607231621.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"21a0e1bb714f9ea5d8ddad013ce1d977d63fdce9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-eb9911b-202607231621.0.tgz","fileCount":515,"integrity":"sha512-62h91mNXzWsQ2xpJgJZOFKjyoU5QFyGxsCiExuFw0NOJuO42VQ3kbh/tkyiPO8f+P7Z+LXOinfo3y4l35L15Ow==","signatures":[{"sig":"MEQCIA0qcDZ+oBI53alio/bTPLZYytr59pQtENhZ9Rvv6+uIAiBfK+TooiwnBiFKNeaA1ItkVNUs4V97F9aZhwOs8XL0WQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35887298},"engines":{"node":">=20.10.0"},"gitHead":"eb9911b08654896db56d6b00f2922c51a454d760","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607211439.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-eb9911b-202607231621.0_1784823785026_0.4648489662616908","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-edf5186-202607231655.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-edf5186-202607231655.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-edf5186-202607231655.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ee5d1c6ab64b03008030f69f99b5d6545e630036","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-edf5186-202607231655.0.tgz","fileCount":515,"integrity":"sha512-jIAeZueYjPeAgJdTkm+VONVrXa2rVmXhIiw7plKY5PbQoL2FsGgdaHIVX+L5jUghuphv3xDivuyCAdu6QF1AXQ==","signatures":[{"sig":"MEQCICvanhbwK2TZZJ0un9bsZc4hty2wxjswoEdP355d7CP+AiAp5IQZpB/pnjW1WBA1NDGMFts9cRlKnSU6xNn+erSqTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35878902},"engines":{"node":">=20.10.0"},"gitHead":"edf51861d0e331056a01f09d24daf33b4694c09a","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607211439.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-edf5186-202607231655.0_1784825831411_0.8562328902032663","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-e220d2e-202607231947.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-e220d2e-202607231947.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-e220d2e-202607231947.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"eeeb86d53e557600586e63fd606776a6a0ead9dc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-e220d2e-202607231947.0.tgz","fileCount":515,"integrity":"sha512-a0M8t+gTSAPoM5o3iSC4X/Xj3w97GzmpC8wlhVpx1SPYZYac3XiksS3OfhzlCVOGUxIDYRbfsjB0Jj0LxxNHFw==","signatures":[{"sig":"MEYCIQC7s2RysrsNvlxaYSFGGGG0WmrcNt84CH1QVCYwtOhV0wIhAL7QtZa0smwwvBpDetA0Rj7j+6JQNe9TPr9pjiDiCv2j","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35880827},"engines":{"node":">=20.10.0"},"gitHead":"e220d2e8e1ccb3fe986370cbdf9d6d3cbd86ef50","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607211439.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-e220d2e-202607231947.0_1784836123644_0.6826050366345591","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-b327fda-202607241121.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-b327fda-202607241121.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-b327fda-202607241121.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fd8b86978f8f6416cda70e2d25619a0fe6bec364","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-b327fda-202607241121.0.tgz","fileCount":515,"integrity":"sha512-U1I1SZHOagfzH0YIR4LPS212ivF3GmdwlhYfLRRYz9sM7QzBJ7jT3IMr/gLPE52IHpoZaZFuKOQCnz8gopsbMw==","signatures":[{"sig":"MEQCIEL2FKvLeBvCkg2Pr1YxoW1VWQCx2An4wamvvQZQCbBAAiBOTXPpffNOGQMOIUizUJ5zNhMUiFFljCFn41HY5BYBbA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35884358},"engines":{"node":">=20.10.0"},"gitHead":"b327fda38bddd99d0fafc2cf1270c76d9dde53f2","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607211439.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-b327fda-202607241121.0_1784892205441_0.7517896938400241","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-b327fda-202607241215.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-b327fda-202607241215.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-b327fda-202607241215.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"97ae4aada03b33787f1cfdc36d628a757740df83","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-b327fda-202607241215.0.tgz","fileCount":515,"integrity":"sha512-TiDhkqxgKyWRVWrRueMFzNCU8eem5YdVlIw9abK5SU44sCFvW1yZy8sw8l1wMVak39zjA4s97k5ICoJylYDW7w==","signatures":[{"sig":"MEUCIHgUAqNbr72KBmfnARAUR3KihLpzSeXzEHR+QHt/pVWSAiEAheYknuQ7CND61IJ+lLYfjLChbToomFLm9A94OZCbwg4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35884192},"engines":{"node":">=20.10.0"},"gitHead":"b327fda38bddd99d0fafc2cf1270c76d9dde53f2","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607211439.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-b327fda-202607241215.0_1784895466759_0.6070700902621133","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-e8f3ec0-202607241308.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-e8f3ec0-202607241308.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-e8f3ec0-202607241308.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6e26f51271b528423b1d42b9496ce1b225526f29","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-e8f3ec0-202607241308.0.tgz","fileCount":515,"integrity":"sha512-S2RqXFETSMbVWi+8W/Iu6n9MtyyOt1oR883TRS/+JFq8meXMcAFsKT3xPfotU7Wi7LfZBVgfdxoZNYGyY8BZuw==","signatures":[{"sig":"MEYCIQDj80XwSoUrCi4FUXmoSMCUNL8QM1rODFtNomlbIZkE+QIhAMuf7Ng997VOYEWJAumIhZyu+J1695M9yYuhjcC1s3TA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35884681},"engines":{"node":">=20.10.0"},"gitHead":"e8f3ec01728af59f4462f9c7af931b671a5ca91b","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607211439.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-e8f3ec0-202607241308.0_1784898626589_0.677143701054356","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-cf50dff-202607241341.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-cf50dff-202607241341.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-cf50dff-202607241341.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f054c0a41fa07bc4f036f0117b12de415c1d939d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-cf50dff-202607241341.0.tgz","fileCount":515,"integrity":"sha512-k/PoThnXf+YhK77W0PK5lyRp3aI+x8rFmByp7XrF1ePQslOMY4u2J0cx7YsiFy7NQXegPgEK/dVmMRp4xqTG+A==","signatures":[{"sig":"MEQCIAhncXZPQpI1aUHaq3RQ/gf+iJj4gUxHRgc745oVlOqEAiAU4QPkGO4bFIhpxwemFvosA/9kAUXpesT+pBK37OI6nA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35885898},"engines":{"node":">=20.10.0"},"gitHead":"cf50dfff092f7afbe344a1e06d4ef530cbe55256","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607211439.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-cf50dff-202607241341.0_1784900596537_0.7050403277724009","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-c26dc8b-202607241506.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-c26dc8b-202607241506.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-c26dc8b-202607241506.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fb757e997501cd4d7bb649560ac605f6814d9b69","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-c26dc8b-202607241506.0.tgz","fileCount":515,"integrity":"sha512-ld0Dy22v8jA4Ktre3YRHWsNPztMKUlBlsuFfYnokBZ1/1c2T+D5dMiFNtWPtDndVSGiVgbnb7hQSewUJkRrRuw==","signatures":[{"sig":"MEUCIDWg4MTt5BF3z+5JpevEdOybjYMAaeD9GSDz8YdvssG0AiEA1tI9iPzjUURUQLhWwYg2bTlqtUYOP0lSjdmHlfgVk1Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35887014},"engines":{"node":">=20.10.0"},"gitHead":"c26dc8b86135bfda12b84b33fcb217cfd6f3781d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607211439.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-c26dc8b-202607241506.0_1784905719948_0.7185939675539961","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-6f50a88-202607270946.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-6f50a88-202607270946.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-6f50a88-202607270946.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f87ec179f99507916ea3f3716ee7b5bbcb59cce2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-6f50a88-202607270946.0.tgz","fileCount":515,"integrity":"sha512-0HXSjP1gJdIjGDTz/+cHENJxz28/AVKv1kKz2KkUx/OX/GSItcjQPOdmjAoTRgymyKfCvGKlERHJsG8dcoNCSw==","signatures":[{"sig":"MEUCIFzmwNzqDLwhELhm5XawVXgttJzOUef0fh5MEfpC3W4HAiEA6juqfWOz3BvrI2vDjw3HiNxZmLC5k5/56BVSZGaXtPQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35918318},"engines":{"node":">=20.10.0"},"gitHead":"6f50a888ef2b9e1e1a28bceda6514a9bfedf549c","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607270946.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-6f50a88-202607270946.0_1785145699779_0.018025444912852517","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-bd8ff50-202607270957.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-bd8ff50-202607270957.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-bd8ff50-202607270957.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dbd946c4144605f196b2c1d8fe4de6a75f7d756f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-bd8ff50-202607270957.0.tgz","fileCount":515,"integrity":"sha512-lV4ctZnAzR58Haw+NFwl+9Od/GBSCAesMvtyULAy9ix3BB/qYFEC7nK69bKO2GZXWdBdf6OsueJ5Qesxpy2lJg==","signatures":[{"sig":"MEUCIFj+ZAVvKN+JFWFldn+7OtA9vhDPLN9Ezgi1zbq1zqOrAiEA9e/wN5tpNPpwvpLUlR5ZeRm9xlgr50fmX3ovZQn4Qs0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35918427},"engines":{"node":">=20.10.0"},"gitHead":"bd8ff50742076c17a5fbe2bac4fc94843d9cafbc","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607270956.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-bd8ff50-202607270957.0_1785146348926_0.6092464892320693","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-bd8ff50-202607271015.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-bd8ff50-202607271015.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-bd8ff50-202607271015.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ffd50ca17add98e73a6ebf0199505937a444dd1c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-bd8ff50-202607271015.0.tgz","fileCount":515,"integrity":"sha512-A39VfaEr8kpOaZoii6HPOGJHJ+/1QZU8glMdRJeB86VjQF7LTwMy1j46AreurURFjdqYMTHmDhjlZ7pMtW17gw==","signatures":[{"sig":"MEQCIAWChIMTKylxqpIGBUltIXF5MHducYhxXshvIHBSfi51AiAh7krLkGmteVwVEjgPhDoG8dmikfGBEDoQHgvCVC0FAQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35918544},"engines":{"node":">=20.10.0"},"gitHead":"bd8ff50742076c17a5fbe2bac4fc94843d9cafbc","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607270956.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-bd8ff50-202607271015.0_1785147414906_0.21119077433177202","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-8ce123a-202607271024.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-8ce123a-202607271024.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-8ce123a-202607271024.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dd934066e82d0554c3e90632ae00040e9e809388","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-8ce123a-202607271024.0.tgz","fileCount":515,"integrity":"sha512-aawJIsy89QcC6FBlwbUn+zBxC2D/g4VmqMZsmi8Up1+3lPp5Vw56BszBXmr88g9NCPs9DbySVF05duKERBLryQ==","signatures":[{"sig":"MEYCIQCQSBpvOJ72+cF3albIivKKhKfwY2SA89n6CTeOsekyqQIhAOrUafK0e3I/TmZJw9qh2pN/WdjmnotIIy0NFau8chLD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35918221},"engines":{"node":">=20.10.0"},"gitHead":"8ce123a9bf67fee39042cf6d59376ec04d0a9ab7","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607270956.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-8ce123a-202607271024.0_1785148000590_0.5255720899940279","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-8ce123a-202607271031.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-8ce123a-202607271031.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-8ce123a-202607271031.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"638e537bedb9b08622a3640c3db140eab0d3727b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-8ce123a-202607271031.0.tgz","fileCount":515,"integrity":"sha512-HF4iGX5QhhXKnCEqPUSDbJlrpdJZnLI+qIJPqrYhju7VdekL/MzP8CogIT7XB37bXGGzKMfBPQ6nv+1Zje9pgQ==","signatures":[{"sig":"MEUCIG3O4PZW0RvG8cGkEcZZWMjtgOl4l7pcz0bc0QAILAx9AiEAw8VDSPGk30oJoGoI5FzD0dHwCfuj9v3hg708Fa7BT4M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35918073},"engines":{"node":">=20.10.0"},"gitHead":"8ce123a9bf67fee39042cf6d59376ec04d0a9ab7","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607271031.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-8ce123a-202607271031.0_1785148388893_0.1418991505811391","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-8ce123a-202607271035.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-8ce123a-202607271035.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-8ce123a-202607271035.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"49184bd84f6abf978bb5355eaeeedd0c365c1490","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-8ce123a-202607271035.0.tgz","fileCount":515,"integrity":"sha512-P728y0vgK7iPC7Jp6DX8QTzb1925rAuKkLazyfMSjInotU1YZ+vNE4e7ShiqcF7mQQAQSw5BkJGRhBa6F+/Q3g==","signatures":[{"sig":"MEQCIB3A/PAh3UogZ5NVNWWycJUe50mwvoB36JVfqtj0t9r+AiBtYu/D2jJ18jSh0Rx1blBDxi36h3Ks7MS2AMO17FdK0g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35918210},"engines":{"node":">=20.10.0"},"gitHead":"8ce123a9bf67fee39042cf6d59376ec04d0a9ab7","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607271034.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-8ce123a-202607271035.0_1785148611930_0.6803894160352069","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-8ce123a-202607271039.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-8ce123a-202607271039.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-8ce123a-202607271039.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a39496f79237dede80fce465f6cda1bfe35f93c8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-8ce123a-202607271039.0.tgz","fileCount":515,"integrity":"sha512-Hr3lHkJL3oD5HeJQ1fvG9TkT58l/Gm6Q/3YAiATLcS7E47dvrq0ZpsQKSgNTfoDIfYyuxVCGYAnGp744DImZWw==","signatures":[{"sig":"MEYCIQDOozFss8/mtlZfMcnUqM14iHERwtRE4d4E2/NfiBpvPwIhAPSQzPe1Dxb0bxATVPiA/OvLVSYVhOFLCyES92SU17fg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35918355},"engines":{"node":">=20.10.0"},"gitHead":"8ce123a9bf67fee39042cf6d59376ec04d0a9ab7","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607271039.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-8ce123a-202607271039.0_1785148893607_0.7841000153586086","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-8ce123a-202607271044.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-8ce123a-202607271044.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-8ce123a-202607271044.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"63736bc70251d4d5663f3f6b138a05ab6a52ea76","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-8ce123a-202607271044.0.tgz","fileCount":515,"integrity":"sha512-1tiZ9kVNYJ1TzR43h4TW+8gnOiYyaDKfQl6yfc+RkwEC6YmkJCfYEbY2La0yiDnEc45Y3rIi1m2ev0v4X105RQ==","signatures":[{"sig":"MEUCIQDKnlPQv2Ej1QgSvtCQW3jwLjNcsqR4Sk+T5chTLBdoeAIgIantXB+MdZfWvCIWuaKPOAtzhClrHKvK2K4H/mGy9Hk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35918567},"engines":{"node":">=20.10.0"},"gitHead":"8ce123a9bf67fee39042cf6d59376ec04d0a9ab7","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607271044.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-8ce123a-202607271044.0_1785149164948_0.242370304729693","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-8ce123a-202607271046.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-8ce123a-202607271046.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-8ce123a-202607271046.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fe3b0f986ce3b52d22ea2eef2509313cf0138615","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-8ce123a-202607271046.0.tgz","fileCount":515,"integrity":"sha512-aaEYZlUcd8/V3rMOnr08phEdqQh8LdYf9gNe0H50x5IeEgZHERduq7mBU0xRG9GeV8UcrdjCCoqBUCaUCVZZlw==","signatures":[{"sig":"MEQCIECy2hV/X7zxVKiRp54XPmmJUGFUXOpSzQBcjzo5nJIAAiASA3qO089YBcdYBer1FWSRky68vvpqyHFb85z6xBdpGQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35918270},"engines":{"node":">=20.10.0"},"gitHead":"8ce123a9bf67fee39042cf6d59376ec04d0a9ab7","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-2deeea0-202607271044.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-8ce123a-202607271046.0_1785149271174_0.4134856756461567","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-8ce123a-202607271050.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-8ce123a-202607271050.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-8ce123a-202607271050.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"71e92e56dfc4640b03e97703bf1f90d40b638a17","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-8ce123a-202607271050.0.tgz","fileCount":515,"integrity":"sha512-zjtWaq0a2xqF8p753MtRJFXpTmRX7dSh8ENavn5/bIrQ6Sx6OV5jgCcW8BPPUT9u6kKb4FeSoxRh/u0jR6jCTw==","signatures":[{"sig":"MEQCIGnJ7RjlcNhJ0XT2E3YAKaMV61EqyKuls45ts6ldiEVfAiAh+2Uxz8KNzoQzAJCgY4yPhkMgKqIqdLRRkogVfJx52Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35918306},"engines":{"node":">=20.10.0"},"gitHead":"8ce123a9bf67fee39042cf6d59376ec04d0a9ab7","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-bbe35b0-202607271050.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-8ce123a-202607271050.0_1785149551950_0.8033289737383658","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-8ce123a-202607271053.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-8ce123a-202607271053.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-8ce123a-202607271053.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"20edaf67763a6476f3c310184932b2075a93823c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-8ce123a-202607271053.0.tgz","fileCount":515,"integrity":"sha512-yK3/N6GyU27toLZEf0Dkgcp/Wp20urlbbhlwrNroRCvMJzDWxJ/2wT6qYi4YCawonQi6c/lMl9kDB8mqwa0s9Q==","signatures":[{"sig":"MEYCIQDkRJaiVW2Lsi3ShyPaFDk38KDUMJog0n2h58P8uOLTHgIhAMDV+sFrUGCW/yiqyoYbcS9ZZnb+BeYfufvuidlH40wh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35918460},"engines":{"node":">=20.10.0"},"gitHead":"8ce123a9bf67fee39042cf6d59376ec04d0a9ab7","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271052.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-8ce123a-202607271053.0_1785149708331_0.6464902858823689","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-8ce123a-202607271057.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-8ce123a-202607271057.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-8ce123a-202607271057.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"56c40c92add39f0bdac182b761f67561fa6ee4d7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-8ce123a-202607271057.0.tgz","fileCount":515,"integrity":"sha512-wCsg0d4szDCZ+ET1W4rcWxcN19y8N6+MIqwqbMy74SLFrX+gS7hhl3/CSkvQld1HIDcAv/XMojPgMTiGTibnjg==","signatures":[{"sig":"MEUCIQDKoWTW/bFs5DVITvJQI2b7xxKBsxravBCDHEEurf3GrQIgVCOY1IOuspx4cfpEMyjjQfy17W7CfgAQTjqScN/qGU8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35918352},"engines":{"node":">=20.10.0"},"gitHead":"8ce123a9bf67fee39042cf6d59376ec04d0a9ab7","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271057.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-8ce123a-202607271057.0_1785149951110_0.5970403173308187","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-8ce123a-202607271103.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-8ce123a-202607271103.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-8ce123a-202607271103.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7be2e355bb11b5378c7c4351dbf428982a32bd98","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-8ce123a-202607271103.0.tgz","fileCount":515,"integrity":"sha512-UxS92waFfEUc4k1esFLSWsRI/SQnAHocdjD71kfviSxc0bOpPbSjrooInMjLKTefO/LMOsupej4D0d5XRPiMaw==","signatures":[{"sig":"MEYCIQCYQm8VUUs3etcr/B47u0e60yANznSV0zZUadIveGYHEQIhAJ6cuQXzBe+if6WDfoCBgK1cjt9Ye9VByzVgKg3Tzk5r","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35918253},"engines":{"node":">=20.10.0"},"gitHead":"8ce123a9bf67fee39042cf6d59376ec04d0a9ab7","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271102.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-8ce123a-202607271103.0_1785150314351_0.9054823003089953","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-a987d94-202607271122.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-a987d94-202607271122.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-a987d94-202607271122.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5d09bc720cc1c3b69caa931637be8a3a2bd5a945","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-a987d94-202607271122.0.tgz","fileCount":515,"integrity":"sha512-Vb8oEW8UyUPYEN5ncLPz++KvgNpVxy4pyBjXgCryM7l2V33EBAueB/2akwxCTjqz0/x0skZrdrtnnhF4ZkWciA==","signatures":[{"sig":"MEQCIFcN7kd4bPLgklJ7o3Ah0hre2H0/OglJOqeaZOCYxcnRAiA/p/qzPIFeJ9w7kuQn+EYhdE6yKibQFHbjgE6zm+Lhow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35919670},"engines":{"node":">=20.10.0"},"gitHead":"a987d94c44f3239c7359c32e0db4c82bf239fb1d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271102.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-a987d94-202607271122.0_1785151479279_0.7103471447696548","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-a987d94-202607271141.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-a987d94-202607271141.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-a987d94-202607271141.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5b054643d350686019f1f0485f0d4b003bf6d5ac","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-a987d94-202607271141.0.tgz","fileCount":515,"integrity":"sha512-iG9LpdqctU0mjJhQcOTLZa48hbGOgvCmmN1oMMZNJzESsS0cxp/AdOp0h6e4lv9dn0SLXV5DoGHtMo2hGhcvxQ==","signatures":[{"sig":"MEYCIQCEKdgd8Z1gEW3WYOWuVyvAq6jfbjE1yTQzsn+F9VWzjQIhAMX1Tk5acooAMaoplRrzzNsgxFMAs+YpASpWgzToSu+1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35919513},"engines":{"node":">=20.10.0"},"gitHead":"a987d94c44f3239c7359c32e0db4c82bf239fb1d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271102.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-a987d94-202607271141.0_1785152582993_0.17750817456985768","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-a987d94-202607271222.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-a987d94-202607271222.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-a987d94-202607271222.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ff44559b25f4cc525f2c5adbe6ad1d08a5e8241d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-a987d94-202607271222.0.tgz","fileCount":515,"integrity":"sha512-9zyrED6+tWK1fr8xMT6jM7RTMF+0vANthcqxRptacRQ3lc9Bhw1RwjxmqR3KOChBaVgwH5yn+Upw0XKatvT+Fg==","signatures":[{"sig":"MEYCIQCYfpVVOI8AUl/XDaE/NXSku2GC/goyAbT5bHYAHI/pLwIhALrLsCbz+RKeLXAGHbSFNRE8pfTIA5fMb+ZFMhEt2/+u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35919511},"engines":{"node":">=20.10.0"},"gitHead":"a987d94c44f3239c7359c32e0db4c82bf239fb1d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271221.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-a987d94-202607271222.0_1785155031911_0.01928238148672734","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-a987d94-202607271224.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-a987d94-202607271224.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-a987d94-202607271224.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1c8c7686dab90bb484fd401e36c9a454915dcf24","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-a987d94-202607271224.0.tgz","fileCount":515,"integrity":"sha512-8ZsF3WjNcgcZycsxjbAfEqrqg6ThM5xe3kM9MGfov6o/epa09tyDCVUYCP0DSRXFiGuQsCGknJiqSV3KiBUcdA==","signatures":[{"sig":"MEUCIQDpltZqOiOEZreK4lOGnPfxlIJFvdhHkDSjrlpm93o74AIgIwftjSAK/jyGDXHFr2D1vVuCCfCQeF4clHHFIoVoaT8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35919404},"engines":{"node":">=20.10.0"},"gitHead":"a987d94c44f3239c7359c32e0db4c82bf239fb1d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271223.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-a987d94-202607271224.0_1785155162091_0.33724017170386333","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-980da5f-202607271327.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-980da5f-202607271327.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-980da5f-202607271327.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e52ec955266984398f53c8b12204b7fce6095ee4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-980da5f-202607271327.0.tgz","fileCount":515,"integrity":"sha512-MpPfFwzrfP6pHSJpW6RG5Hj3jwC234Or89RP8sGoBAtJ+SA8HNTYT7GCLtrWiXIw91D768GE6TDiaCxyUY07Uw==","signatures":[{"sig":"MEYCIQDsqLQNyFQnntUekWAQJ7jC8VwdgRHSvNuyDyGr3+Ma/AIhAKoX3RoxZH64yN8/ZSNGuphscT7uh6GckszBG7cd2b46","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35919759},"engines":{"node":">=20.10.0"},"gitHead":"980da5f93995b243ded8b20a391a424809a15af1","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271223.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-980da5f-202607271327.0_1785158946472_0.25008288491466035","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-980da5f-202607271412.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-980da5f-202607271412.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-980da5f-202607271412.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3ea97451c2cabc084cf9721e04f24604589d4191","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-980da5f-202607271412.0.tgz","fileCount":515,"integrity":"sha512-5dUvNtBz9RfN2Md/V0Bq5JXCKDOpL6kodJB7vUzYYqc1dsiTaxAzvPqC99ZtrTY1dm+VRL3Zbx/DF/kjoqVCgw==","signatures":[{"sig":"MEYCIQD7Q7XJxgODYWN8ZAGmPrVH25RUxNmyOBrSEAYTbWkCHgIhAIJ4uJDGp75469XvvxOyiZO1cviNVXREJNZVY4qIJUoi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35919751},"engines":{"node":">=20.10.0"},"gitHead":"980da5f93995b243ded8b20a391a424809a15af1","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271412.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-980da5f-202607271412.0_1785161667632_0.981698417445517","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-980da5f-202607271424.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-980da5f-202607271424.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-980da5f-202607271424.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d9c35196ec01acf8ca0d502258c794bc07ea9a66","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-980da5f-202607271424.0.tgz","fileCount":515,"integrity":"sha512-aAzKlMyAxRP3CKQtOeWnXZw4D9T1l7iVMYtukhgHAJ/d1zcja2JrfeQIYCMrqBA18IIS58MoEhLuxZPLm6hqJw==","signatures":[{"sig":"MEUCIQDJp5hO8nFrhO/9ECmz/J1L+paL2YOb8VKJ/7DSf8QYyQIgDfNCryNJqfO1dOWordjxqh6LRMAH7Jz35i4JZSL8MFE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35919788},"engines":{"node":">=20.10.0"},"gitHead":"980da5f93995b243ded8b20a391a424809a15af1","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271423.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-980da5f-202607271424.0_1785162357844_0.08205266961241686","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-9e2b2a5-202607271601.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-9e2b2a5-202607271601.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-9e2b2a5-202607271601.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9ad170ff7c2c01dc6f0ea3bd8327d462dbc3c7a4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-9e2b2a5-202607271601.0.tgz","fileCount":515,"integrity":"sha512-I/1kYJeZXApOudJEWpj1lBzRAqeJ0TSMPGEZei2IO0ZYkcihznDXzzOC99lqDBICpp6i0wJPI9YGWxVq3jPAAg==","signatures":[{"sig":"MEYCIQDlv3euE1Fu8mW9xAAJ9Os1nhvY3tl/emxnj0VZZ6HCOwIhAKMC0GpQPD09mjUhGcoVFDb3xzK4Q9aIHcH9TQcrxMBf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35930618},"engines":{"node":">=20.10.0"},"gitHead":"9e2b2a5364707a645a4158144c72b2d649f5ba52","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-9e2b2a5-202607271601.0_1785168195426_0.1927538388058745","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-9e2b2a5-202607271619.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-9e2b2a5-202607271619.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-9e2b2a5-202607271619.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5aef98b83e854efb92c074b64db5f922e8b7ce7a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-9e2b2a5-202607271619.0.tgz","fileCount":515,"integrity":"sha512-y89JKlQuY7vBmdgtLCv5eTlxEZ2DQfqLnH0BmLg4PQeZkpOeq33nSZdvPIas2bFJt9+bj9ePxwRDo7v/q63jyw==","signatures":[{"sig":"MEUCIBbRihpH3OSIOMJpDm7otvkAtv7YcycdFbSBmM3S6moQAiEAt2CrmKEC7z70Gq+rY3pzFFBsLcCTcN25+dIV0CQzhkc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35930945},"engines":{"node":">=20.10.0"},"gitHead":"9e2b2a5364707a645a4158144c72b2d649f5ba52","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-9e2b2a5-202607271619.0_1785169273860_0.819194254099415","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-10c1e5f-202607271631.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-10c1e5f-202607271631.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-10c1e5f-202607271631.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"92f828ec1fb918fe496c9baef3892dcee5ae7209","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-10c1e5f-202607271631.0.tgz","fileCount":515,"integrity":"sha512-0C3xl5/gDbK3/esu3tPr60p2fF6lnvFH3teVfsxO+p0q7v+eYAionyTWT+RJoXBYXYm2tjXIVVfgJjmnsTqUKQ==","signatures":[{"sig":"MEUCID1JRbPbqfvkbrKqwKRrTuYOyuIJqfm7wXy4Zp5a70EIAiEAmznZJunlQOpY3o/MT/FVMsRQmEeo9gK6CVnxZ02NiTk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35930429},"engines":{"node":">=20.10.0"},"gitHead":"10c1e5fa6f717c817f1d6d1d18e174fe514c0f4c","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-10c1e5f-202607271631.0_1785169988448_0.5550466682015716","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-b1afca0-202607271651.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-b1afca0-202607271651.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-b1afca0-202607271651.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9eaf661e744debf4be8c5c4ff2b4658a2e8f85fa","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-b1afca0-202607271651.0.tgz","fileCount":515,"integrity":"sha512-SMO4Cy8YvGsQowyze/qkxUDCGgiAc5XLN0ZNvpMr86UfjUhRHJmggdjrf8eduZ3eXq0DHRr6T7U0vbBsqtyXug==","signatures":[{"sig":"MEUCIQCyRbYIX6N7a3tFX/Wl1RyPEmsNcDDHLkiH6lGgUjLxmQIgLzZxx/TyYxzpxrHb3W25XkpZDf9SLvrMKodglEP2dD8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35930198},"engines":{"node":">=20.10.0"},"gitHead":"b1afca0a7991f739262caa84960cd6da516df6a7","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-b1afca0-202607271651.0_1785171205053_0.02229142232913217","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-b1afca0-202607271735.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-b1afca0-202607271735.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-b1afca0-202607271735.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"73a6b55a56546ae85b2e21c495fded69a17bc964","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-b1afca0-202607271735.0.tgz","fileCount":515,"integrity":"sha512-wRV+PG7jkyrXHVLt4uiW6W9dt4e7OMAJp62IqP1Lxp4SbzWDWtUnF5JlDLLSn3wdYZ25M8qbss9xlJh4kh32TQ==","signatures":[{"sig":"MEUCIQDqPU6bXgDjBD8ZGZTT9+R33W3oJkIUMy2HfYUxUslALwIgbrccLpsYOC2mwdR3XhGGjdkokY6SKs4Qt3hXrJLTf0E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35930172},"engines":{"node":">=20.10.0"},"gitHead":"b1afca0a7991f739262caa84960cd6da516df6a7","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-b1afca0-202607271735.0_1785173804718_0.21446186969110914","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-c0cee4d-202607271854.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-c0cee4d-202607271854.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-c0cee4d-202607271854.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"010f1bb3b5512e153d1566b1733819708d0ebe46","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-c0cee4d-202607271854.0.tgz","fileCount":515,"integrity":"sha512-amwW8CRnFuXvC8imYGOrxiqkhZKmMFsebmv24Q1kdkBAfCihqXfEfLG+rIP1Y6ZGseASSglFUZ5fQA9UZJ8pSw==","signatures":[{"sig":"MEUCIQCCQcGYDA9qb9Vnrk9vtBdR+vrea9B4HeIqvUaYSJRMIwIgJsp/5KbU0MBLkC115fxx/XfV9YnKbDlil+vOToJJeV0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35930223},"engines":{"node":">=20.10.0"},"gitHead":"c0cee4d4daf060e9e3799b7dc918300b1142a3c8","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-c0cee4d-202607271854.0_1785178557726_0.5412779955566329","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-f089402-202607271859.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-f089402-202607271859.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-f089402-202607271859.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8d237fdb61880d8e0bc060e797d0b9176d728cae","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-f089402-202607271859.0.tgz","fileCount":515,"integrity":"sha512-C8dtYcrDirYbuYd4JkgCpNcnCHk3/dLJy/20BcoS+JYojfVoZLGvPWmtWvA3MsmuB0Sa81iYo4+EZLbtW4i9xQ==","signatures":[{"sig":"MEYCIQC74XbIBCGjWO/T/G0suYA9u4mxUvD3+WJWseYJ6+pG5wIhAMb/y7NHeny8J2FkZAaJSMma5eHdfQQn/ddfjqXvk6QJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":35930469},"engines":{"node":">=20.10.0"},"gitHead":"f089402c6f044cad6e2230bd936e5c3b78331a1c","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-f089402-202607271859.0_1785178900716_0.26521221927332084","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-7382ce3-202607271906.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-7382ce3-202607271906.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-7382ce3-202607271906.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"042c14c92bda6d0d42e4447156f4079916c62a1d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-7382ce3-202607271906.0.tgz","fileCount":515,"integrity":"sha512-t+bJ2BX6z4uSpCjvUKZpT5G0975LAKJXphJyit5pkEG9eExe+UwE4OUi6ktH4rc144wf2KQOjZFOG8K90crOig==","signatures":[{"sig":"MEQCIDWVqY+5DxjEZrFkqqkqRtPWRZMCDyKaQtG2kgp6mpsOAiB3LdGugmi8SJ3dTuJV9Z98PnCRNz2u/soxem2Y9oaRNA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36249165},"engines":{"node":">=20.10.0"},"gitHead":"7382ce396fee3d0478e6f7ec7dc0b41f8a2aeae3","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-7382ce3-202607271906.0_1785179313774_0.4835907836837998","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-d954aac-202607271922.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-d954aac-202607271922.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-d954aac-202607271922.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7ec5d376cc553a537cd826b0ae4cd0a605f0cfe3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-d954aac-202607271922.0.tgz","fileCount":515,"integrity":"sha512-qE6n0XEEd4xdUo5Vug0MaCFOIWNsoyolWii/lKpZzJ6Jwz6v9PRGXgXOgx1ege7ZOLPY0C6H4/bqgnXsOAWZTg==","signatures":[{"sig":"MEUCICQr4KsCr9STe6SOEZCBgzHLxZvxRQ3jf723dzitkK7oAiEArn2NwdXrfG5meQveEvdRX2WnK+Lzhr6q5sEx5aWFwkc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36249077},"engines":{"node":">=20.10.0"},"gitHead":"d954aacb7849a0dd33e4fa14b4214b4dbf1bc8f6","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-d954aac-202607271922.0_1785180235836_0.18379397121315377","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-c9eca1f-202607271928.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-c9eca1f-202607271928.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-c9eca1f-202607271928.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"00dbdcf402959a93f791fc753fb3a0a5804d8740","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-c9eca1f-202607271928.0.tgz","fileCount":515,"integrity":"sha512-/wy+Psiy2Da/JjkCB9x6ARWQ1yQbR4jr76sMDTId1djTexl5DXJE6JuQa0fnQmVl/iAo19wPhskLrTp+Hi9dzA==","signatures":[{"sig":"MEUCIQCypcmtnr7OBv574BxtTsJJ4sGCUAr1U7Pa/qW2Jwgx4gIgBpc/Y/SeVXVMIha7VVOydH0F6SbS+EqeA4AleyXJf5A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36249029},"engines":{"node":">=20.10.0"},"gitHead":"c9eca1f210ee67f92bcbb0f7b50fa6056c045499","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-c9eca1f-202607271928.0_1785180583434_0.7735877191059517","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-857e30b-202607271931.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-857e30b-202607271931.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-857e30b-202607271931.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"67c0bb77d74c673f37166bf33eb741e8cece1fe9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-857e30b-202607271931.0.tgz","fileCount":515,"integrity":"sha512-m3bwF/h0PFiZ+3zxRp+Gjp/QLachD6PHMhvMPldpaU+OsLVOR/7pBI89ncFtc/YDIjbUtyudT9OsH2sEFcCrqw==","signatures":[{"sig":"MEQCIEu2XFAjsSpcIQtpj3YLxw0SC3LxYVPouwJASupdWpcRAiARwxNKuELeVi1XxRTGwXJmCT6mi6qws4+DYTczdHj9nQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36249150},"engines":{"node":">=20.10.0"},"gitHead":"857e30b127fc486d4fd9862172d21a53c0bbf664","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-857e30b-202607271931.0_1785180794304_0.7792649031501271","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-1dc0bad-202607271937.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-1dc0bad-202607271937.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-1dc0bad-202607271937.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"14b1121e2877e4bce38c8ebde0720898bc6e6d0b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-1dc0bad-202607271937.0.tgz","fileCount":515,"integrity":"sha512-ljHFtVLxYiJrPk5oJfIL8UoImJwAe5wiR3ShxpdcWuYHWrTYofUOj92AnN8tM0a0Jc6OFI7crYOG1keh2IIL7w==","signatures":[{"sig":"MEYCIQDhgAe3nD+JFedBTQija3oZszv9cs+2qLgMwY1TS0v2BwIhAInvACoHnpQ812uSyNlRUhuQLKtVHBmHixjpFTyxDmEJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36248999},"engines":{"node":">=20.10.0"},"gitHead":"1dc0bad6d6c9522481a6022e33f074a012a647d1","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-1dc0bad-202607271937.0_1785181136065_0.014390123182546954","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-ed13f16-202607271939.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-ed13f16-202607271939.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-ed13f16-202607271939.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b81e14c4e4dbb60e9a3c99210039f247da8e5953","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-ed13f16-202607271939.0.tgz","fileCount":515,"integrity":"sha512-z/KBr3d1UAEUPs4Xm9GNlph46piEA3Aidt5PNX4f22SqUHGH3GSCUxVocaPRYVasOPcHAdVb/p9h+x6zcLEExg==","signatures":[{"sig":"MEUCIDU/95AQ0s7aYn5U9bvEq3aIpa2eT1ffUAB14QSG/XgHAiEAlpLTSEaKqrYklKe0YPepgqmE/IiISlqdWivphR5rHcc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36248722},"engines":{"node":">=20.10.0"},"gitHead":"ed13f1623106225b89510c910e7ced3b4affc4a7","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-ed13f16-202607271939.0_1785181265839_0.7427014335211235","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-a84e028-202607271943.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-a84e028-202607271943.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-a84e028-202607271943.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6c646a2214922d9473e09c0d4e8d0d5569279d2f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-a84e028-202607271943.0.tgz","fileCount":515,"integrity":"sha512-kgRLe1mH33bz5a/9YwKe9C0yHzuI1C70J1Ohq1z9X/eTlUQz3etZKDew/kDz/fb69npNEfHzelhv13WBQGv/aw==","signatures":[{"sig":"MEQCIEmSKt38eC1AteE8T2nQYjy7Raa2OenlrD5V8z2jda6VAiA3RQOmgivcMo/F6wyCMKBmLNdIJar6jAPpV+xPumRNfA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36249034},"engines":{"node":">=20.10.0"},"gitHead":"a84e0286e66951ce8282a8122bb65ac8c9ee85ea","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-a84e028-202607271943.0_1785181480648_0.1408558444987107","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-090ccaf-202607271947.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-090ccaf-202607271947.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-090ccaf-202607271947.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e12d53a30e64b2f465c8743060ec6ce3916f314f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-090ccaf-202607271947.0.tgz","fileCount":515,"integrity":"sha512-wNkyh7GPmcraOy1oumRNgN7RKdg6vyaMff8yNwtyyZhSrsgQQv6GyukF4S5m2okdIHeK9wiKa+O6YyA2axFsRQ==","signatures":[{"sig":"MEUCICs/H2EDTIzEVfROIjCBnrdKbYwG3cssnNAZ8DsaEqsdAiEA9CgxualaOFguBtWl53hjJ3yv1nNr8AOkznJdHLltMvA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36250449},"engines":{"node":">=20.10.0"},"gitHead":"090ccaf425ae6a0a2571deeac39f9ba48cccfffe","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-090ccaf-202607271947.0_1785181774481_0.9630094878249453","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-f9105bd-202607271951.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-f9105bd-202607271951.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-f9105bd-202607271951.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"aafe30b8519bee5d9ed25b9fdbe01974c793cc6e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-f9105bd-202607271951.0.tgz","fileCount":515,"integrity":"sha512-YCCP+aa6chOh6vFqHyxz8QzsP3Fck/NFaVaoDBrnTVu8NckhuL5zP26I/mv/629Od2CIjt08iOOcEOYbjJYmvw==","signatures":[{"sig":"MEYCIQD3vUQxV6uBPVcb7SDQJTVLohIyYqsGkPXJsyCEWqh1VAIhAK1YHqQioc5AoE7CuMqmsywBnUkPNMAjbEpdsrGzrde6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36250342},"engines":{"node":">=20.10.0"},"gitHead":"f9105bd8a2e69ced9a15fe3358a224fc39266dbd","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-f9105bd-202607271951.0_1785182008685_0.25202763659323857","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-dfb1d7a-202607271953.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-dfb1d7a-202607271953.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-dfb1d7a-202607271953.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"970484980c063bb12877af1490ab6d3d824cde29","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-dfb1d7a-202607271953.0.tgz","fileCount":515,"integrity":"sha512-wgOQzUhbGyhxmQ2eUA13JskMyIEsx8Jyjlg2Ol0j/FcGo06tZfWRnX75vjRsxQncO1CpCoPxfA94sh3jBuWPvw==","signatures":[{"sig":"MEUCIQDBzIr8zJsfdJYMbmoiG2lwGRoZxwWhIeWdBxbDrfDiEAIgYkc/NPptFEjAGgJFaaVaeaDsvLgkbrwuthPF4M1e4Ao=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36250718},"engines":{"node":">=20.10.0"},"gitHead":"dfb1d7a0772e65b7cc3a0fdb11d325820c9000a8","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-dfb1d7a-202607271953.0_1785182125366_0.8457114429957264","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-dfb1d7a-202607272015.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-dfb1d7a-202607272015.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-dfb1d7a-202607272015.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e29a801fb2a87978b1e0d08372029b4571cb69b6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-dfb1d7a-202607272015.0.tgz","fileCount":515,"integrity":"sha512-BielsHPPOcggLVbNP+YDNJuMtK/uvm9/ONJgPBMQ8qajB8ZVoTKRLVwTGuIXs5WwkaauD4KlSxfEC4zDGAHRaQ==","signatures":[{"sig":"MEUCIHtfcxRfSUeaIPWXvInvFu5gGLVgCHmff0zwdAVqBiXnAiEAptbluJgrWe0eByXO+79oflcBgqbes3T/YpV+eGHvoYs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36250320},"engines":{"node":">=20.10.0"},"gitHead":"dfb1d7a0772e65b7cc3a0fdb11d325820c9000a8","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-dfb1d7a-202607272015.0_1785183431494_0.3432494978039313","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-4c61f20-202607272116.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-4c61f20-202607272116.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-4c61f20-202607272116.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6621202b7c337743867eee25521111712cf62add","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-4c61f20-202607272116.0.tgz","fileCount":515,"integrity":"sha512-mstZIZL73yw/sLYnsdAzz7IFk9LJ8BQjYGyxi0yGdwoffrjPSIMMHmqGzO9MCsOLVzNSsR/IkvFCeuMyLmrq4A==","signatures":[{"sig":"MEYCIQCA1+vXUhSctlPAt1DoBmnJ3C4An+vrGyATihlTz7MdkgIhAKzNzrf4r8uzOw585ditfHdXxdUrd2sQ2TYcji1uImtg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36250263},"engines":{"node":">=20.10.0"},"gitHead":"4c61f206a780a9adf5be5e27f4b41c5f76aeac16","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-4c61f20-202607272116.0_1785187097723_0.807942245128171","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-239d252-202607280731.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-239d252-202607280731.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-239d252-202607280731.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7d3fe3f1a5295b6f89f69eda2342ed8b3df4c83f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-239d252-202607280731.0.tgz","fileCount":515,"integrity":"sha512-cSziYX3y57x53BNIeqc/KHIKURFdzwM1DiVtzJHJqx60Sj75k+ZWOktxFOsGm4iRLiPBgIDMiOPeUJAouVMNBQ==","signatures":[{"sig":"MEUCIFv7EiLgA31UFspL+6m+1CElGL0sKagz4wsg/7yHURfxAiEAnjJl11BAoDx/x2lRobi6S13Xj/Kw9cp2X/7VSkN6hmo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36250155},"engines":{"node":">=20.10.0"},"gitHead":"239d252f4cf43e293b7097140b4a1393cdc259c4","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-239d252-202607280731.0_1785223966521_0.545067492136661","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-174c44a-202607280848.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-174c44a-202607280848.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-174c44a-202607280848.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9f6c24a890e96905d087fc706a05bb5a923f3c99","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-174c44a-202607280848.0.tgz","fileCount":515,"integrity":"sha512-ivoh5UTlUAuY6I/CHjQgoYCkmcvWN62IHw7tfuq2zPQD6cnqvA0OIhjtRkhFU/ZepL2LZjiBFkQJfy4WRU+vBQ==","signatures":[{"sig":"MEYCIQCh2kVn1kpkUgDtLtB9nqc0CjgMnL2tcJ8P5ALYs5TYYwIhANmk/UoTRN5d5GEGyJAlVWv6sMk1SPw+NKNn9J0yKTm6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36262558},"engines":{"node":">=20.10.0"},"gitHead":"174c44a4e45313f2f60d79a973ed154a9ef563de","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-174c44a-202607280848.0_1785228622363_0.13775936213407336","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-1599a93-202607280856.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-1599a93-202607280856.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-1599a93-202607280856.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8e934de8034bc4b6d51f4d93b33a1ce96c5278cb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-1599a93-202607280856.0.tgz","fileCount":515,"integrity":"sha512-hev24cFI84ffZ8u/QfaTQTqD2CtCEZ1kfajMijnvjkKjNwEfzns0cnU550aDSJSq3/4hXaCYbC8STScc9I6RYQ==","signatures":[{"sig":"MEUCIFAx/EtZVvkJQLzgCRvURk0OYw9vBa47L3HoWIF+1z58AiEA006HGohi+Cpk7TZKtOB6TLJpy3BxoppL3wdrVFijY6g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36262225},"engines":{"node":">=20.10.0"},"gitHead":"1599a9377d73c89a232ba804331ad1460d5c57c6","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-1599a93-202607280856.0_1785229075790_0.5519664143072966","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-1599a93-202607280915.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-1599a93-202607280915.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-1599a93-202607280915.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"361f1cc8d6b90e5c24041509c803899bb2a4e9bc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-1599a93-202607280915.0.tgz","fileCount":515,"integrity":"sha512-TIOBVaOIZc6Zc4NIPnVXqYBelFRoCRUYoERTPIgcGO5iXirEBOusjBhee+kOdJijhKc7ILSK+eaugrXzJVCLaA==","signatures":[{"sig":"MEQCIFjsPQUyruoAViW+sEk1BBD3mo/d2g03c9y8IkJ5xyc4AiAHW7gFbTaXEuTz+x9VjJe+fRQRMessiCZ0Z//OoY32/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36261992},"engines":{"node":">=20.10.0"},"gitHead":"1599a9377d73c89a232ba804331ad1460d5c57c6","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-1599a93-202607280915.0_1785230211396_0.7743184353654213","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-1a15206-202607280942.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-1a15206-202607280942.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-1a15206-202607280942.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5b0af129d618aed2a9db7fb2c215a2780fe81eb9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-1a15206-202607280942.0.tgz","fileCount":515,"integrity":"sha512-PctBVQoRTJbVCFI0BNg6lTuIVhbN19EJHHOKnA0gP3sALUTVz8RkgLIdbl8Uxhr0s9GRkSQ0m6v3aLIqHBCPGQ==","signatures":[{"sig":"MEUCIA9dL5EkMWtoLoRPVV+gopYYVIkK3aNxHVPmKVbstyrHAiEA/yA1vZfdupnoabY7yhOfQ8F9O+nun8oQed9nqfjvqtk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36268106},"engines":{"node":">=20.10.0"},"gitHead":"1a15206d4ad906a156a2d683fa95f63f372693e6","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-1a15206-202607280942.0_1785231846711_0.6253395618840707","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-be7d678-202607281038.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-be7d678-202607281038.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-be7d678-202607281038.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e69279e16626a81d8dacee697b760385e0e29ab2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-be7d678-202607281038.0.tgz","fileCount":515,"integrity":"sha512-LMxTqN2SSJfGTdKQgVbynR1Xyodsc53NaiHRjRZSC0+8KgRjyyLoVI1WvbPnEPAhLX2rOblS8Dr3nAj8ywlX8A==","signatures":[{"sig":"MEYCIQDpnZU7x+M6FdYAgn9bf2TqeDjok09fyJqLcfldRIVQEwIhAIyJS3l233/1xFbeqeaog8zuXdsbXemjn36icYE+9Trh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36285305},"engines":{"node":">=20.10.0"},"gitHead":"be7d678e138ae7fdaa7ba619854c5bc0490cc23e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-be7d678-202607281038.0_1785235219752_0.7848250090598483","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-be7d678-202607281100.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-be7d678-202607281100.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-be7d678-202607281100.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2ca21f96efe75b99f26e3e9467b9ac0ac57ed97d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-be7d678-202607281100.0.tgz","fileCount":515,"integrity":"sha512-7avStbHWflcYbGH6MWDDZFV6tzBg4kxfY9CFHPxinw0nfL5AWEu8Emew+HxtOEmsiNw2A1SdvioExn97CvMzLw==","signatures":[{"sig":"MEQCIBeZVoE324zeosibcI3qBewciV1GgxEE9vx7n6gSth1UAiBdgiJmZnFRBFg2Joi878Ea404vAUtqMgTfUu2LBmuG6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36285520},"engines":{"node":">=20.10.0"},"gitHead":"be7d678e138ae7fdaa7ba619854c5bc0490cc23e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-be7d678-202607281100.0_1785236538864_0.26878495099995403","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-5f34bbf-202607281143.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-5f34bbf-202607281143.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-5f34bbf-202607281143.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b25e63b9d072d44c975d0343fa90fd37be6353b4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-5f34bbf-202607281143.0.tgz","fileCount":515,"integrity":"sha512-xeKbmFdWEm7uULZppLGgNbeZtnIES3ISzPbZJP55HTgBLEHJSGDrzGZ3o98E+zuiZgb+cVTTISEfJpNVydjutg==","signatures":[{"sig":"MEYCIQD1wYTM1p2lKmP/hw7VCzCJH7oZen1bAMQygFbEE8xOQQIhALDxso8IEcS51EbGFyrdkl26lxm2cw1nMC/40q9WjgQg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36291979},"engines":{"node":">=20.10.0"},"gitHead":"5f34bbfce4e0a50391e09b9356b70d930697f833","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-5f34bbf-202607281143.0_1785239113724_0.07957312151537388","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-5f34bbf-202607281159.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-5f34bbf-202607281159.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-5f34bbf-202607281159.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"277d8d43c5533e4a6f6edaf9ce4167d2a24fe00e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-5f34bbf-202607281159.0.tgz","fileCount":515,"integrity":"sha512-NkSpihHtsKNoZq7S53UU6HVMau6SNiAakLM82416O6IH1QFqmmGO2l54P51YrB8f4zmS/4wxaZhFDAMPt+x3sw==","signatures":[{"sig":"MEUCIDyUz6HtEz9Bmb1n0VYaHHKq4I/hao8X+yta3VlRbrEZAiEA2InAyzFXz2ldHn/UuaVPPyepC1rtl2HBYcQE10uZU3c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36291948},"engines":{"node":">=20.10.0"},"gitHead":"5f34bbfce4e0a50391e09b9356b70d930697f833","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-5f34bbf-202607281159.0_1785240055750_0.37746214551209656","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-ca3c665-202607281333.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-ca3c665-202607281333.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-ca3c665-202607281333.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"483c12586f0a2ec1b12e8dd8c1c7e5bb127e3112","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-ca3c665-202607281333.0.tgz","fileCount":515,"integrity":"sha512-wuE28xVztidZa7Dq3pOOq974SxVVKacPHC20Qs78OOsMFFzmiH2SP8+dcV2VosIZxFeQMQiM5c56h3/QI4Ervg==","signatures":[{"sig":"MEUCIQDpe9rvURG9ONc1fOEnWdYcwlelmiklPM2LqANjCnWZfQIgczZ7ZjX5ZsN/qd7jixIk9Hqgobu4yonoPAVDHlTIiEw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36292007},"engines":{"node":">=20.10.0"},"gitHead":"ca3c6656dbc4064da5ee56cf13d7ec7fb33dedd4","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-ca3c665-202607281333.0_1785245725772_0.11072087055764501","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-1685d95-202607281637.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-1685d95-202607281637.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-1685d95-202607281637.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d705071f364e17d7f844c36ea79c945c127abe05","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-1685d95-202607281637.0.tgz","fileCount":518,"integrity":"sha512-KTY5YutnaLyQJDallRLzsDVgi/sMeBn2OLYRkMmZ7dMaLtgx036kJBnear0/V40velb+vDdVSuh4bTFuiikW3Q==","signatures":[{"sig":"MEQCIFR7dtS5N2uRYGEaTW35Fjhu2lt5KbAVS1fS8+SRG8ZdAiBnGPVZSqsqaSwRHgUz4AhNo8FGbmG+154beMOru06a1Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36300222},"engines":{"node":">=20.10.0"},"gitHead":"1685d951d38fe9830839b95d53a25fc9c07d9db5","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-1685d95-202607281637.0_1785256752583_0.7345855184727554","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-8113192-202607282034.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-8113192-202607282034.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-8113192-202607282034.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8ed254ca09a13040ef93e37173f7b2032c607271","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-8113192-202607282034.0.tgz","fileCount":518,"integrity":"sha512-WV+WZTx5wQQgu30hjt3KNenz/GIuGTYgHHp+aDybkpwmPawFZmF4WqyTUYf15eb3+0K12VjGUTxPOi3Fvr5huQ==","signatures":[{"sig":"MEUCIQCnNBJzYPWbRu4TmxZgSHtx3Sxm1A6Ws17+Nq+457w5FwIgbzWsXSoboCOjpXUOJeAe1ON6OnRy7zBhmHaFgFvB55s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36304086},"engines":{"node":">=20.10.0"},"gitHead":"8113192fb91b36a5c1df806c0996f1150e6bd9d8","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-8113192-202607282034.0_1785270937284_0.5107781373015101","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-686d6dd-202607290954.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-686d6dd-202607290954.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-686d6dd-202607290954.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ae71b397d5dd568d69117c7acc3bce48b13b9587","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-686d6dd-202607290954.0.tgz","fileCount":518,"integrity":"sha512-KuhCaTkngbjCuB7SpU/CUgc6QKMspTk7sAc9U2KFNUzsLrsS/xDKepfvlQ8Nhsf9cRQG2LTys6pEJGHDEDg1sA==","signatures":[{"sig":"MEUCIQCzEm6LgFeH5GwzewU7vQBYCdnk4oP+wu0t2+4qJpbbYAIgOxstUIjUYBmFoCoaBcb1dvVjoOjgdfDHGWr60fgnzNI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36300172},"engines":{"node":">=20.10.0"},"gitHead":"686d6dd88d88030fcef23ccb373de103eee3eadd","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-686d6dd-202607290954.0_1785318956910_0.7142356145209485","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-6c2315b-202607291027.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-6c2315b-202607291027.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-6c2315b-202607291027.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bf44e78f90be8694594fe35062e1e7a30bae9917","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-6c2315b-202607291027.0.tgz","fileCount":520,"integrity":"sha512-U1y3GN5TsekRqiKEHw9DmUXPvo6sT8uaEK6ZsRaT6CMMowfJecLNIjM0VDV6VclRPwuTefKzsPi72CYa20ONJw==","signatures":[{"sig":"MEUCIEnGh3ZMSAFeU4ayLM5pyzCpT9TpvQRENbhYgeuU6RaGAiEApkTZvOG1XgxtYnwPpiuxC4CznJr939uwLiGH1lZ3Usg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36450865},"engines":{"node":">=20.10.0"},"gitHead":"6c2315b1f127c786036841adb75128e6face1132","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-6c2315b-202607291027.0_1785320942483_0.12459136484818112","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-ce96279-202607291324.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-ce96279-202607291324.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-ce96279-202607291324.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6bbb621230583756553f3f632eb6bab704bbc148","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-ce96279-202607291324.0.tgz","fileCount":520,"integrity":"sha512-bucrRAnVOj54h4XhFXD1NHo0j5xJrwH0CtEmNpYGaBgeu8F/omTLNsjtfYO627UOk776HfxosPF+6Ni8/PnK9w==","signatures":[{"sig":"MEYCIQDsS3FnHX4HC5XhZ6rKxxOA3EmTzSCZTOSFFAH3kQEyPQIhAL893RcZsCnJrTOhqa9+KShrW9R1aJSSIpTl9H1AVn+E","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36457970},"engines":{"node":">=20.10.0"},"gitHead":"ce962794989e6b389c7c941461d5b6ad18ba0c14","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-ce96279-202607291324.0_1785331546952_0.8555557785581678","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-ce96279-202607291346.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-ce96279-202607291346.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-ce96279-202607291346.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c938496223c86112068b3ee5d10130dcf350ab3a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-ce96279-202607291346.0.tgz","fileCount":520,"integrity":"sha512-1vNy1i+7EU8V7R3j+MctsBc8fnngNBreNwq3Wr8KYehhoLDxZaT7KeeqOpoRQgKG3sp/5//05mEckn0MMlXa1g==","signatures":[{"sig":"MEYCIQDZ5bEC17T6iIkNgkl3P6840iRWFC6zquLzXkGOQzLX/AIhANCsD2ptJn11rfp8UubwqMtL4LLK+52z00wh992KTUmu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36458020},"engines":{"node":">=20.10.0"},"gitHead":"ce962794989e6b389c7c941461d5b6ad18ba0c14","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-ce96279-202607291346.0_1785332916525_0.12282771799356329","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-2321105-202607300452.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-2321105-202607300452.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-2321105-202607300452.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b83eac6505aa40e6fb0e0de2b23fab3a800dc256","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-2321105-202607300452.0.tgz","fileCount":520,"integrity":"sha512-xsmU+ssc2iBXLb2oXh1IXsI/KHUX+TI/NR7xdp3JFrQT5OY3ThBXg8CBUOyjhSvSub//s4j8lNcPDPkL6JpkhQ==","signatures":[{"sig":"MEYCIQD+Sb4DvPqFnIT9o+q7SvXtKmH9UkN4oe5170z1QtrWOQIhAL7xUQ3UvscB4Qb9lGHvsWXFxDgif4FRIkkFDwbNkmzt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36458069},"engines":{"node":">=20.10.0"},"gitHead":"2321105c8a6dd47a65ac0eca6191910b7f822c60","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607271600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-2321105-202607300452.0_1785387270145_0.4228286983592793","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-2321105-202607301220.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-2321105-202607301220.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-2321105-202607301220.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"98e450fb76a66d1c9b00163c0e87879b1b007347","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-2321105-202607301220.0.tgz","fileCount":520,"integrity":"sha512-y5XD5GIS16aMujzmYsdLBuKp3VzF/3Ke/MpjihI763gVtBfhA7xUbqAVgs1FTG6XqAsc2NKotGCW7NniQA3oqw==","signatures":[{"sig":"MEUCIGESY8cbuagvPjUDO7hJW0bO3o4Axq7K6l+GGMTNLKhNAiEAh4Ka/5U6gSsz95MwButlHmrnrZpNxvJfozleZtwbPdA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36458098},"engines":{"node":">=20.10.0"},"gitHead":"2321105c8a6dd47a65ac0eca6191910b7f822c60","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607301219.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-2321105-202607301220.0_1785414114534_0.9323967701812437","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-2321105-202607301223.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-2321105-202607301223.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-2321105-202607301223.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e4ea389a9b9a4b9a0aea1d4d20ea5ae75d55001c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-2321105-202607301223.0.tgz","fileCount":520,"integrity":"sha512-cKRv1pZla75JWeLnxzy2gWpxy5cqS7QkFAPmzTEnbGX7K/UkPT5wQbqVV0QSjAmjx4u8kVDA/0rItjDA+iBZJw==","signatures":[{"sig":"MEUCIQC5XHO0ziOrv56njfdzKka2wrpsWln2KclcDlklme4RkQIgSrUFpbxuVmOJGsYhGVUe+pImMSYpujtvO9Gu/hn5ojM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36458076},"engines":{"node":">=20.10.0"},"gitHead":"2321105c8a6dd47a65ac0eca6191910b7f822c60","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607301222.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-2321105-202607301223.0_1785414299078_0.5301933914620247","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-dbbb514-202607301242.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-dbbb514-202607301242.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-dbbb514-202607301242.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7468037f26cdad067720bdeccfbefe757ec45075","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-dbbb514-202607301242.0.tgz","fileCount":520,"integrity":"sha512-MYe5+Wks30jCOu2/2CidDUcjm2vwfYy3f/VaXZx/opGW+c8vZ2fGggtjNCFMnpRw1BX4uk08mT4utXWUwPpoVg==","signatures":[{"sig":"MEUCIQDNya73eq6AqULkwDDzuUaqrCtpCp1p61VZg8j0M6901wIgXiroT3WKs72vxDJzGq1hKTGj+sO7ArtjvPYGFrg7rpM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36458237},"engines":{"node":">=20.10.0"},"gitHead":"dbbb51492b58c60e1a88f560478b11a1804da092","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607301242.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-dbbb514-202607301242.0_1785415468327_0.7536200723516111","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-5a9e747-202607301320.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-5a9e747-202607301320.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-5a9e747-202607301320.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c42599db7eb1541cba05d44345a4f08d6919adb4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-5a9e747-202607301320.0.tgz","fileCount":520,"integrity":"sha512-EYoS3hWCA3eG5659Un8kJTkODsQSfinULBSQeuwA2zq+LINb3uuQ37u3WLRneL4qA5Zcz0dvDSPnwYwpFvUALw==","signatures":[{"sig":"MEUCIQDb7r0hd5mLDZGRNF5JAjENUFv/nAqBEZvu2A8ulSKs+QIgKXnYTA1ctV9M3F0+TNtDdNcZQLIajgrrb/hUdEbOnJM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36475120},"engines":{"node":">=20.10.0"},"gitHead":"5a9e74708ec48d67521ddc532fe2d98cc3058698","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.32.2-68d1c1e-202607301242.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-5a9e747-202607301320.0_1785417755878_0.10184511676393893","host":"s3://npm-registry-packages-npm-production"}},"2.32.2-5a9e747-202607301323.0":{"name":"@flowfuse/flowfuse","version":"2.32.2-5a9e747-202607301323.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.32.2-5a9e747-202607301323.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b60b80c2f2c9c281066f69f95dc0a1b461c55247","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.32.2-5a9e747-202607301323.0.tgz","fileCount":520,"integrity":"sha512-q78SfIM4G7p+jU6X2tW46RYts1fbo166xLZ8SF+ZMWCjUX4wkxMzn8rHfitGoCgGc3tQLQCDIkEA2n71M5TOaw==","signatures":[{"sig":"MEUCIGvuMKiEnunUwpb9nxSlX4EYnPJ6+hUS9c5OgHVb5QgjAiEAhQ/TERw2ZUg8EbS9HQ7YKDwBW3+vJU52R8+hgSytlag=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36475200},"engines":{"node":">=20.10.0"},"gitHead":"5a9e74708ec48d67521ddc532fe2d98cc3058698","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.1-da1ce4b-202607301323.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.32.2-5a9e747-202607301323.0_1785417927362_0.8928843852187827","host":"s3://npm-registry-packages-npm-production"}},"2.33.0":{"name":"@flowfuse/flowfuse","version":"2.33.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e9c8e2f92a5551020c4eeb2524560a248c7ff3b1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.0.tgz","fileCount":520,"integrity":"sha512-nu5+hGJZ6cX2xmPCUbPj91oX+r5ufZsKGcbF9Sq5bhYYE2DXBEJHp6JZKye+GeZJbbVEWgt8gvYpQA0mJiZr6w==","signatures":[{"sig":"MEUCIDCdKUJIFcsOP4CPD2jEBeIccoIBy+l8tY8hJEYUS8acAiEA8R1Ry7BrxHBurUR2uu7U1rG1JuoBu6llc2UPfqS3XVo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36474566},"engines":{"node":">=20.10.0"},"gitHead":"650f7d8cdf428442314959c127148a00696b56b8","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"^2.33.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.0_1785420137958_0.1300283411399621","host":"s3://npm-registry-packages-npm-production"}},"2.33.1-650f7d8-202607301400.0":{"name":"@flowfuse/flowfuse","version":"2.33.1-650f7d8-202607301400.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.1-650f7d8-202607301400.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2e4f04b25ca9680a7303110e27b83d989f2d945a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.1-650f7d8-202607301400.0.tgz","fileCount":520,"integrity":"sha512-Sp84/ZAD7NSBOVqJIHfP8/VuLx3QiTSwkR/S1M2um/zHZXvI3CMIfWZ1iTTHaGb36fOMKZ1hKgjlUiPPFsKqDg==","signatures":[{"sig":"MEYCIQCaX9+agLa0dPwviC9zg3qSXOOFsTN+PhRyVs9jUuLv4wIhAL4wNxgJsOPhlxtzNARjyegMIQyiplZfjRjZTRKdjiDj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36481224},"engines":{"node":">=20.10.0"},"gitHead":"650f7d8cdf428442314959c127148a00696b56b8","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.1-da1ce4b-202607301323.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.1-650f7d8-202607301400.0_1785420159509_0.08316112146901955","host":"s3://npm-registry-packages-npm-production"}},"2.33.1-650f7d8-202607301423.0":{"name":"@flowfuse/flowfuse","version":"2.33.1-650f7d8-202607301423.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.1-650f7d8-202607301423.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fd48b5192b0ee3f3ac5910058a355008099a2088","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.1-650f7d8-202607301423.0.tgz","fileCount":520,"integrity":"sha512-Da7gKyFcyVo7vtmRqMMRzg16AzJsq3KZqPNtjSqbCz9eX4O+jYw+kSTNdP7azl4dq3wx22B+/UZ5QCLKDBie4A==","signatures":[{"sig":"MEQCIDIBtJtswbSySyeYkMLprvuLid5T+ZarXNpkSzdh8eNwAiAzQmCPJ8Px41Wp8nhAnW3tgSNwENZ3sdtADc8g7Q+Pww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36481196},"engines":{"node":">=20.10.0"},"gitHead":"650f7d8cdf428442314959c127148a00696b56b8","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.1-da1ce4b-202607301323.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.1-650f7d8-202607301423.0_1785421507434_0.9192540792132686","host":"s3://npm-registry-packages-npm-production"}},"2.33.1-eecec44-202607310900.0":{"name":"@flowfuse/flowfuse","version":"2.33.1-eecec44-202607310900.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.1-eecec44-202607310900.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"88e4556fb9887b8692b6d7498b4246b29f2c879e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.1-eecec44-202607310900.0.tgz","fileCount":520,"integrity":"sha512-06F8pwBd7B52U4AvODS3IZfEmPvacgHFih+kzcoI1GIBQhq1OE/dwSzJjqbqgFYNhSeSc5Wb5/Kl/fXkGpJblA==","signatures":[{"sig":"MEYCIQDKJ3pi1BW8yKtM6IbXujJmzduW/uvuClRJ/n/pio6iIwIhAP+QBXh9L9oV+Ahh7lq11hWI8BpJgNAu1cy75pk+RbT0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36481364},"engines":{"node":">=20.10.0"},"gitHead":"eecec447e90d57d9d47f7e4385b730b00c39a6d8","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.1-da1ce4b-202607310859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.1-eecec44-202607310900.0_1785488523386_0.6872029721711035","host":"s3://npm-registry-packages-npm-production"}},"2.33.1-eecec44-202607310903.0":{"name":"@flowfuse/flowfuse","version":"2.33.1-eecec44-202607310903.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.1-eecec44-202607310903.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"76f36da527fe75ae235ab99c4057f464efa29482","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.1-eecec44-202607310903.0.tgz","fileCount":520,"integrity":"sha512-weo8gLEO2ohTfkpTamYysmZ3p4nDCMhLptYzvKbe9KHrAngBBnyxTMEXm3ifohkG2cgQ4HCHnJMF3F8LboVo/g==","signatures":[{"sig":"MEYCIQDfNJIIn8hm0q58r79TXDIIpP10E35C6zhorNQKhjqQsQIhAJLYXa6jp8AXMwDoOHF0+gHe93iI5gtify/QM1yerVBl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36481392},"engines":{"node":">=20.10.0"},"gitHead":"eecec447e90d57d9d47f7e4385b730b00c39a6d8","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.2-28a9c55-202607310902.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.1-eecec44-202607310903.0_1785488695791_0.9475079073988679","host":"s3://npm-registry-packages-npm-production"}},"2.33.1":{"name":"@flowfuse/flowfuse","version":"2.33.1","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.1","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3f8301b997d87c27f19611f3cac5f5166eb63b7b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.1.tgz","fileCount":520,"integrity":"sha512-wmFQ/u4KF1bps9sMLHV/4L8DMsCNYq2Qaytkjcup1reJCq6IP1Btof8H7/2uNQ2PTkErW0ECxBBgjJJHvrfqtA==","signatures":[{"sig":"MEYCIQDzqFTS4ogSWiYIWhFpuvSZQsMgjKipwvA0SNsb4w2wogIhAPJ/wJvS4s0cLLng3w64OvPWcX/jSewBd1kF+0DvFISk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36474667},"engines":{"node":">=20.10.0"},"gitHead":"c2ae1d0f472bae516a729c45cb291b0d3a39d48e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"^2.33.1","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.1_1785490344745_0.8581596512720195","host":"s3://npm-registry-packages-npm-production"}},"2.33.2-c2ae1d0-202607310958.0":{"name":"@flowfuse/flowfuse","version":"2.33.2-c2ae1d0-202607310958.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.2-c2ae1d0-202607310958.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0a6dccdbf3af0f5620d93a51911fb1a333242d9b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.2-c2ae1d0-202607310958.0.tgz","fileCount":520,"integrity":"sha512-Ck0grX9O+KKP03evNgc8FLByzggoSQG2jgNunyza+tboobMUnTowheWniMWPjwDm5CfmEw2Zllw+Q6IRgtBeUA==","signatures":[{"sig":"MEYCIQCQ/0PgSmoPsCkjs3SP9Z+HkFFkQgnkg2wRW8YwP5bKSgIhALtvDS+aH8AmC7y/wtkz/qtk84KVFvH9FqVn7jefNWoj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36481294},"engines":{"node":">=20.10.0"},"gitHead":"c2ae1d0f472bae516a729c45cb291b0d3a39d48e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.2-28a9c55-202607310902.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.2-c2ae1d0-202607310958.0_1785491995475_0.33406902592564913","host":"s3://npm-registry-packages-npm-production"}},"2.33.2-c011853-202608031434.0":{"name":"@flowfuse/flowfuse","version":"2.33.2-c011853-202608031434.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.2-c011853-202608031434.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ec13673c1976f8a89ae6c56476dc8c244a27d7de","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.2-c011853-202608031434.0.tgz","fileCount":520,"integrity":"sha512-J+QqLSpzos2fJ2uuWLWRPC2Lp83LR+YTHSzNYcB36KUqgvQMSwS5RvdkYiO8tib0K5qtjRpWLWtyMDMFBNcKIQ==","signatures":[{"sig":"MEUCIG/7O+W/5zMG57ieQcu6FyRB7Pd5IMJ09aHx5DML61N5AiEA7BnB5FfjnhwqY1E+5/hrJfU9i015gfueBRdbt/ijvjo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36482730},"engines":{"node":">=20.10.0"},"gitHead":"c011853e1b86a33144ff682a342636030f1fb1b3","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.2-28a9c55-202607310902.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.2-c011853-202608031434.0_1785767759420_0.14247959721711512","host":"s3://npm-registry-packages-npm-production"}},"2.33.2-8f601d5-202608031601.0":{"name":"@flowfuse/flowfuse","version":"2.33.2-8f601d5-202608031601.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.2-8f601d5-202608031601.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8d3df14d229126eae33467106b7eadc0afbc4cd4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.2-8f601d5-202608031601.0.tgz","fileCount":520,"integrity":"sha512-7/dN5uk3tFqtg99zff+SgO7/kSM5Ll8J/b/tPnRY1N9af2ghXt39jlJ2fhlqrxcuLZO7897l4wYp3CD+GNU32A==","signatures":[{"sig":"MEUCIGppE/lPLBNRASqao8VMpY3UYrw70W/Mvkry7LbQ4aiZAiEAiIrz07BHXYpvDzfTq1TcZWpQqgNMtoGdfrlRDm31Yw8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36486738},"engines":{"node":">=20.10.0"},"gitHead":"8f601d59ac14546248d16f8ecda1bb4409b5b385","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.2-28a9c55-202607310902.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.2-8f601d5-202608031601.0_1785772965708_0.5622500530434418","host":"s3://npm-registry-packages-npm-production"}},"2.33.2-bdedb68-202608031609.0":{"name":"@flowfuse/flowfuse","version":"2.33.2-bdedb68-202608031609.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.2-bdedb68-202608031609.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9077375405c556fd913dbd48649ed9a3e48bee5a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.2-bdedb68-202608031609.0.tgz","fileCount":520,"integrity":"sha512-fmGAYSSgvxAiATO/ID39t4fxtYgXxBz6XKOgdb8aKhd9i5wkOzlf7m/tM0QRdEvlOBv8KXMkLFnc/sSYtY1lkg==","signatures":[{"sig":"MEQCICq28XApn/UPjDpXOvAISam6NbOZPJ1Rqufsd0KxZEPpAiBiHwXY+nxVJnYn2LtBstfIiH6TvJBlROjitU6axHvpFA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36522055},"engines":{"node":">=20.10.0"},"gitHead":"bdedb684106a448cf80e739a6985a1c3bfc3534d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.2-28a9c55-202607310902.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.2-bdedb68-202608031609.0_1785773441656_0.15673811724388953","host":"s3://npm-registry-packages-npm-production"}},"2.33.2-bdedb68-202608031631.0":{"name":"@flowfuse/flowfuse","version":"2.33.2-bdedb68-202608031631.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.2-bdedb68-202608031631.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"50aefae5dee7857031e768884d8d455479a86f37","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.2-bdedb68-202608031631.0.tgz","fileCount":520,"integrity":"sha512-VNOCY3fX918VZYNnjScJxVrzJQquQMgVzEyxTCBPFK8OO++XjO6Ju5lJErGAaTKSEZMwy3AUXspBVQvRZukjcw==","signatures":[{"sig":"MEUCIQDJI4aBnEDPz6P4yZ9yJTBlXUp7tc+2hqqt/bmfb32g6gIgUqpWaEGexq0Gu5gpiNTEXpe3duUNenSiegtQLftQk/w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36522133},"engines":{"node":">=20.10.0"},"gitHead":"bdedb684106a448cf80e739a6985a1c3bfc3534d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.2-28a9c55-202607310902.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.2-bdedb68-202608031631.0_1785774780991_0.647026133358785","host":"s3://npm-registry-packages-npm-production"}},"2.33.2-477be8c-202608041115.0":{"name":"@flowfuse/flowfuse","version":"2.33.2-477be8c-202608041115.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.2-477be8c-202608041115.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a8fa0d66671c66b56e4fd9d3b44c5c300a43ee03","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.2-477be8c-202608041115.0.tgz","fileCount":520,"integrity":"sha512-OV9smtwZKzS7ZqfpNr8O9yh0M+5IdRRciPgKZ6s15DeJRG7EcBp7pKZvTXpoEycIY4QYjmEJX5fcKdlN9t+qmw==","signatures":[{"sig":"MEUCIEF7Dcs1vrSxLLJB6bTMLbTiLnHsl4th3MKANbUwo+w6AiEAtAOrQ0iwgxw3rTsKn2ADtzDcEtiJ+Uhr+9+JtUgZCVY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36523260},"engines":{"node":">=20.10.0"},"gitHead":"477be8c19b65cfb6360b8c82061b51b01f0d4cff","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.2-28a9c55-202607310902.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.2-477be8c-202608041115.0_1785842246256_0.12682870743310581","host":"s3://npm-registry-packages-npm-production"}},"2.33.2-0147e29-202608041413.0":{"name":"@flowfuse/flowfuse","version":"2.33.2-0147e29-202608041413.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.2-0147e29-202608041413.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9abecd10b0da74fe9f93c8d4589ac0600ea67992","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.2-0147e29-202608041413.0.tgz","fileCount":520,"integrity":"sha512-n0BSmNF7RWd62TuJxqGAQjLRC6M2FyqaGouE+2SBvYP22k/TxHh4YnEdr16pMvm3exGeKrydbZu5gp6XA7JOtA==","signatures":[{"sig":"MEUCIQD7VbInPsGxMVIbW+bhcOKUjRm53PX4UwDYaDLWdMBW8AIgBkjxFqB9PTu/UJhSMR8qfPiMnoDhF0yGJJp/DD2pikA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36523086},"engines":{"node":">=20.10.0"},"gitHead":"0147e299f1e77a192ae662cb3982c9ed97a65d88","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.2-28a9c55-202607310902.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.2-0147e29-202608041413.0_1785852895775_0.9509102700182794","host":"s3://npm-registry-packages-npm-production"}},"2.33.2-21dd63f-202608042058.0":{"name":"@flowfuse/flowfuse","version":"2.33.2-21dd63f-202608042058.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.2-21dd63f-202608042058.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"37ed45bb98543cc4928d4116f7ff55c0cb4939e7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.2-21dd63f-202608042058.0.tgz","fileCount":520,"integrity":"sha512-8s/qglAqHHTKE0p0US043NrGqzHqX/phGi3vnPyjkZeASN4eAlsR3zqr3IkJTkLlxplTzkFdj2iaxxRiKHV0ww==","signatures":[{"sig":"MEQCIC+CkjpVwBI5ldVJnh9aAKmVHXHCcrh3poS51FCtjiniAiA2Ss6bVnZhrAW5zj3tIEFIa945Llxk+TmAozSNrq0nlQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36531095},"engines":{"node":">=20.10.0"},"gitHead":"21dd63f68519e2f9075672c76ae8dc8a7f5da4df","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.2-28a9c55-202607310902.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.2-21dd63f-202608042058.0_1785877177171_0.1613647159084064","host":"s3://npm-registry-packages-npm-production"}},"2.33.2-2be4bd6-202608050911.0":{"name":"@flowfuse/flowfuse","version":"2.33.2-2be4bd6-202608050911.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.2-2be4bd6-202608050911.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d15f20860ebfa1012bd8464d9416d9fbe72294db","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.2-2be4bd6-202608050911.0.tgz","fileCount":521,"integrity":"sha512-sy4Pfp2EWlKPyXvxSSIPZCi+Oh6kSvK2QbNx7hBmlohRJXiaSyuQSnwEDmEvHpf3OKB0eEYECwgIZXO1R2nA3w==","signatures":[{"sig":"MEUCIQDC7Vp+DVC/+7+7aiz91B/WPROph0g0Ni6Pzb6CwmQgMQIgZfOPGsgawQxphXdOLwkoKkrldXS9/rq5mlR4iSb4uBg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36534284},"engines":{"node":">=20.10.0"},"gitHead":"2be4bd635fbeaae0852568dd5cb1acb93a1f6c9e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.2-28a9c55-202607310902.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.2-2be4bd6-202608050911.0_1785921189077_0.22189187839308433","host":"s3://npm-registry-packages-npm-production"}},"2.33.2-2be4bd6-202608050929.0":{"name":"@flowfuse/flowfuse","version":"2.33.2-2be4bd6-202608050929.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.2-2be4bd6-202608050929.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"748c4fa7da3947b87bc7cfec72ffb1de09f97cbb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.2-2be4bd6-202608050929.0.tgz","fileCount":521,"integrity":"sha512-d8YuXz2DvJF8ohbi3Uiv6CCXM7ztwyQ4I59iYsOz6IoJidAPJuQfG9s9ADlLvi22LjXJJFLu34BcRYQKJ9AjCw==","signatures":[{"sig":"MEUCIQDCx/GAkw6QybOsBMTW+ETfsDcW9XlvD0LVRqAtzpDD+QIgGFuTt+PrvE2Hd64dBcvJgl4+FEIghSjlAtMGFZUfWOc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36534158},"engines":{"node":">=20.10.0"},"gitHead":"2be4bd635fbeaae0852568dd5cb1acb93a1f6c9e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.2-28a9c55-202608050928.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.2-2be4bd6-202608050929.0_1785922220476_0.7948112111670729","host":"s3://npm-registry-packages-npm-production"}},"2.33.2-2be4bd6-202608050933.0":{"name":"@flowfuse/flowfuse","version":"2.33.2-2be4bd6-202608050933.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.2-2be4bd6-202608050933.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e46bd2aefcc694f5a8f2f33d51b7f4d25bfb5226","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.2-2be4bd6-202608050933.0.tgz","fileCount":521,"integrity":"sha512-yu8zjUruiHq8jd93BV/IVmAYeofNrYi9D4zsD84MTMh4aVWv3BNzC6T7XfklBfqst6ndkIM0Lb+thkP9RxHrZA==","signatures":[{"sig":"MEQCIDhTQUHnuxoA514LRUpb0mZhLe5J6iHpkatvVkwVrgPNAiApupgOQkbJSSqDSVuwIAiKT6O7bPQkDICbB0wU9OWY2w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36534365},"engines":{"node":">=20.10.0"},"gitHead":"2be4bd635fbeaae0852568dd5cb1acb93a1f6c9e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.2-28a9c55-202608050932.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.2-2be4bd6-202608050933.0_1785922479877_0.4506030122650162","host":"s3://npm-registry-packages-npm-production"}},"2.33.2-2be4bd6-202608050938.0":{"name":"@flowfuse/flowfuse","version":"2.33.2-2be4bd6-202608050938.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.2-2be4bd6-202608050938.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c6801d9b20a6067c7a6889f48cd881c94bbeea10","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.2-2be4bd6-202608050938.0.tgz","fileCount":521,"integrity":"sha512-t/yrZi8N99JrzFG/i3Ud1gA03ubARL3Z5DFkCbG7dKT+RnQxV61ymvv6fDlKjB89DzHKZYZsvajmHduE8T5NFQ==","signatures":[{"sig":"MEUCIEEnz1q6MRWKSxQVG/oE2Dcp18RW08SjvKaKvF2o7s9aAiEA0OssQwf3WSviCN9xoubpvxh4LeLrbDgu2C7qqN0B82A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36534347},"engines":{"node":">=20.10.0"},"gitHead":"2be4bd635fbeaae0852568dd5cb1acb93a1f6c9e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-280c6b8-202608050938.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.2-2be4bd6-202608050938.0_1785922838298_0.4450256078680681","host":"s3://npm-registry-packages-npm-production"}},"2.33.2-71dae2d-202608051006.0":{"name":"@flowfuse/flowfuse","version":"2.33.2-71dae2d-202608051006.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.2-71dae2d-202608051006.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"99720786ce1eb2389f671d02e94dbee5875259ad","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.2-71dae2d-202608051006.0.tgz","fileCount":521,"integrity":"sha512-z7Huojx1Vf//3LY83ckFp5jLCVq5jje86Yx88yxWyeVdU0EmHH1/E4kE/JxvXexUqHq7m5PEnkLoXKGJuJhg7g==","signatures":[{"sig":"MEUCICb9BfjEXLX+Y4a+jCIkXFQmKZwdWV0I9T12LPLpnP7XAiEA7uowRFkpjHHMGQN1D0s0MPZf9jGxaXxYHZw9VvYqXxs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36534504},"engines":{"node":">=20.10.0"},"gitHead":"71dae2d9cfb2f6ba8ee254c6db6961cb2a91d34b","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-280c6b8-202608050938.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.2-71dae2d-202608051006.0_1785924500604_0.07927457984812336","host":"s3://npm-registry-packages-npm-production"}},"2.33.2":{"name":"@flowfuse/flowfuse","version":"2.33.2","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.2","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"984c1a820f3f0466600d8f424b18800018e03abb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.2.tgz","fileCount":521,"integrity":"sha512-96VkhEVMCyvMa5KSEp8qotwdrLFNd3R8o0elQ/fEY+IqyyN1MZ04m60/2HWrwtZVUTwt7ka3c1UxlnTcJX0DmQ==","signatures":[{"sig":"MEUCIEFc/0PATtaO+Qo6VA8Gq2GZ4Ht0vgE3OI+AF7UH9IO/AiEA+WFBpatiZVxtQEhT90p+x/RZkUXj9MApq5kkfRT2QiE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36528879},"engines":{"node":">=20.10.0"},"gitHead":"e912a46dd2d48561ff412d3952f4a8bb5968f0bf","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"^2.33.2","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.2_1785924676830_0.7135205229322346","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-e912a46-202608051030.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-e912a46-202608051030.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-e912a46-202608051030.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"17ea36fbd37790197c6912b69b475c3c2bddbc0f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-e912a46-202608051030.0.tgz","fileCount":521,"integrity":"sha512-G5heWnsbX5Alv3pHtxEK9dGTd+gSvNJV5ofjul/OGiaCK0n7ti1HVTi9D8sq06Lcp5FN1lkjQDRh5d6PLDx1fA==","signatures":[{"sig":"MEQCIDDEU1oMJPKwHs9+4PGv6bRQdscari1wRmYGWzv0Jtc7AiBcBrXWdvVV7uKh/NlsY0p4DsAtatH+udrJfJ7Zz9IKmg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36536030},"engines":{"node":">=20.10.0"},"gitHead":"e912a46dd2d48561ff412d3952f4a8bb5968f0bf","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-280c6b8-202608050938.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-e912a46-202608051030.0_1785925927185_0.35189230532991966","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-e912a46-202608051049.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-e912a46-202608051049.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-e912a46-202608051049.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9c9430e4407ead15b588142eb074d05a4548759c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-e912a46-202608051049.0.tgz","fileCount":521,"integrity":"sha512-cZIZVXm0/yyJXY7FZCHeACI0GvoxzObAw+3cMIwsYLDdyaJgw+n2oCkYHCCxPJQcUcGkRjtXcLppKnZifyX2KQ==","signatures":[{"sig":"MEQCIHcRrnrUm/7ir4K8dIx4z97/kCF5cZBNPegCbABYkwdqAiAGXPJwXR0XPbZn4jqvYBUwbB6rsvg7JQGfiZEDX+29Wg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36535982},"engines":{"node":">=20.10.0"},"gitHead":"e912a46dd2d48561ff412d3952f4a8bb5968f0bf","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-280c6b8-202608051048.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-e912a46-202608051049.0_1785927075500_0.9886013252209389","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-e912a46-202608051102.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-e912a46-202608051102.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-e912a46-202608051102.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f4133dbdec669c6875734b6b9f65ce4ba7ac0f95","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-e912a46-202608051102.0.tgz","fileCount":521,"integrity":"sha512-36pQMsxJOw7VBxCBUI76KbItWCPbaBvZkPdBuGXLryuWLuFZbpwXfdt0uvPlt6tUMmJJCvr3wxfHDNFIuEnfoA==","signatures":[{"sig":"MEQCIDjS9Za2mJPZ5j5PEn2zYKS3keZXmG75vu8L9SH/3dqbAiATVilyVSeVK/TH8FP4sJSUf+iKN3qiX33jZU5YA5RC4g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36535951},"engines":{"node":">=20.10.0"},"gitHead":"e912a46dd2d48561ff412d3952f4a8bb5968f0bf","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-280c6b8-202608051101.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-e912a46-202608051102.0_1785927842625_0.3673191447316728","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-60b2078-202608051414.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-60b2078-202608051414.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-60b2078-202608051414.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a97ba4410f2a72e178fa405c654896a3ae49d035","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-60b2078-202608051414.0.tgz","fileCount":521,"integrity":"sha512-XWKmYCa14+jtnEklL7aQUtN49DZEoVIt98ni3m4aHh2h11V7TYFYpc+6+dZztAeH3nKXtPUwVFlpcKw0KN2Abg==","signatures":[{"sig":"MEQCICWdbKNUcW6SkFaxUFvaOQcYVhYm5AzrdLoNYPR4nFESAiByudfqL1xnPc0vzKJuH8yuRZ+hRiG9EE8gdAg6APxaeA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36535410},"engines":{"node":">=20.10.0"},"gitHead":"60b207867d1b75e34a5a24dd9888301756299aa4","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-280c6b8-202608051413.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-60b2078-202608051414.0_1785939342721_0.16920425724941945","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-a8f760b-202608051424.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-a8f760b-202608051424.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-a8f760b-202608051424.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f52369f6bb18aefdea0ddf013c3676a598e08fe4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-a8f760b-202608051424.0.tgz","fileCount":521,"integrity":"sha512-swqIIKK3MBryMapxskojb/AhKhFTTOesDNrUI+76n92miKRLVBMtS0JMAbINY9Tx4l6pAuui0+MsINaOq1HmQA==","signatures":[{"sig":"MEQCIFsYymPVwSpfg6pYMNG0eg61/fD3gxGTFeuEBLENFfbYAiBDGmkKNTjYGWPlm2ZNx3u7TCt+Jomd1/7Ayw06f9fQZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36536044},"engines":{"node":">=20.10.0"},"gitHead":"a8f760b811c6ee1ac6e949c184295b5780c6ff93","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-9811d5f-202608051423.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-a8f760b-202608051424.0_1785939986166_0.36898420117193154","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-a8f760b-202608051426.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-a8f760b-202608051426.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-a8f760b-202608051426.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5e4a6e939f0c81eac045639617d02f858c5d2841","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-a8f760b-202608051426.0.tgz","fileCount":521,"integrity":"sha512-kGhb+ILE70U/ljIYEnONR8i35x7ah4ItI8NcMqUlMAM2F0fhzAb3dWed0pMFbgSGCPyJ5s2Tw88wxys1vISuWA==","signatures":[{"sig":"MEUCIQCODNfxAN8MaugaJ74sZM6ckMxwzrFZ2+sZwUWnNB6XRQIgfQA7khSZK6jw4SEUeNrqwGSGHuC4og86ObEbj0Td+GE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36536300},"engines":{"node":">=20.10.0"},"gitHead":"a8f760b811c6ee1ac6e949c184295b5780c6ff93","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608051425.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-a8f760b-202608051426.0_1785940107216_0.25457040411707066","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-a8f760b-202608051446.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-a8f760b-202608051446.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-a8f760b-202608051446.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9e3f17c80a5a877c06599f1ceefbb0d37ffccf12","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-a8f760b-202608051446.0.tgz","fileCount":521,"integrity":"sha512-X4jRBnmxzPK+3r9mX0KHLHdTpVG3Wapj1giOXDWVmpnM4kF8n2HRhH4VC6aRzM79l2eB6Cp5yDFPAd6MB8IS4g==","signatures":[{"sig":"MEUCIQDoiEIf8BYTDGatn8jXJmZA8MsPv6BUanr60kBUS6HIXAIgNcAfliTikjnSW6Wo4XH3r4cX/EPlEyJ/dZzJAs5O/fM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36536066},"engines":{"node":">=20.10.0"},"gitHead":"a8f760b811c6ee1ac6e949c184295b5780c6ff93","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608051425.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-a8f760b-202608051446.0_1785941311686_0.8960192578099369","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-1218b5e-202608051522.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-1218b5e-202608051522.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-1218b5e-202608051522.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"75e433783cc93c35ac001e2db86a4e91c74bcdf1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-1218b5e-202608051522.0.tgz","fileCount":521,"integrity":"sha512-dqv45/vfjOg35/vj8uRAhFSE4gNzKuG4t2/1Ly/3OFCRe+eb9wgoRaqgzMQpj9iDKxUcjOXPDBWe0FSrDc9tHQ==","signatures":[{"sig":"MEUCIGEkzSEn4sBRdWYggf2e44AHgrzPaUHypwXrKGKjh4PUAiEA0tqdVHcgOkD5ohJoUFFToyIGbA+FWVKCIfO+xZ+U5Ao=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36535167},"engines":{"node":">=20.10.0"},"gitHead":"1218b5ea33ba447e2a5de8561beb73ee584715ec","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608051425.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-1218b5e-202608051522.0_1785943456667_0.7225205834141564","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-1218b5e-202608060824.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-1218b5e-202608060824.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-1218b5e-202608060824.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1841fd980e12bf1026f9b07449d3f58655a99f02","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-1218b5e-202608060824.0.tgz","fileCount":521,"integrity":"sha512-93514EdYGLS26GaKgij+tEgfbyG/bRc4GSnj+XHmGw4huHX+edLCZpYRxGwj6+i7PQu7cVAR4LN/wmEwNBf5XA==","signatures":[{"sig":"MEUCIQDtmFQIT6hyAFnDBvLKiJ3RRRZzKUMOZ6hZBfMYkasZCgIgeMAVNDT5I1kLxDX8Pw+21vyqhvp5O7ueveEZmo1q1i8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36534853},"engines":{"node":">=20.10.0"},"gitHead":"1218b5ea33ba447e2a5de8561beb73ee584715ec","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608060824.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-1218b5e-202608060824.0_1786004792789_0.6348223614041288","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-1218b5e-202608060918.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-1218b5e-202608060918.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-1218b5e-202608060918.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"feb6ebfb1225c15dc88ec9f0157d24d3c4ab8cc4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-1218b5e-202608060918.0.tgz","fileCount":521,"integrity":"sha512-TiUT76OCTLsYHxonR9E99wSsU5mhiJStod0FC8mhnvWPg4t5YrLUaAh8IUNKwuWQIm73idJREk0S9QKqY35wUQ==","signatures":[{"sig":"MEUCIA+YpL3Bsb5MfaVYAnDUWVcNWjBb/LLHlir3aUWzxe2oAiEA+jo3QkFBdq7Vtsl02Yy+DFopMct6B7cWtAv1yv8Rq40=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36535075},"engines":{"node":">=20.10.0"},"gitHead":"1218b5ea33ba447e2a5de8561beb73ee584715ec","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608060917.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-1218b5e-202608060918.0_1786007976499_0.2765655367308091","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-78050e1-202608070815.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-78050e1-202608070815.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-78050e1-202608070815.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4be323785147b45c3d165b5bbbbd976c31f97be6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-78050e1-202608070815.0.tgz","fileCount":521,"integrity":"sha512-ITiz0wsQGbnIEYgVyHz3d40S3RPOKvPkeY80/aVzPB4PvVqX2r+N7k9PBVowXiHNH5OdZR416SLkc9pPAIVruA==","signatures":[{"sig":"MEUCIF7GWw1P1o3OVJkP1wnLGL8k8EzSkrH63xpCRJNfyEjlAiEA+uTtq2AGIPT2aEpSu2UzPfvDgXftRDzQitSiSVPv1xk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36536542},"engines":{"node":">=20.10.0"},"gitHead":"78050e1e5c54cc6e9d4349a9c5b23671691609e5","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608060917.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^29.1.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-78050e1-202608070815.0_1786090627805_0.9912463909512608","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-b17ad2d-202608071332.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-b17ad2d-202608071332.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-b17ad2d-202608071332.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5f25811e39afe13158819e88f7898a7a5d3911d6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-b17ad2d-202608071332.0.tgz","fileCount":521,"integrity":"sha512-E5h1dtvf678wge6zMythP/H42qrXF5kaBaWfA/7+fWC8Boqx/F/tdiLEJycFT4FxZj79v/j9Y/4oLcayvLnXtg==","signatures":[{"sig":"MEUCIQCBDOX76ZEiL9P1KroZ6odpWyzCBGZdYzR8l0KciWe/7AIgM5dc+ePjdQOKmfpT7sXfeX4rEtCKYfmYdL4GTkmZbMc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36536622},"engines":{"node":">=20.10.0"},"gitHead":"b17ad2d4062f59d64d8bf71530c98bb1b5cf5dba","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608060917.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-b17ad2d-202608071332.0_1786109638866_0.39651717202767967","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-b17ad2d-202608071356.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-b17ad2d-202608071356.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-b17ad2d-202608071356.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6b408791bb496212cae3cb3b406f484f6cfcdc1c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-b17ad2d-202608071356.0.tgz","fileCount":521,"integrity":"sha512-qTtSS3BtiaEpir4cbry875fth+9F5JFhGS68F689n5tQxYw1I3tcSjBz5VepwHaJCj6oA9E9f1TR2TIiagEeqQ==","signatures":[{"sig":"MEUCIBUjKM2KY5JDrCQm/b7x+6EUPNty/6eC7hid4udJEwLGAiEAt14eVXVODSLM45glA+KlLuG6Y1f2cz6ygnIhKClbjFY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36536509},"engines":{"node":">=20.10.0"},"gitHead":"b17ad2d4062f59d64d8bf71530c98bb1b5cf5dba","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608060917.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-b17ad2d-202608071356.0_1786111077679_0.9977798913168152","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-5370915-202608071520.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-5370915-202608071520.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-5370915-202608071520.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"db2490aed46dd4dc905d4ad4641736bcb37897ab","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-5370915-202608071520.0.tgz","fileCount":521,"integrity":"sha512-Es8oBByTLc41HQQoMsJ1PiwZXhON9X1uVfA2GY+62sjO8MPML7EZp3UIVvKxmxGIJ8/A22enaed0mDoox9bRKA==","signatures":[{"sig":"MEQCIGG+Tv0L0vWoR8Fw1dxUa3jHCpta8IKwGHoXH8KKGi7GAiA6Vk+QA5MTLEmrzfxG4SQ8swmuirn1EW6+Wk3P+wrjmg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36570081},"engines":{"node":">=20.10.0"},"gitHead":"537091593ccabd5e960701dc7b494f000cbce31c","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608060917.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-5370915-202608071520.0_1786116123456_0.4198045563326158","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-7e031c5-202608071542.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-7e031c5-202608071542.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-7e031c5-202608071542.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9269456b49dcada070bf58ac01c17d15a4bf78fc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-7e031c5-202608071542.0.tgz","fileCount":521,"integrity":"sha512-fymOFkK5HqCcoqFN6TCbEQKF3iX8R6GLHucfADb21AzcIrAEaIxeqqeWRhUefheykA77P6WHcDhpqI0TLtlhoA==","signatures":[{"sig":"MEUCIAGQFM336KbQz+yRcGSvRJSM6TW2kPtQvDcaO+mofVBtAiEA09h0WYPMkUsc+iSxdVqLiVn4r5UpAFrXIpN/QvK5WCM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36574721},"engines":{"node":">=20.10.0"},"gitHead":"7e031c588fc151805e11b248159d9982c77df94e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608060917.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-7e031c5-202608071542.0_1786117446402_0.5457051870588889","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-ab721cb-202608071552.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-ab721cb-202608071552.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-ab721cb-202608071552.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"47d8407a40733af72f5e297aaa94dbfaefed1d16","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-ab721cb-202608071552.0.tgz","fileCount":521,"integrity":"sha512-GQDn0G3/yh//rup2KB9kvBwpp9+Cb/TzImJgNqUfz05LYeNW9q1nA0BVNstS56f9EIplhHWSP3noGAL3sj7eyw==","signatures":[{"sig":"MEQCIF8zthaBSh4uh1tWRoh2V9mMi6usVjy3Gpo+F1GZrttjAiB4dYwjppGVl13jwGW+VuhcPxHu/kvzoC8kJA3V+9bUcQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36574610},"engines":{"node":">=20.10.0"},"gitHead":"ab721cb50afa847f1c2e322b9631c1330e31af21","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608060917.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-ab721cb-202608071552.0_1786118051328_0.8535658112058386","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-ab721cb-202608071652.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-ab721cb-202608071652.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-ab721cb-202608071652.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a92e24480e1b5acd97538dfdf0d958106999e14d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-ab721cb-202608071652.0.tgz","fileCount":521,"integrity":"sha512-GUalf3b8qxtiB5EKRdd4u/XNGHfx7SSFy7ki3RWvZaAcG5W2Zgt8ntw9Mvp2pMaR7QntrjPI1IkFZMbmdPILzA==","signatures":[{"sig":"MEQCIEgWiLDv2V8iUM0VsCDTJk2WJrPr8v0aM40NgmGF3zYlAiAgzb2qJLBAkFfBLhNFlEMFmQuo5BBCX7XmgblWl8hkBA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36574815},"engines":{"node":">=20.10.0"},"gitHead":"ab721cb50afa847f1c2e322b9631c1330e31af21","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608060917.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-ab721cb-202608071652.0_1786121629386_0.6948702387753403","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-9a46676-202608071910.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-9a46676-202608071910.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-9a46676-202608071910.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fc7a5c70129a9e4b62b0943776819a5d52bda2f6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-9a46676-202608071910.0.tgz","fileCount":521,"integrity":"sha512-eK6KdBbxBtg+xnUundp3hsnaQ80DFDES+A2Wz01AKU2pz5F74CNZf4JpmfHqrmBqxkryeC5whY4AkoUzFKkFaQ==","signatures":[{"sig":"MEUCIQD2j3s4z9ljgNP4xyXaiE6tb2do3VW30TNGv/TEfdr2hgIgHAI6Huf/S9i4TRiqumjAduBQls4IMh7bNWTYw1dzM84=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36574551},"engines":{"node":">=20.10.0"},"gitHead":"9a46676253900dd91c64ca17637fc3b4c6f7ffd5","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608060917.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-9a46676-202608071910.0_1786129905557_0.7221949450489615","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-f6d18a5-202608071924.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-f6d18a5-202608071924.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-f6d18a5-202608071924.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"48804348f6a3e7827c4f42c4b3b89ff948cf1bf3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-f6d18a5-202608071924.0.tgz","fileCount":521,"integrity":"sha512-e80Q/eWJphdBWtVVGAeEHC+9TMyEf3dArLwNCx2qT5wfGwclzyucAr8Sti21WFtcagImQmXNrNYJzgyicyV52g==","signatures":[{"sig":"MEUCICZTsU82JkvQNur00LOg65sD1T8o4Dk+ZrgFhlj8/SaUAiEAxNuzMa/AeqA1E47f3ti6gpKU7hlX4FZE3n30d7l4l0A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36574648},"engines":{"node":">=20.10.0"},"gitHead":"f6d18a54b07d850a41f0f3582c8171e2f8364c8d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608060917.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-f6d18a5-202608071924.0_1786130773353_0.6103881503326909","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-946fa59-202608071927.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-946fa59-202608071927.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-946fa59-202608071927.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f2800bdd3961cdbe8b7f60aa8c2c541e4bf28aa4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-946fa59-202608071927.0.tgz","fileCount":521,"integrity":"sha512-HZIUcf8x0wesN5pSsRh0pHP5jbA+6sTWN+bThm7wMnIQqFd1rSZW1/UfVaHkBv3S0HTd7GLEUjCLqr6H8sO2Kw==","signatures":[{"sig":"MEYCIQCTAxhMH/StxHpzLbq93iguJYZF9dPalPakkwfqEcoxiwIhAMlp6Qe5PHDH63V2Xz8gzgW0p8BpmEdDfFvLnum2Nje4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36591992},"engines":{"node":">=20.10.0"},"gitHead":"946fa590f88752a97f500ab5b2a3284626b0baaf","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608060917.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-946fa59-202608071927.0_1786130934702_0.7499815678216142","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-da6259a-202608071930.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-da6259a-202608071930.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-da6259a-202608071930.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"04c3a37b85b89b59be78c592319e575ee9806371","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-da6259a-202608071930.0.tgz","fileCount":521,"integrity":"sha512-qhqs5fhqeL90L2TTKsMHcFv9pwIge/j/hIPlq6GQS7N3Ug6dA5hEbe+rleoEmegyhnPzP5d+f9L9HXAlCqztwA==","signatures":[{"sig":"MEYCIQDSwEQ2UVbi6hfHExkZrN62CXeemJ053in11rXMRlFevQIhAP08VLaALQ6GpWENpBfRaP/uVm4lAcUlQCDM7ql/5wny","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36591874},"engines":{"node":">=20.10.0"},"gitHead":"da6259a265d4419b02518fad34572ab73a38cc77","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608060917.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-da6259a-202608071930.0_1786131137055_0.4360640380700156","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-f3abaa1-202608071932.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-f3abaa1-202608071932.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-f3abaa1-202608071932.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c78845c9c4e5214615fa3c04757a2bd9c5299108","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-f3abaa1-202608071932.0.tgz","fileCount":521,"integrity":"sha512-o4udYTfS71t8Ju+RPqFLHIwJDAjxL1qM3KqB92147ZBMt7WWDHZAaaPi5cbGkXvrTuhxlXUAMnr1Hg9Cyo3TYQ==","signatures":[{"sig":"MEQCIBtUW6Zf0o0BGF72vm9RWveEdJuVbySVXuaM0YNu1dqvAiBaGBi/6HeT8FM3jusA4enAACdSc8gHhUDK2lTystDtjw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36591687},"engines":{"node":">=20.10.0"},"gitHead":"f3abaa1f812d68057f78ac0059d349690e3e52a4","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608060917.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-f3abaa1-202608071932.0_1786131254954_0.01033299448867897","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-f3a9f6f-202608071936.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-f3a9f6f-202608071936.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-f3a9f6f-202608071936.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c9b12f6121c8a16a698d5fbf947e4744476ee7bb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-f3a9f6f-202608071936.0.tgz","fileCount":521,"integrity":"sha512-zfa1ytKC8MWePzErx8/R81axfXXotN3P54SeylPOL9zpIa9sAjA0UVr97M1DW+zprtwNrck1HexakQZdEcRrlQ==","signatures":[{"sig":"MEQCIFgwpmuf0r1myGpscrljtHyGu9S1gN3L6G7WcoglCkR0AiAypjIOWikVgX/EZREK4V/5PunAA7AMDPtRTN7oXEiR6w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36596784},"engines":{"node":">=20.10.0"},"gitHead":"f3a9f6f9e9b8d37c9fdd69bd034550644baf5d7c","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608060917.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-f3a9f6f-202608071936.0_1786131505389_0.11589206031744359","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-12286f2-202608071940.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-12286f2-202608071940.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-12286f2-202608071940.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2f634bc7b982994e20b8cd9029d79a676bf322d1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-12286f2-202608071940.0.tgz","fileCount":521,"integrity":"sha512-/zykSgGGfQDaAB4EFUkX3J31Bk0OrhQQNMtJzP53yu5dAuXQ6n9NAuy5HPDDh6kyjqbRWv7GkbEMJN1sAXzevw==","signatures":[{"sig":"MEYCIQCE2I0ndvT1W1v168ZB7gfFLXUpAZZtqeJzL/AKzYFSVwIhAM2AnwHXaV5T1Xuly5EIMvWdahHvmRjAgyT09LQtvwm9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36596731},"engines":{"node":">=20.10.0"},"gitHead":"12286f2976fca09a96332838236a79f031489008","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608060917.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-12286f2-202608071940.0_1786131737639_0.6553765911688141","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-12286f2-202608072003.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-12286f2-202608072003.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-12286f2-202608072003.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5f47930349247d2e58b97a2d2a06186bd82185d3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-12286f2-202608072003.0.tgz","fileCount":521,"integrity":"sha512-cNCNdQKXOYbUKAVNjU9RyHyapQlOpLKKzE+/1G7+eez09z/VOS9up2lK20VepepWQldSafxCFDmtPy+sEE68zQ==","signatures":[{"sig":"MEQCIHt5EnT/14XCK/MZLgdDMTJWeeDnzsGOKmbwtP0mnTdjAiAmJQfqW0layLiJnmXOqnROkU8FJdspE9svghGy9juoZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36596829},"engines":{"node":">=20.10.0"},"gitHead":"12286f2976fca09a96332838236a79f031489008","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608060917.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-12286f2-202608072003.0_1786133111826_0.20637044511549774","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-151b2bf-202608100812.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-151b2bf-202608100812.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-151b2bf-202608100812.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"32e3821b96d5bfa3e2e0da5db32d8383cb0e268d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-151b2bf-202608100812.0.tgz","fileCount":521,"integrity":"sha512-fY7kKpRibxJ9BfE2Q92BlVohDWGbG/FtlM76nq9JG4ejBo0CQvCPK9uwCavERcn9tSn4n8TjSXPLJHsjwbtkYg==","signatures":[{"sig":"MEYCIQCLyNfxgJ7ENW4DtOJn+Zwjowzzy2DzPfSK933KLa1stgIhANTaUNFODu1ZBhBPG+SyXeTw8qv7eJNugpRLkpKu5FGC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36581233},"engines":{"node":">=20.10.0"},"gitHead":"151b2bf0ab2078ee63009222f5c65a48ee0a126b","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608060917.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-151b2bf-202608100812.0_1786349650082_0.7435749293693132","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-9515085-202608101142.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-9515085-202608101142.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-9515085-202608101142.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"aecf3d2afe8c27e09351b6ed28bc9ed8752ee3af","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-9515085-202608101142.0.tgz","fileCount":522,"integrity":"sha512-AsIlqCC8bvbHIvm1qdkjvajFmvTb5gy1SXCeX9ykmhu4cUEO2ugCihVkdCuq/vQV4nNvvginHqlS9CEER6M8ZQ==","signatures":[{"sig":"MEUCIQCwsv0+EyJ38s81PIOIU8U0w6CqWfecd8m146gWqywqMwIgNkU9ZAv6+/17Bw24zz34h4ag4T3BKUY7NId9SAIfVvY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36581672},"engines":{"node":">=20.10.0"},"gitHead":"951508528465d59a8ae4721bb1cdfe87c31e0e91","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608060917.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-9515085-202608101142.0_1786362267589_0.6336994629541759","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-446dc78-202608102056.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-446dc78-202608102056.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-446dc78-202608102056.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"048f4f02ecaa67a0bfd7a0940bb02ea195fcd6dd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-446dc78-202608102056.0.tgz","fileCount":522,"integrity":"sha512-wkvsHCZOjk2C6ZSI5MPvgcjIMRgjKvl7hf7iXDEdwMMAFaemOJ2BiTE1G2z6itvCmwJE17RDH6sNCn6aFzg0og==","signatures":[{"sig":"MEYCIQDj+YdV/q2uJX/iTI1vi/BcmaKH6E/V00Uc+P4hpeUSzAIhANojoh2LpzgaDJOpR/zPBDF7ohNSlQ/6abciOkqm9105","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36581512},"engines":{"node":">=20.10.0"},"gitHead":"446dc78187417c1966fab336ab2d6f8b3ad36888","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608060917.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-446dc78-202608102056.0_1786395462492_0.8545490253435188","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-5801fa2-202608102104.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-5801fa2-202608102104.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-5801fa2-202608102104.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5d34c5dbc51c1c56e9b005529a5a704f7595b2ed","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-5801fa2-202608102104.0.tgz","fileCount":522,"integrity":"sha512-DQ0G4oPodf30h22K+E68SibLJDEue9UJ2zQAewedaJf0OBdV9SUJO1y11tctLUoa6q0ghXVihVOhoGxXLpcbXg==","signatures":[{"sig":"MEQCIEJhmvrUIDNZz5M+ECq26vdKcNx5voMPv3jJi1LMQiXYAiAC8l+fWE6jfxQQvdPSE3BPizojBbTYEf+br9qsHAzg8Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36581705},"engines":{"node":">=20.10.0"},"gitHead":"5801fa21b7863b49d6a9d2adfa55c904584d1b5c","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608060917.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-5801fa2-202608102104.0_1786395974848_0.37249628883657104","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-5801fa2-202608102126.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-5801fa2-202608102126.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-5801fa2-202608102126.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cf3689748e02d5272ca7ff0378dd9fc79a05c90b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-5801fa2-202608102126.0.tgz","fileCount":522,"integrity":"sha512-TvNhD7frXXP9PyBXX95TGAJCV7uMt6vXwYTXPx0PNSsu/5xVFWKKThESBJq9rp6vFA6qVa1I0unj6rkxFnaTBw==","signatures":[{"sig":"MEQCIG4V3W1GpH1mx/M/hNgfgcrU0CkPzHfO33Ywv6tSN8KKAiBcLxgrTMFJnW+PSxHQ+a1D7jMEfvH2ICWQayvNp+OHqg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36582149},"engines":{"node":">=20.10.0"},"gitHead":"5801fa21b7863b49d6a9d2adfa55c904584d1b5c","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608060917.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-5801fa2-202608102126.0_1786397269098_0.1164086485095992","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-2af687c-202608102149.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-2af687c-202608102149.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-2af687c-202608102149.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cc84601a4ae14e3d7d17b31cda6f1cf3eee9d264","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-2af687c-202608102149.0.tgz","fileCount":522,"integrity":"sha512-d1mQOWwXaR5OqqWi4KJriq0aBvrC3ny1eoZGTkH5km8rRI90x5EVb6/eKSxUPmoYuqEd/r7JqBDlbgFNGIGNPw==","signatures":[{"sig":"MEUCIQDATkjIrr34uq9sc0FX5tKKp0BMjrMwBrJ5VItyWiV9ogIgMMosNbDrkfM+SU2zYeNImQHEX+eEeFTmBgowixLc8Ds=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36581612},"engines":{"node":">=20.10.0"},"gitHead":"2af687c3cd8cda3f69925d8b9c2fba0f6e19070e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-f7f12b9-202608060917.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-2af687c-202608102149.0_1786398638877_0.27056260664485743","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-2af687c-202608111358.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-2af687c-202608111358.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-2af687c-202608111358.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4f8e74bd562c2d8fd3f08fae582d8ed886b40843","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-2af687c-202608111358.0.tgz","fileCount":522,"integrity":"sha512-NQV3tPKxpdWEgLCs9QHc+fdzU4LUoWjSxSV7Tl2MMM5JqbIEsp1aY0agRFAg2AqTh7a0MoVy3xFKqdkqY7d7rg==","signatures":[{"sig":"MEYCIQDCcqvqhLZrYSQlr9tNw42poJ6IPJu9vxrO/6sawOZY2wIhAPLKvFRVfvkysGF9hUsBHgySUhtTaGuinuSacfGUdGxv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36581683},"engines":{"node":">=20.10.0"},"gitHead":"2af687c3cd8cda3f69925d8b9c2fba0f6e19070e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608111357.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-2af687c-202608111358.0_1786456777493_0.0002042393574370749","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-bb4aafa-202608111744.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-bb4aafa-202608111744.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-bb4aafa-202608111744.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ae352c81cbceb32dae25af94c739282c9d75bd85","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-bb4aafa-202608111744.0.tgz","fileCount":522,"integrity":"sha512-sGk0NbL76FHuW2cgaDJ5yd2g/7lhp3EMkr/2m5OQYjXXe6ihS/0ifgmz6EIP+Ri6Cy0lTlL8ueGnifeDQK0cQQ==","signatures":[{"sig":"MEUCIQCDCJCq5wU2UOR7dxm22avzPnTSMVmMsG54mv2BzYyWrwIgfUTJLaGLkHps/WmSoe6zEyyU/DvRfleeWbqdw6sWANE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36584146},"engines":{"node":">=20.10.0"},"gitHead":"bb4aafad1fdcc16395f7641eb5f94b83f40b5900","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608111357.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-bb4aafa-202608111744.0_1786470372131_0.11131249497786522","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-bb5b448-202608111747.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-bb5b448-202608111747.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-bb5b448-202608111747.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6c94ce2311911b69e2807333e1165ef2a5cb300a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-bb5b448-202608111747.0.tgz","fileCount":522,"integrity":"sha512-Y8BgtNHvqDjOPijrvy2g95SI7f7mIzraNDmfRCT3SXj80pdIen0Ukl9bTfF2yd4vK4sk/tJEGaNrUji6n+9ygw==","signatures":[{"sig":"MEUCIQDr4mtwMGPL5rrckvQqhbFv6dsbenF7bn3Sapp5wDmekwIgWrkef3R2nlc+IBX/IlTpJUhkjIZabI7A3RiYThSe59I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36584150},"engines":{"node":">=20.10.0"},"gitHead":"bb5b4486766208b847c7d81af0d121d03b95395b","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608111357.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-bb5b448-202608111747.0_1786470525534_0.9780975572667869","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-2ff5a41-202608111752.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-2ff5a41-202608111752.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-2ff5a41-202608111752.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5d7acba54ea155844d6f1913310634a1e0ff3dc2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-2ff5a41-202608111752.0.tgz","fileCount":522,"integrity":"sha512-JFQqT/ElnSbdvKRtDEeh9LWS0IZIvWhs+xzIJLrPlxWHgwTwtVVZsGqDEH92v072ilMr7TPmq1phrh3NwTcBmw==","signatures":[{"sig":"MEUCIQDTKo3UqO6RexbFyQFTJgUbiDf1XaYz9F2WJOTmT2w0rgIgKli9QOwEF9aWvOH9L6YToiaoOEC6dc+m2toeypduQeo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36584148},"engines":{"node":">=20.10.0"},"gitHead":"2ff5a41e8b5fccfe9a245e9cb147ad3bfd6ab647","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^8.0.2","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608111357.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-2ff5a41-202608111752.0_1786470840027_0.7634785141563349","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-21056e2-202608111758.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-21056e2-202608111758.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-21056e2-202608111758.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5eeb302e411ea283e54c7e0a6d55a413cce8baf4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-21056e2-202608111758.0.tgz","fileCount":522,"integrity":"sha512-Kjb/DChUQz+mDrR0yzKZAT5rxzVLaXLpoLblA8h6D8P2B5/85LU7qPDyFLmfLGso9r/JDHvTQt6UWedIFn9rtg==","signatures":[{"sig":"MEYCIQDanDLookqzocbEU3mPETS03lMFdHguXimSBcpqG2geuQIhAOYEE0HYFwaC/bV34SwWUUkb2zFx4ALqZeZDCSnJVIoQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36583993},"engines":{"node":">=20.10.0"},"gitHead":"21056e24f8ccc8a9aeffb6f04f3dc85623e8bcab","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608111357.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-21056e2-202608111758.0_1786471178667_0.0641770314332395","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-5b425ab-202608111803.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-5b425ab-202608111803.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-5b425ab-202608111803.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d04b47b0d641d58f8995bc4d65b2c9b97371bc76","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-5b425ab-202608111803.0.tgz","fileCount":522,"integrity":"sha512-w47w9YRu4XquhPiywuBghOWCw/CWcL2wK27OSTSBSraA79cHaR0ZAv2cSuNqtbgwKtH9LkmrlpacCeldC59+bg==","signatures":[{"sig":"MEUCIDRSYh4w8bK6bc8IfuptZ7Kqw1z0smrQY6ziAvl6VrqRAiEAn+WpCaWrXoAO3352SGfi1O9Oqxw3J0ps1HmvWrdh1tI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36597563},"engines":{"node":">=20.10.0"},"gitHead":"5b425abdcb28572e6ad3f81e0dab48abb1ce0952","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608111357.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-5b425ab-202608111803.0_1786471508885_0.8159291442669336","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-3fbef37-202608111808.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-3fbef37-202608111808.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-3fbef37-202608111808.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3f88f3c8880540aed4282e8fdda323b80d1009ad","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-3fbef37-202608111808.0.tgz","fileCount":522,"integrity":"sha512-kQKGZEXhu7g9bqVNSxMth7jsh1mlIxrzMnt/pkscwY4ZITb5hSN77DUonleuBnKsBzEuORxr7vzHjTVf6RMuTw==","signatures":[{"sig":"MEYCIQD1W0M5Ahd6oKz0I1Q6a19mf3HnI6J6PfaZwH2yOOIj0AIhAKhfPNxA22d5PB5nmVCWWsFHejmal4cRrON91jt4ETnh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36597378},"engines":{"node":">=20.10.0"},"gitHead":"3fbef37792f43fa364868f73753e1afcfb271b96","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608111357.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-3fbef37-202608111808.0_1786471811015_0.6283084062234794","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-0047031-202608111823.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-0047031-202608111823.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-0047031-202608111823.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"aa3bc428ed58a176a2ec6577c3b3d3f8f4a3aa02","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-0047031-202608111823.0.tgz","fileCount":522,"integrity":"sha512-k69oPaVrlDRfPeqq9E0n5RCjPnZyWZyExiXrob4BeNwhYKecfWIq1nwOpPAUbq+VadZq4aY3sJGkvK5Wlvq8AQ==","signatures":[{"sig":"MEUCIQCo10vQdXuon3gcvWy3tFBqd9E4FB/EWTDIFsKSa/JHwgIgB7MD72M7DYuUDeA5bro+ACDWqDk47938XQG4Ir/xb14=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36596914},"engines":{"node":">=20.10.0"},"gitHead":"0047031f01403e6e12a414f7073de295bd0dd5b9","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608111357.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-0047031-202608111823.0_1786472714037_0.023890269477176318","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-9a1d367-202608111829.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-9a1d367-202608111829.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-9a1d367-202608111829.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f827fbfd1ab0191e7a677c1285b2ae3faef62d93","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-9a1d367-202608111829.0.tgz","fileCount":522,"integrity":"sha512-9CrQWSomf0CYti9DjDD5XQmADFRrSr/0KORlLYWGLUH97i3K5HGbHl9UPuBlxQBKiIikQEjuGrgKXSf3b78Y0A==","signatures":[{"sig":"MEYCIQCGYEa5QRazuobiKp671Uq71yAXhKBdBHJe/sQI8RTkcQIhAIOp1Rlv0p7EAHcIcifyzU7sKpXXL0wpho/5EW/Q799x","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36597283},"engines":{"node":">=20.10.0"},"gitHead":"9a1d367819481f36f51b317e204d903c646b4afe","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608111357.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-9a1d367-202608111829.0_1786473089728_0.24364152916196447","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-9a1d367-202608111855.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-9a1d367-202608111855.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-9a1d367-202608111855.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"37fad26d8e25b67bcdf1384d661d4a62bc8704b5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-9a1d367-202608111855.0.tgz","fileCount":522,"integrity":"sha512-TX96JgAZiohjv5rj5DfAmw0slrFLEUzlItwuPN5YKvYQ9N4D8kr9gN86yu4qyBD2U1KRRk37w1FwFbk/ty1LdQ==","signatures":[{"sig":"MEYCIQC+LwwNdfYTbZmqyYJY2mtmQgmiHzjNyoXxh+6oCa4fjQIhAO8nEuYQolzlgO2TRYEdbHyg9RFLmcjYhCbpbJhmD+KI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36597292},"engines":{"node":">=20.10.0"},"gitHead":"9a1d367819481f36f51b317e204d903c646b4afe","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608111357.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-9a1d367-202608111855.0_1786474615665_0.8524862345182136","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-9a1d367-202608120801.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-9a1d367-202608120801.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-9a1d367-202608120801.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d50e5133f715cab52ca8eeec8338a40deb82c810","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-9a1d367-202608120801.0.tgz","fileCount":522,"integrity":"sha512-3Bim2ei15XUw7JORLdgrUBXN7HBHwlOGKwO0Cbdv/lRB7vADVexBEQfcfBuQqWyJ38GGfErlHftZHPYkXrLZOA==","signatures":[{"sig":"MEUCIFaLsQqtHpYuqWO9j5Duu3qY3hhk3g7Jl0kNwXZuntqWAiEAy6ySMiJWdE3ivwsjlwu7C7sUDoTst216OEPvExS762M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36597673},"engines":{"node":">=20.10.0"},"gitHead":"9a1d367819481f36f51b317e204d903c646b4afe","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608120801.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-9a1d367-202608120801.0_1786521798742_0.2997896246996772","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-9a1d367-202608120812.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-9a1d367-202608120812.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-9a1d367-202608120812.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4cc0c24ae4ef90a493dd0a88f60d4d5a44e71d08","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-9a1d367-202608120812.0.tgz","fileCount":522,"integrity":"sha512-Kr1OISDbn6+pZW+k+uebSKX7AZhGjUG3zW77rdKI6AnkzK7YCE4VF+ufcSUcMG5Vr58G1WIQG5wwlguOC8hYig==","signatures":[{"sig":"MEYCIQDpMRyQqU/72+4BD68Ef7gMH9Pdos2dnYskFIvvbbupgQIhANI9y3jL0ZOE845hSvaT2wMk3MGetFeNDQBekhhfBZdQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36597377},"engines":{"node":">=20.10.0"},"gitHead":"9a1d367819481f36f51b317e204d903c646b4afe","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608120812.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-9a1d367-202608120812.0_1786522480312_0.5750436684145916","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-39d7181-202608121600.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-39d7181-202608121600.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-39d7181-202608121600.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a6161c4a3247973f2ebbad6491c5c6cebb66cdd8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-39d7181-202608121600.0.tgz","fileCount":522,"integrity":"sha512-C1xDRPY6ikQvjcnc0UwYc4T2kBEfy7r53vHtlVRq9y097FY0DKp+5Vn+EDgQBa52xReFhCJ72hhIm7vozoPhqw==","signatures":[{"sig":"MEUCIDwgNNZKex05GfAYRJomcoO7sHHGYt1vNDlcQlOkFLtGAiEA3Z32+ZPN6NjwuRoymMPBekCyekxXZdDBkpubTwER2XI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36597615},"engines":{"node":">=20.10.0"},"gitHead":"39d7181aa5ad20597038c368b1bd51ca5a76cf63","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608121600.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-39d7181-202608121600.0_1786550557801_0.8139134078364603","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-39d7181-202608121603.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-39d7181-202608121603.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-39d7181-202608121603.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bb6d1bbeabf9563a396bb14f30bc652391a4fd1e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-39d7181-202608121603.0.tgz","fileCount":522,"integrity":"sha512-1Ziry+58GxxJRuviVTgYC2rR+AiMpziKgOGraOILsjjdALZk7NxW2dusB1x0j5T5usipB92YgqYB/Y4gw7CAlA==","signatures":[{"sig":"MEUCIQDmNwT5vnjvckiobnZnSVT1kTG9bjjSSLITVVm3UeAhRgIgVoiJl0cAQKd04w009XSMrYQYsmxT+2NwfWe+x46a1ZM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36597215},"engines":{"node":">=20.10.0"},"gitHead":"39d7181aa5ad20597038c368b1bd51ca5a76cf63","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608121601.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-39d7181-202608121603.0_1786550715914_0.34620440963639454","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-f8d7ba5-202608121635.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-f8d7ba5-202608121635.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-f8d7ba5-202608121635.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fa16679793f65de67b30352c2241073f0ec46da6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-f8d7ba5-202608121635.0.tgz","fileCount":522,"integrity":"sha512-k3SVAWCufYh9zAqOy0qAIwnHYHdBCp+j8Mln/lg3lUAV867UhyLMOIv378sFrckn19ojVA5Up2UBtmNZOkS8GA==","signatures":[{"sig":"MEQCIGd61UJsUEohZ8XXzYsSz4ixluRgII/sCv2A8ItTThreAiAIAP7k1Q7IW3WsAUWE+0jGnPdD+JqNvB8nVuQT+6UL8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36597639},"engines":{"node":">=20.10.0"},"gitHead":"f8d7ba58646ef19daa2d28a1446dc5506fe3bdf2","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608121635.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-f8d7ba5-202608121635.0_1786552742713_0.964902693803789","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-f8d7ba5-202608130844.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-f8d7ba5-202608130844.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-f8d7ba5-202608130844.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cd51eedeb8fe5d534b16cb58a85d198fde4c5d9a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-f8d7ba5-202608130844.0.tgz","fileCount":522,"integrity":"sha512-8/efDFLXbXNhvZSBMrvzyrlZ0EiCkqcriHcVc32c6DdUKYRphucnwxO5AoABdikkM4ZGAgTZTBTXWf2Wbul4+g==","signatures":[{"sig":"MEUCIQCoOL7GHqhphVWjT+xOMCcXvCBWlW5elqRiqnEjSob7CAIgbEk169ZrnfG69llvu6GHqFMX9N6GKeK9I59IQvn/8Z4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36597687},"engines":{"node":">=20.10.0"},"gitHead":"f8d7ba58646ef19daa2d28a1446dc5506fe3bdf2","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130843.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-f8d7ba5-202608130844.0_1786610762144_0.47143004483694884","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-fe79ae2-202608130900.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-fe79ae2-202608130900.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-fe79ae2-202608130900.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cdddfef586b664e0e4526f5c7e727cf12d6c457a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-fe79ae2-202608130900.0.tgz","fileCount":522,"integrity":"sha512-nOtV19955D6vZmimQ0IOMCyBHwtYw6oTOeJrmyyAQMWC/MyuDKrGnTaUY/eSp3MwvL7Ao+txkY71uJX9aB2Rnw==","signatures":[{"sig":"MEYCIQDFoCKP3UfJ2ILt1vWmpyYx8iOslVqZOqbnB7fOUonxkQIhAL5kRTNb3Zv+TtgOUUy5MCCPiIViFJd+hAqAajN4KdWM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36597743},"engines":{"node":">=20.10.0"},"gitHead":"fe79ae24be47203cbb4947aea91eebe91b03ed41","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-fe79ae2-202608130900.0_1786611712605_0.5941904900753545","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-bc556f1-202608130935.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-bc556f1-202608130935.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-bc556f1-202608130935.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2a2846ab86ec5e14ace33875d89a960254818019","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-bc556f1-202608130935.0.tgz","fileCount":522,"integrity":"sha512-Ob7tH9YpEhSMqPnSN2pBMJqG8sGE8qvbkCacjnBNtlerKUs407YiWPBgGc4znxPZB7Y2HHwtkELwyC0DvO+hoA==","signatures":[{"sig":"MEYCIQDn3Ebj92FoAwJB8mLDyAmh0lakRfeQPx7+Lhbs/LrDiwIhAMOJy3UmZ5Dr4CixvmOIZKVeActPftZTl+Ota/s7rmG5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36597794},"engines":{"node":">=20.10.0"},"gitHead":"bc556f1dcf267b02038a781e31d366e755db7778","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-bc556f1-202608130935.0_1786613793613_0.5676763789564774","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-563fc0e-202608131854.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-563fc0e-202608131854.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-563fc0e-202608131854.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f055d7af76281687d6fcb0e15187719e5b7e4f63","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-563fc0e-202608131854.0.tgz","fileCount":523,"integrity":"sha512-Y6KipZ+LfoZdVUzuYIVXNzS7DznosKtIdOrKVpy9VhpGGAy1QFiE9MUQzK8uGdApxatnGxCbXISv/JImqcAYCA==","signatures":[{"sig":"MEUCIDf9dTsa52SiMOJuy29cPKkdG7OTh3CLilAydSVA1RZJAiEA/u0Z0RAnW8PPLiWPtA+dAZDr4/i/Ar2MDkK89h5Oyg4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36602128},"engines":{"node":">=20.10.0"},"gitHead":"563fc0e23198770f3c30aef2bda4f3d66408ad63","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-563fc0e-202608131854.0_1786647392505_0.7601275768149609","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-12c3b20-202608131929.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-12c3b20-202608131929.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-12c3b20-202608131929.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dd632d2b49a1c9c6b88fbaf0db991fb4aa809534","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-12c3b20-202608131929.0.tgz","fileCount":523,"integrity":"sha512-fqpRBde6W5lcUXc9/mBtbQm5is03cO7pu8TRjeB5OHBh263zBD1jm5eL2LnlWQiagPpUFA1i5Vyeo1+C3TLaqQ==","signatures":[{"sig":"MEQCIEZwizBNxwSKhVtt61QoRvXQhZvekuDQN3F97o3EhY0RAiBYTk3213VnWRv+MFBKsFrlDnJXDnu3g8++pLhazuP4Nw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36596289},"engines":{"node":">=20.10.0"},"gitHead":"12c3b20dd72a4cb5650309f74733a78451e56490","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-12c3b20-202608131929.0_1786649449577_0.2101608203462959","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-12c3b20-202608131954.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-12c3b20-202608131954.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-12c3b20-202608131954.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e1a3846681eb240febdc97275cfd2499a6640b20","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-12c3b20-202608131954.0.tgz","fileCount":523,"integrity":"sha512-BgpV8M/6ph1UXIcet46BaQ7mm/3S+3fJ0mieWD20Hmco1L8FFjRwUL9Aqsr+tgcshua6nrxWDy6iJ72P+W3J3g==","signatures":[{"sig":"MEQCIBORwemQ5m3OJlq5k44xGYr4cPQt3PfeJDgWlcGDgQPhAiBImuR21kfD6H59c1/nymeQIIz0x+/4KEKeQLwqjpPt+A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36596109},"engines":{"node":">=20.10.0"},"gitHead":"12c3b20dd72a4cb5650309f74733a78451e56490","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-12c3b20-202608131954.0_1786650995131_0.27577373876548283","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-a5db377-202608132038.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-a5db377-202608132038.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-a5db377-202608132038.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dcc3c63bcf51644d5c8317194fb168e0a20b7484","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-a5db377-202608132038.0.tgz","fileCount":523,"integrity":"sha512-ZdshJ3CCKiGUAX9FMAJHMAzfL5X20uWbCfU10JfW4O7dB43VO8N+PZyXYamJAFeX/whGnVYc6yfcJdFGBvz55A==","signatures":[{"sig":"MEUCIFOW1niSOiqZiNVfItl8hrA0xiETAyD1gee5ZUJsjJbYAiEAyNaWEK366GmV+dhW7arHiC4qaK0bgbdxMgg7WdM7Dh0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36626175},"engines":{"node":">=20.10.0"},"gitHead":"a5db377f7fa923c71a47e65e3b4492bec132d5b0","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-a5db377-202608132038.0_1786653632905_0.30732681172562115","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-a24ab9a-202608140926.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-a24ab9a-202608140926.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-a24ab9a-202608140926.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"28a0f4c0fa943bf9293887a4176a9ef11ec3f1e1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-a24ab9a-202608140926.0.tgz","fileCount":523,"integrity":"sha512-Obw5mhgY9EoUmWhMI0BKfdeBAczKUNWVfbpEJm24gnw+eRpDx4kIXfFKMKKYAzhPAaFw6CtELuVcwYXgO5d8Cw==","signatures":[{"sig":"MEYCIQDzA+Q6zlM5bh6rJ5bLUGAyxaVvT3LPZjM5u8vNWGZPvwIhAJHt7G9Nnn2h3yhho9lGxXs1LTzExFY/wMLmTFuP9eJq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36627278},"engines":{"node":">=20.10.0"},"gitHead":"a24ab9abeca36122186aac6aab4c2f759d9c317b","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.16.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.18.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-a24ab9a-202608140926.0_1786699665844_0.7236150894987836","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-ccd7ce3-202608141136.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-ccd7ce3-202608141136.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-ccd7ce3-202608141136.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"906bd6ed2f0bed0cc1efa772a209d739ebd16a11","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-ccd7ce3-202608141136.0.tgz","fileCount":523,"integrity":"sha512-x7yQqR/r0lhql7p8oKvRs989AikGRdQYb9GDk1NT+mLd+kt/dhoEQH2wLHn0sSki/x1hchsXn4yX5M6wfsIQ1g==","signatures":[{"sig":"MEUCIQCQPA66mhe0QGeSyIeXvHW4OZDv35IBDFbyoTN85nk6mgIgOGQxYeieFcjmWSgOO37MqUOXQ3LWMdVr5VcI8HQ7xjI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36666569},"engines":{"node":">=20.10.0"},"gitHead":"ccd7ce396329a1b792dd42e8bca1d30aa34a588c","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-ccd7ce3-202608141136.0_1786707486350_0.7937810473446467","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-ccd7ce3-202608141159.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-ccd7ce3-202608141159.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-ccd7ce3-202608141159.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"04f4d40e10da98124fcafcc54990227f3a17ba9f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-ccd7ce3-202608141159.0.tgz","fileCount":523,"integrity":"sha512-24yXiByDs+Pez+QzRDHP6jcx7qucKZbVkQrsuD6Fsx1HZQTO/1iUKqRa7qLYFEfqS1KAQaGAaQy5tz7ucLOKTA==","signatures":[{"sig":"MEQCIBfn5raBwem4uMmDGwg+nG56fCp+Eyt+nxZ5u4AGED7sAiA+rMeg/32nWIvDC8bPeCI5tYEQ7AZtHi5OJf5rr8GkCg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36666608},"engines":{"node":">=20.10.0"},"gitHead":"ccd7ce396329a1b792dd42e8bca1d30aa34a588c","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-ccd7ce3-202608141159.0_1786708888875_0.09055260652280461","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-4fe037c-202608141328.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-4fe037c-202608141328.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-4fe037c-202608141328.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7fea5bc69962053440a04b0d1b41b61ccfad1f64","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-4fe037c-202608141328.0.tgz","fileCount":523,"integrity":"sha512-evxCbcHKXrbDsIwpkKSTdh5889nRPkXVyrdCVo5zEFvj7fzmBHh3diPVKLSm6j+Kp8K4T2dqFBKu8ppY1fx9KQ==","signatures":[{"sig":"MEUCIAZ6+3XsEOfm4uBCndnvMwC8m4nicqaMYGqJpLO4pl/SAiEAgZ9Mp1Yfbhu4L9bNSCE245xVo/iseKG4BfCJpY9DJ3U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36675413},"engines":{"node":">=20.10.0"},"gitHead":"4fe037c6d7650fc18215c4ab8dbd0e849d93da20","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-4fe037c-202608141328.0_1786714222099_0.8924686696520734","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-4fe037c-202608141345.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-4fe037c-202608141345.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-4fe037c-202608141345.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6a25e4290a7996b0439ac4f6b0afd36367490347","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-4fe037c-202608141345.0.tgz","fileCount":523,"integrity":"sha512-6Qr2IE+jA6krFCObS2GVILzzOl1SagSo6ChIaLZ+Z3OQfaju/ktfxHUqCnoSB339zSB4qI4F5iQt9oCPvSRJtQ==","signatures":[{"sig":"MEUCIQDpHDjazCkeWaw1VspnoAFITyQ0EIPT2suA0dy1rUemoAIgHJFnb6YIWPu8GmHZNKSWLsgW6MQ2296qQEgRZDt21rk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36675500},"engines":{"node":">=20.10.0"},"gitHead":"4fe037c6d7650fc18215c4ab8dbd0e849d93da20","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-4fe037c-202608141345.0_1786715245123_0.7871153251270118","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-a6f7614-202608170737.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-a6f7614-202608170737.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-a6f7614-202608170737.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4911a8f6c5e9d227a1636fbc40cd52b883ea53cf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-a6f7614-202608170737.0.tgz","fileCount":524,"integrity":"sha512-ktG7BdXY4GY7D5ztPZOQ9R+aBB5N1ofIrfwknMJYx8W83O8DcB0reP3ebObtzJiyNnBpm3Xvtuu1JYwSgj0Rlg==","signatures":[{"sig":"MEQCIDbaVe90S11CecgVx7735iq45CLrdR11M5UMfzUSeeWkAiBtstG06K1YHB2YqzN9tmSFms87UDTnzdP4/e0bJqUJFg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36679596},"engines":{"node":">=20.10.0"},"gitHead":"a6f761431219a7fc72102cdbb849c7d235289153","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-a6f7614-202608170737.0_1786952334314_0.6722131584780309","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-53756ab-202608181323.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-53756ab-202608181323.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-53756ab-202608181323.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f45eca272a99734fba1fbebb88fc0238304ba909","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-53756ab-202608181323.0.tgz","fileCount":524,"integrity":"sha512-K2kHERNdVgDHH2jO/hyj4HuGpLMDAzwU6B6odeRRZWHqckUVqX+Aco1h2gMRM2qUSd4/UBHGHdIlhoLvXJovmQ==","signatures":[{"sig":"MEQCIG2rzg1kaM4C+gABqfU4ftONChpRTUzbIjH3f4BtpnGYAiAVA57jsFqHiDKTe2hM9g0wVLdgYyQS+8CPpo1nKnOvIg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36679406},"engines":{"node":">=20.10.0"},"gitHead":"53756ab761744f4a385d7c29adaffe2f2e1f17e2","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-53756ab-202608181323.0_1787059541191_0.9143619610343352","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-68641fb-202608181328.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-68641fb-202608181328.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-68641fb-202608181328.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f813fe3e30dd651484297c5469cbc62e8c5a00f7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-68641fb-202608181328.0.tgz","fileCount":524,"integrity":"sha512-hRCORFLjAlsF8UYNJvPZULWIo1JD4WXOoyAmEasW0TyL+5/DqAW9mh41drNCDKAtU/XNjlzZa6plafXLmM3+VQ==","signatures":[{"sig":"MEQCIDb6e/mXIzOmevSUXCb2SF3xrUlVqqUpbFvEat0JO+prAiAHJTuvaJfaQGTh1F8+RLkCzNswUfhj5kvkkc+0h7U6UA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36681505},"engines":{"node":">=20.10.0"},"gitHead":"68641fb174692ae8178118b019a347e54f3fe794","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-68641fb-202608181328.0_1787059777650_0.9371135156551906","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-68641fb-202608181413.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-68641fb-202608181413.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-68641fb-202608181413.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7e7c57c745be98fe764d28f48ca0737d873d6ddf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-68641fb-202608181413.0.tgz","fileCount":524,"integrity":"sha512-TN50pJ0xnDdRrPv2/9dpjnQCGN2n9wyGr/Eljwtg9Srudvb+it+0w2dS/2dbvbLWcVScELv85m0ZQYMr4sIA+w==","signatures":[{"sig":"MEUCIQDMj2P9d/t59fbmg1lCtixuC+w1dUvDcVXjDxYP0viTGgIgIcgPG4JjWaRCHrnzj+Q4SM7ylDJAEYx9AWcOjfL2Qf4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36681673},"engines":{"node":">=20.10.0"},"gitHead":"68641fb174692ae8178118b019a347e54f3fe794","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-68641fb-202608181413.0_1787062485450_0.25431993804877107","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-2e08a49-202608191100.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-2e08a49-202608191100.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-2e08a49-202608191100.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ba4193b6e37f334b7c5985d3bb68312a597bd1e1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-2e08a49-202608191100.0.tgz","fileCount":524,"integrity":"sha512-L5A8k0JLoe8k0ygpyEoHUS0obTcLgNpC3XZfmlHWuCxpfoec5CqAHAuFggvS/vOqI14wwsgXRMneqBmE2E8KNA==","signatures":[{"sig":"MEQCIH6jkroHuHXinYNqCWRrxmh3EIQZWGCcK5Xlc3RuGMEPAiAP2pN0I9P1lJBOW9DP0REJRs9nQhpKi9rGTPdVnJWDRQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36681558},"engines":{"node":">=20.10.0"},"gitHead":"2e08a494d84d41fc90a6ab3550cd09cc41b99dd9","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-2e08a49-202608191100.0_1787137335067_0.8492177051454599","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-2e08a49-202608191227.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-2e08a49-202608191227.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-2e08a49-202608191227.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a464ea286db62fcb85ad91f2680b541559ea380b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-2e08a49-202608191227.0.tgz","fileCount":524,"integrity":"sha512-6mKgbJWIs5rUV2j77ZFMVJg7OaNAfX71mWpzDjlboAZoIIzd0yQBTz7O9lvK4QH3Yfg2p3ZxHxAE8z+wfPIIMA==","signatures":[{"sig":"MEYCIQD1QfiTEcL0N5bL0RfPh4+N1b8vNyaHQIdv4usFH/7v/wIhALWyhcUaiIkphLeTF7Csy0VVbbepFw6JErKaaMVLgUeH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36681661},"engines":{"node":">=20.10.0"},"gitHead":"2e08a494d84d41fc90a6ab3550cd09cc41b99dd9","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-2e08a49-202608191227.0_1787142535928_0.44558609023105156","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-d33b229-202608191301.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-d33b229-202608191301.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-d33b229-202608191301.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e058d1b1c46b3f6bca0e46bbac7a9db2dfd6f983","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-d33b229-202608191301.0.tgz","fileCount":524,"integrity":"sha512-NobjmZNuZRisXnBj2VxQ0orW6nT0SiIl/m5eHdnAMo+HbZcy448jJz9KdeN8tIOx2nbvEhpT1iE841Q/QP+1EA==","signatures":[{"sig":"MEUCIQCFJfwyxjUIdSDwrQfaqnj/vZq3KCjgNBNsBrahBJzE3QIgDMeJXesbuXhd8hHH2NtJFjSdBwIwKyfSzSlfnFQTQhY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36681238},"engines":{"node":">=20.10.0"},"gitHead":"d33b22932d9fb26f87f293033b5739a0c884ccb8","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-d33b229-202608191301.0_1787144571860_0.304174544924668","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-31fde0c-202608200952.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-31fde0c-202608200952.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-31fde0c-202608200952.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ea6cf2d1679d56cab6ea04d03488f529c970dc50","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-31fde0c-202608200952.0.tgz","fileCount":524,"integrity":"sha512-+WRjq2ebJ0GHpP758frikUWvg26bjaIBdhojWlFuva/uI0v3i8XTlKqAsIjLzyBaz8baxaD2kHJDDZfvXak6KA==","signatures":[{"sig":"MEUCIAr4Y2HyJJEgz9+XMlYi12usYPrs18dg78P9RCx4c5bMAiEA1PIYriSBZr/J1qBVWXWowFe69e9X7mThXLjVo0KFh8E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36683779},"engines":{"node":">=20.10.0"},"gitHead":"31fde0cafcd336f82b95cfa656804a71874d4562","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-31fde0c-202608200952.0_1787219630930_0.42597266470137884","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-14d8247-202608201338.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-14d8247-202608201338.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-14d8247-202608201338.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c96053ce389938e89f3f4be358ada235588b9d7e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-14d8247-202608201338.0.tgz","fileCount":524,"integrity":"sha512-JAGQSKUFX9+rcZ406t3hXI+/NSUId8bAWYsqyNXfe0iTXHa8azTx8kaPUFa72pnYJHVRY6nlSzCdMJYZYDk0iA==","signatures":[{"sig":"MEUCIG0bwNLLGyss8M2a4qdByyDe8vAEx+ELwhpX6UtsXdf5AiEA1BCGX+HgBPFrug/T+eHHqzPGMXkdD1GW+srl+n2g+4Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36682501},"engines":{"node":">=20.10.0"},"gitHead":"14d82477eacddaa7ffed8efd2698d23d6c9a326c","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-14d8247-202608201338.0_1787233204127_0.1664326956921114","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-fad6271-202608210754.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-fad6271-202608210754.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-fad6271-202608210754.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1439c939ba99e54c4e1c9c8f24e9c042342e9e28","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-fad6271-202608210754.0.tgz","fileCount":524,"integrity":"sha512-um+w6KpgyTeL4Q0F6wbhkHRG269UvXdoC417qiOqdhZSiAVzuJ6BRRIpoU7ytH8LoQnyF7sU4NPdFiRvfoV1rw==","signatures":[{"sig":"MEUCIQCMpclTqvTFS+qFLJZZd/cWWKQtfgIp0kShBSwNtvSM4AIgdNFzwRpI+adPNFlQNHdI8zqN50JYGZLDObIEpYYq88Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36658131},"engines":{"node":">=20.10.0"},"gitHead":"fad627112928f5447961e4af1ab28481401d1e24","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-fad6271-202608210754.0_1787298952261_0.4940709249491033","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-e7505cc-202608210937.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-e7505cc-202608210937.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-e7505cc-202608210937.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8dd5286751cb37a2a82f014b44037de98f8f952a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-e7505cc-202608210937.0.tgz","fileCount":524,"integrity":"sha512-/ONaxnqOqKrRM2zHzorizio7Qt71ialxsdttVaOmU/9CG1i9WbVfNU/iwfx9yZ6JEh8vcR0uzo+uXm7c2sfP9Q==","signatures":[{"sig":"MEUCIQDskz0ED6uvGeW+my1oel7ZY2LWaMIGaaFT52MNdCs//AIgbe1zHcGNUbMTUFUeHSFMakpJuqjIuYC6/k+4CNlyRtA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36657578},"engines":{"node":">=20.10.0"},"gitHead":"e7505cc08e330dd775acb9d6cf50c3a6b7575838","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-e7505cc-202608210937.0_1787305170148_0.4968960060104104","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-4732870-202608210951.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-4732870-202608210951.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-4732870-202608210951.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a088457e4361fb783035969d3f3ad87272efc39b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-4732870-202608210951.0.tgz","fileCount":524,"integrity":"sha512-En1ceUlTqMjLeSOM6XGN8yfpyfC7sL40WnHPSjSugYuM3Fols8u0w6iA183ZJiGPGFVmW27l8/b0iLxy/SPcAA==","signatures":[{"sig":"MEUCID1epFVQEpsD2p80803dn1Yk7fUo76qDHey3LO+7yn4wAiEA+0A6h6s/54BCSjQczBchGMzgXv9skDJbFMdwiTzS2wU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36663195},"engines":{"node":">=20.10.0"},"gitHead":"47328707bbaecf6e9876f0188c2b1f2b1bccdb49","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-4732870-202608210951.0_1787306014151_0.9785388756584019","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-4732870-202608211010.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-4732870-202608211010.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-4732870-202608211010.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7f6fe988dbf8fecaa5b3b408aed318a6dca11b61","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-4732870-202608211010.0.tgz","fileCount":524,"integrity":"sha512-fP7v/0niwOquDFkfl1lz/jw0qVWIr7SN0taC+jPi0q4/mH2sJfZsgxNXQU1QWSialww/kAXgi2br1nj3chTliQ==","signatures":[{"sig":"MEUCIQCcfBVrqK4q+kWrthGF7EuYbKNnghfBRRD4t9AZxwaz+gIgTZSHoXdxmqCD3dUXWEj4ZSye7YW+P401Cx2HFro2cDc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36663047},"engines":{"node":">=20.10.0"},"gitHead":"47328707bbaecf6e9876f0188c2b1f2b1bccdb49","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-4732870-202608211010.0_1787307137159_0.46003994726968167","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-d3419bb-202608212006.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-d3419bb-202608212006.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-d3419bb-202608212006.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6121c3e497fa842395d87156cad32dac3dce619e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-d3419bb-202608212006.0.tgz","fileCount":526,"integrity":"sha512-tkebKFRpdcD3OLYlno7g1yopiJPsAUL+xOPFn/TghEfBxf1VsaaGYQ5mhcTtSBoZu/f9uJAXX0//SQlsYc3LfQ==","signatures":[{"sig":"MEUCIQCqLfGNEehIJ/iGs2PWEF2g9VfJSWioVNZsAw0jpjr7agIgY8Fe3V9zgvOR7piPkl76n/MPMry5/VS90/Uh8JkkUgo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36737619},"engines":{"node":">=20.10.0"},"gitHead":"d3419bbf314b91a98a51d9fec60abb2fa69b7a93","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-d3419bb-202608212006.0_1787342877996_0.8590263547944492","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-4651521-202608241142.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-4651521-202608241142.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-4651521-202608241142.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5a97c65993c0719c89174dceb6ba74a584b31654","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-4651521-202608241142.0.tgz","fileCount":526,"integrity":"sha512-/Voct87pmInWeohUKafZKqb4w7CXb7gG5UUX0fO23CcyEUDhHSwYFH/A3jnI2e3gjSJqHs81q/OIafVKTVwMxg==","signatures":[{"sig":"MEQCIDA7b1cUIUMlpIHQASXHDMJRUc09ZKOCwqijgDCf2hbOAiBL9/XKeWTWgm37dqskKz6hCSKmxY3zvfJ4z3BCcrr7qQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36737756},"engines":{"node":">=20.10.0"},"gitHead":"4651521e6f10d467a7390d197c63f2f93d847d81","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608130859.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-4651521-202608241142.0_1787571852046_0.6023308642848513","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-4651521-202608241432.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-4651521-202608241432.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-4651521-202608241432.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0fcd1631773ff22c3f1a8e7e3dd833028286164e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-4651521-202608241432.0.tgz","fileCount":526,"integrity":"sha512-WcK0BqIU22UG7MLu+5i8+aN/X8am70EfVXW8ucSPjiajR0/27JECrvHHFMV6UjaP2i5HRJkKLiYjO3mbch/BEQ==","signatures":[{"sig":"MEUCIQCZN8H76IzcTR9VarUOZulLQrYsgoP6Y9jKcjjRnS4CiwIgKO7YBTOQjBl5im0tPNltqAlxDcI1pdg/P/ijvfV5KWc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36738140},"engines":{"node":">=20.10.0"},"gitHead":"4651521e6f10d467a7390d197c63f2f93d847d81","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608241431.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-4651521-202608241432.0_1787582023704_0.6837094006193511","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-4651521-202608241436.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-4651521-202608241436.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-4651521-202608241436.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"96ea47522a3844f85741ab3b86ed292d1760fd37","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-4651521-202608241436.0.tgz","fileCount":526,"integrity":"sha512-cb2cYA4EhDv3VvybjX9lDNrLX5Ey5k+EPFRO8asmnQmgzrVMWRzVJXCIIQK6HEe2tqkvbFpAi+G1Nxw9IClO2w==","signatures":[{"sig":"MEUCIQDBw8YmGxi62Qxpd0U53Fl6mjDPyg7BGyPy11ab5uiVWAIgUQ2Q6FmxqYqwuQ2Yg9KN7la4AmRZEQpwMc/9CnXYIVg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36738128},"engines":{"node":">=20.10.0"},"gitHead":"4651521e6f10d467a7390d197c63f2f93d847d81","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608241436.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-4651521-202608241436.0_1787582282310_0.3813790521650866","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-bee8391-202608241531.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-bee8391-202608241531.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-bee8391-202608241531.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b5423371d24db9ccde04cc2723b0c6f029d9b631","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-bee8391-202608241531.0.tgz","fileCount":526,"integrity":"sha512-e75EVBx23sL3NxZTQ7crhK5r/rVaaV9V91te17njYjFQzzo3bhA16R9HssiKM0lgciHbd7JQ6XHy+PYMFDzbdw==","signatures":[{"sig":"MEYCIQDX9rPT2idHCuDv2lU6jHqfJybGASfzzbwEfHjYf7IOqgIhAMGj7GckjeTuYfl3j+CbrC9s+zvQqwQFjtbcvNBONEl5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36738136},"engines":{"node":">=24.x"},"gitHead":"bee83916cc0d088dc3c682a4a14a2041fcb64df8","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608241436.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^7.0.2","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-bee8391-202608241531.0_1787585617905_0.8715756808402795","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-a2b3733-202608241612.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-a2b3733-202608241612.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-a2b3733-202608241612.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"22b7abfb555e31e6de6ed4b7aa9ac59aabec80ef","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-a2b3733-202608241612.0.tgz","fileCount":526,"integrity":"sha512-sRG0SxVY5NfR3qjRlRdxKuzD54ldgyr1YHV6CjVa9+oNwGb7rqlUW3agCtIey89t8/eUxiC3owB0ILa394ymuA==","signatures":[{"sig":"MEQCIDf7oIr+Xd+7b5Nl0qn06sevyVZMqVbHkCXritduWGY4AiBrtWCCQ+wkh6wmtttyzh322ji+U26fQb0BDyHmkNOwPQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36738035},"engines":{"node":">=24.x"},"gitHead":"a2b37331d54293c5e1160bfcc4cdf49ebcbd56ed","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608241436.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-a2b3733-202608241612.0_1787588057270_0.19026785608587748","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-09c9865-202608241616.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-09c9865-202608241616.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-09c9865-202608241616.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2c8d87eab31f6ff15e0c9785b42e07318ab36133","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-09c9865-202608241616.0.tgz","fileCount":526,"integrity":"sha512-Q9vxt/0k4NoXenhmoL/kahBrG6wmSivdscxKJ2sL3FWhRHi7Kew/R8Yay4rD4/7uZrEaxDJTFjHIkByiXlaCkQ==","signatures":[{"sig":"MEUCIQD3+AtMqFzOSY0QlY3UP+2LGlFyFxSaXOtakh3bn02vWgIgF0HjksprK6Rjmt1BaepRZmsh+vtcaxenecGJcsP4DEA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36746177},"engines":{"node":">=24.x"},"gitHead":"09c98656c0bb91d10f662184037d344ac9b1af61","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608241436.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-09c9865-202608241616.0_1787588319320_0.983595990972584","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-d107b3c-202608241620.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-d107b3c-202608241620.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-d107b3c-202608241620.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3da18c57ed0ff8edfee8024152b85b2219377494","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-d107b3c-202608241620.0.tgz","fileCount":526,"integrity":"sha512-QTk/cqzdPkND1i45/r9iNTfJzTTx9x++Wt8/4FMJhdszHlYT6Kw77O3tfK+iPRbAk6HJh+fktiZaMMKSpc8u/w==","signatures":[{"sig":"MEUCIEc/cWaf6jx/gmHm3w9e2Mo6UC7vcW1U0tIwQkdEFNfeAiEA45vrjA/ju7WtcvO2cmQT1nON4eqd3ANZcl5tw6y0mnE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36746292},"engines":{"node":">=24.x"},"gitHead":"d107b3c616d3d4adc41ea49c90c54645c1d29ea9","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608241436.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-d107b3c-202608241620.0_1787588541608_0.37061030574058296","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-d31c028-202608241624.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-d31c028-202608241624.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-d31c028-202608241624.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3e07fe9660e4077af6ae09e107503d8ad8aab524","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-d31c028-202608241624.0.tgz","fileCount":526,"integrity":"sha512-N+dWfjYROSFPSNiy8gIHwYE0ddOnISRpQVZ8tsxRV4iKGRteo/geUc4ICs6MXU2Oy9Punzrl7UAmem8xqX2dAA==","signatures":[{"sig":"MEUCIEfwSStar1s6g3EpFVwK0tKZmnbKdhnWWvoO9+w5yfH0AiEA1beyd2KA97vfwCETGbGa5131/lHmVgfYfM0C2AN/Sbc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36746323},"engines":{"node":">=24.x"},"gitHead":"d31c028a149ac4ee017c066d2acbc32445af2492","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608241436.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-d31c028-202608241624.0_1787588761889_0.7842615932780739","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-3847e98-202608241639.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-3847e98-202608241639.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-3847e98-202608241639.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"710228a67d866f9050e61073e1e16718cbffc37c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-3847e98-202608241639.0.tgz","fileCount":526,"integrity":"sha512-Qwmng2fzhIEzoMGstSm8eksNlvtUPZWTu0WoYwQC9Md2ydfpRVKFughsHa5yXH5iXbgfQBT1hSsG2O+Q3eNXAg==","signatures":[{"sig":"MEUCIQDjPIuTV6LJYwCXgqRctg5FS5iDfAFGQv3GSJ2SpGddbAIgKW3/cYhNuBUFwD5N92DAK9iQjDRMg3MNB5AyrdjB/dA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36746137},"engines":{"node":">=24.x"},"gitHead":"3847e98262351c99481864251d0e8ba1b6fafb6d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608241436.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-3847e98-202608241639.0_1787589686927_0.5554474019522255","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-dd28007-202608241652.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-dd28007-202608241652.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-dd28007-202608241652.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6263359fc397696abf106c4cbcc4a91ae5aaccab","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-dd28007-202608241652.0.tgz","fileCount":526,"integrity":"sha512-WUPUkJQUIQOO26xl3eWllfiXUeown2Iy/ZOaHb8nsptH1sPZmt3sDsCB3zgkpPoj65T4XmhGWzPA7aTXYt6VoA==","signatures":[{"sig":"MEYCIQDasVVw04fW3EowovCNDeYxGjqFplVP0wkfAgrMoSEOtwIhALVSuh4E7fOgyJ2UrGFTBFFJdujMDlPvFt5jTSjjXrD1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36745959},"engines":{"node":">=24.x"},"gitHead":"dd2800772091bbe473649faf180e8aa79d99d4f3","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608241436.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-dd28007-202608241652.0_1787590429880_0.049980968903482914","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-dd28007-202608241714.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-dd28007-202608241714.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-dd28007-202608241714.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"24741b382dfb19853276ddc199fa545951d9b9ef","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-dd28007-202608241714.0.tgz","fileCount":526,"integrity":"sha512-XtVivVZ01V26S+WNfyvpOtuwxq/cPjh5Nx4FbUdDCHqC6ThqAh2qwPMK0EOOl6ae4pcKY/WP4RF5PP0F76Rpzg==","signatures":[{"sig":"MEYCIQDuAkxuOhW6sHVYTF60o/1WikQ/voU8rAK4AkT9bfxF2QIhAKnAZmF7TIhDC5uKjbVoVtMJzKNP/4IZ4+MjaMpgs3fr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36746111},"engines":{"node":">=24.x"},"gitHead":"dd2800772091bbe473649faf180e8aa79d99d4f3","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608241436.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-dd28007-202608241714.0_1787591767531_0.9673858722775894","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-fbe55c1-202608241804.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-fbe55c1-202608241804.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-fbe55c1-202608241804.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5316ccf314a6c230d97e412c9cdad676a45ddda1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-fbe55c1-202608241804.0.tgz","fileCount":526,"integrity":"sha512-hcSDt+qeK7KTUCX3hWwhPn6QbR9JXTfUJuguZOnr4OY5peV/S5wDQxWmsuTp28w64ZHid2wPDK/YtEtFjCjWaQ==","signatures":[{"sig":"MEQCIAR8r6Q/6byJRTwOZKouxe5eKQEJ49tgY33koRzsBI0wAiBQ0XLEv1cmhucu3FkrTmq/UIW7KmSgyoShxNA915M8rQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36747336},"engines":{"node":">=24.x"},"gitHead":"fbe55c13805ae29a0be238bc837f229746440115","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608241436.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-fbe55c1-202608241804.0_1787594746434_0.9366985562531049","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-3081607-202608241908.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-3081607-202608241908.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-3081607-202608241908.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7b068ce2ffd80a597d622dabbab0f6ba81166d9d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-3081607-202608241908.0.tgz","fileCount":526,"integrity":"sha512-+j5cC867ubgf6zegVSQ2Hv682KF3ENyY94kHlPfN7xZj4pQk+HKJQyp6ZjT703aISPdB82FxeMSo/dDwuquiyw==","signatures":[{"sig":"MEUCIQCOqYR3ModzOyKIDsKwUPz5ylv8S1jfPkKdvK1ZUiR0+gIgTBYMzjrm6gctWkHMleb86fhrSKh6nJSNkInyUR8u3w4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36747486},"engines":{"node":">=24.x"},"gitHead":"30816070a8a7ebcdba72672595ffb61e0c6c66a5","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608241436.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-3081607-202608241908.0_1787598597623_0.1060227841128949","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-0dbcac5-202608242041.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-0dbcac5-202608242041.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-0dbcac5-202608242041.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5c3914bb31b018bd7644c643844aa5fa31a4bc00","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-0dbcac5-202608242041.0.tgz","fileCount":526,"integrity":"sha512-wNMhucmEYt7zb0w7XGlftwU475Odqshb8T5LVm3IovkZOtnFMEBqPWJCda/3cql1/fjfkBWvNHk11e76G7vjzA==","signatures":[{"sig":"MEUCIQD45lbYK8rBSa08BBTpPtpM2AMYzq+A7fW59h8gDRqIyQIgVpgLEqy0Z0zJ+UJ4tNXmrqA9wtRuiKMiluBOCMfdm88=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36748336},"engines":{"node":">=24.x"},"gitHead":"0dbcac5d20fd86afd56956fc3e3520d8fc7353d7","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608241436.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-0dbcac5-202608242041.0_1787604203734_0.9316051293773135","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-5ea764e-202608251145.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-5ea764e-202608251145.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-5ea764e-202608251145.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9cdf240f50905a1c760da540847de6942134c01b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-5ea764e-202608251145.0.tgz","fileCount":526,"integrity":"sha512-PUtzLcVXGkQQK9Lczlj2N9hgOxsbdYH2sOQGGE4VVZOb2T8iBLWYoc+ftVaYxfofLkZzjzbHFiSRAgBIgIKuEw==","signatures":[{"sig":"MEUCIQCs2IUDomRelDMk4NsF1kQwN663ILewWuIEFsbOhIAmawIgJ1T/AdTrj2NpcMrftSnCdta2B8N+bZyvWxbiAMRab6g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36748590},"engines":{"node":">=24.x"},"gitHead":"5ea764effdf640c84312d7d9ac91a3f46f4a65fa","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608241436.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-5ea764e-202608251145.0_1787658422645_0.01911094194797447","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-3e0e15a-202608251331.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-3e0e15a-202608251331.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-3e0e15a-202608251331.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8f28efa4aa7de85daab470a38b011c1dc5f1a3d3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-3e0e15a-202608251331.0.tgz","fileCount":526,"integrity":"sha512-KbsKve/4ErktAo2Q6dHtZu//ULzaxiS2dgEQaZImf5n3BVxNAY4Hi09fxUEcKazPw7pXXFlVEJBthzKPK4a3Yw==","signatures":[{"sig":"MEUCIQDC9x731tVJcbIUjrpP5BFrTmeukc2oqyn6rLFLCMGjfwIgGXNVA8IPMoASkBGT0K67azlMaDcTyT6AXsCjxxpUubk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36748675},"engines":{"node":">=24.x"},"gitHead":"3e0e15a1f5b17d677594f463441f809bd21c95f3","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608251330.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-3e0e15a-202608251331.0_1787664772069_0.9657953547065152","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-3e0e15a-202608251340.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-3e0e15a-202608251340.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-3e0e15a-202608251340.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7f18155d6dbd9abb343416a455bd3e83b755c927","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-3e0e15a-202608251340.0.tgz","fileCount":526,"integrity":"sha512-SdVt4ArIE3qoFJF91424Vm8N4V5igXkr08pLNQgL7uCYSMa6SiATRcYbED0gfKMRda1mBwJGkOT3rd0v2nF1Dw==","signatures":[{"sig":"MEYCIQCwL/EM7cqd12xmDjatUtBabavdyKXpoZ/Muzc0aQEk8wIhAKvNPGvz8bxMbOCmOZ4vZsFjUaP+Y+2R8WC8T7NoQqtS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36748800},"engines":{"node":">=24.x"},"gitHead":"3e0e15a1f5b17d677594f463441f809bd21c95f3","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608251330.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-3e0e15a-202608251340.0_1787665335146_0.58933939896779","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-d86d79f-202608251438.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-d86d79f-202608251438.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-d86d79f-202608251438.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7de0ecd23b4277d3b1a238bec7158d350fe6b53e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-d86d79f-202608251438.0.tgz","fileCount":526,"integrity":"sha512-bZvE4GggrifEs8NS4GPJtdcUK645YkXYHkAMii+2E63nC26ekO+NA7xgGmVmBa9jW0g166EuR8LOxGUL8ChvaQ==","signatures":[{"sig":"MEYCIQCELb2oIHoatwu8LlywTgQtDRrv5j84vt+jPww5jAYfIAIhAMHxmdXoAmP9RE1gFAAskL6uDfkVNLb963p4hw5h3xpB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36750197},"engines":{"node":">=24.x"},"gitHead":"d86d79f8de7e457b8f498032602ca543e9db30a0","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608251330.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-d86d79f-202608251438.0_1787668787437_0.6865312281027462","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-d86d79f-202608251501.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-d86d79f-202608251501.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-d86d79f-202608251501.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0d69e3cf37d3b3abe73cce2dada345696de6247c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-d86d79f-202608251501.0.tgz","fileCount":526,"integrity":"sha512-7TWIhbuEs79ekwwYV3bUBpWTHSNwDKp1Kymr9fxSF+4q+7cErAcMtrrbBfNrCuzf333TrjO55RzafTicxMB9wQ==","signatures":[{"sig":"MEYCIQCALZhPEhmulXlgWphuN8YnyQ3towrW9FeZEPSpMHq5lAIhAKGPTj7TmPXeaY1IfnmjIsVJHuJaWgxlyRGDd/6l+69Q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36750212},"engines":{"node":">=24.x"},"gitHead":"d86d79f8de7e457b8f498032602ca543e9db30a0","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608251330.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-d86d79f-202608251501.0_1787670190005_0.649784048642561","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-a60c108-202608251531.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-a60c108-202608251531.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-a60c108-202608251531.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"22e0dba4bd4a2f8ef8139d07e24bc13c799449eb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-a60c108-202608251531.0.tgz","fileCount":527,"integrity":"sha512-4M+JRqNUITSzKiNyqFZWomWB2MrL3FRw7G09mtMgFYuUonKa7MlomYkY12/fDaOzXjhelQ/Ns47iBOeiWP7gZQ==","signatures":[{"sig":"MEUCIQD4rJFq7y7zKIcsITZ08yKycifqor9GB6M4xF/gjyd6KwIgJval0DqkS6b3q2v2+hzt1E381Qw95JDHSHTw1Ji/J78=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36768062},"engines":{"node":">=24.x"},"gitHead":"a60c108054dcfc149364548a3be4cc93c6689590","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608251330.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-a60c108-202608251531.0_1787671985122_0.6417248454325983","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-a60c108-202608251534.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-a60c108-202608251534.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-a60c108-202608251534.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0bc9ed81437cea8dae516c673333dc99c5bad256","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-a60c108-202608251534.0.tgz","fileCount":527,"integrity":"sha512-TVHlV1LF+SIbGce8X+N72476+r3fyU5QA7VvKwZWWcuGuxCYT5qSdTzmuFeiDw/GH7vwqMWq9/UIFJSYAki0Pw==","signatures":[{"sig":"MEQCIHDaeEXdRdImdi7M8skJLBLttJEAOaZyue5wO5f0UWJ7AiBuYUcBnvWwW8+C8c4KlTOhn/tBsvnR5p+YYaQ9Fz7DTQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36768286},"engines":{"node":">=24.x"},"gitHead":"a60c108054dcfc149364548a3be4cc93c6689590","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608251533.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-a60c108-202608251534.0_1787672162858_0.40852527098282665","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-8ab2ddc-202608251903.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-8ab2ddc-202608251903.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-8ab2ddc-202608251903.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"aba6a5ecf3ef2f8866bfb1616f67d2c13c7abb8a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-8ab2ddc-202608251903.0.tgz","fileCount":527,"integrity":"sha512-0EMl1e4l0jIWSUVJCf+u3rVef59MdNZZb/LEKA++ye3gipUCkjPghA0B9iDl+Wz5SsYw9XfIPs25AMS2LBpW7w==","signatures":[{"sig":"MEYCIQCSIphnRZ9OqgjjIhcw8y0BO0uiDIt9yYBA7Qfu/LoV1AIhAOhtjjV9culToZPZbWeLCDknKkXAr2N36/aJ77G3KeLM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36768010},"engines":{"node":">=24.x"},"gitHead":"8ab2ddcdf89daf9b2f97c82a6ef4d225c5d0e4e2","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608251533.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-8ab2ddc-202608251903.0_1787684719720_0.2161338275654754","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-8ab2ddc-202608251928.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-8ab2ddc-202608251928.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-8ab2ddc-202608251928.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0446db96c4c30e7029fc8fad6a5b330bed95080f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-8ab2ddc-202608251928.0.tgz","fileCount":527,"integrity":"sha512-ZjZgYecWDi+alUPyTx0kLjLja5FHxuQHHN+AUQar4csy4Uba0MWSUTXwufgowGClPihQubMJYOeNnxPg7Aa5YQ==","signatures":[{"sig":"MEUCIHoAPjHxk0bhokb7p64JlUESFOwI8r4SgQZuuAF+BucVAiEAqJFNyBEe+nmRJrBeuGSCJhO7VsJS9fH49WnzJXtQLbQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36767608},"engines":{"node":">=24.x"},"gitHead":"8ab2ddcdf89daf9b2f97c82a6ef4d225c5d0e4e2","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608251533.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-8ab2ddc-202608251928.0_1787686191461_0.1793632232548903","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-8ab2ddc-202608260744.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-8ab2ddc-202608260744.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-8ab2ddc-202608260744.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0aa44ced7f4d04fb3875fb6c103bf04efbe696e3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-8ab2ddc-202608260744.0.tgz","fileCount":527,"integrity":"sha512-ZowPvjWf2B++c4MHbRLzWkspJTJ9Mj7EMY6ag04U91J3KGNiu5r+YLRjmfLA7zsVETTUPPDzV50YiZonfRFlDQ==","signatures":[{"sig":"MEUCIBGyiOhYdkVweYD9UM3BX6vEGdsYLPSAlMi5xHWfn6DtAiEAoED1/n+XcvvAOrm8ppfMsrK7Yjka0DXshLATbWg1o3E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36767636},"engines":{"node":">=24.x"},"gitHead":"8ab2ddcdf89daf9b2f97c82a6ef4d225c5d0e4e2","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608260744.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-8ab2ddc-202608260744.0_1787730383059_0.5691846001568877","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-41a10fd-202608260938.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-41a10fd-202608260938.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-41a10fd-202608260938.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0530b1e8ced238dc784bb6ec27e1b3e0116b8bac","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-41a10fd-202608260938.0.tgz","fileCount":532,"integrity":"sha512-56iTCR2HvkZM6GLHVlx0QJHJkB9payqlo/3/g550npDaYY0PllH+8sF1eqSYBSaKT7Fy2kmkO9d1vAuRwp8SmA==","signatures":[{"sig":"MEUCICqPMygXr7DCxtXf1F8vzAgfkGJYNhJ1xPwr+AUommorAiEA08x5u56UTSg3H9TR/RtdALU+NixTOnX4TaA4pUIPeF8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36817943},"engines":{"node":">=24.x"},"gitHead":"41a10fd83b79f71d48a877f01bb492133fdf25ba","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608260937.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-41a10fd-202608260938.0_1787737192323_0.9051799891731671","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-41a10fd-202608260954.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-41a10fd-202608260954.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-41a10fd-202608260954.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"260a5331f0c85e1aca83471bfb0e284227baecec","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-41a10fd-202608260954.0.tgz","fileCount":532,"integrity":"sha512-BikZS2VgTvVdEiFLbcb9dw7ugezbyO8/8LCkasaorDuXpdvg+uafxchTbIAc7aJBQqVqiBtm9OR2Bbk51B4eGQ==","signatures":[{"sig":"MEYCIQCUj62Eieq6hr0P6QZNAns+n+TL+DtmbB0ddQly6+OqyAIhAITdqzdBWB3ySffFPO9P/SeNJBebobqMZlYz4XJyujYP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36817584},"engines":{"node":">=24.x"},"gitHead":"41a10fd83b79f71d48a877f01bb492133fdf25ba","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608260937.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-41a10fd-202608260954.0_1787738175647_0.03578521402377244","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-dfb1ee9-202608261242.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-dfb1ee9-202608261242.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-dfb1ee9-202608261242.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b4b7bb1abf0fc82d5f76832940b3dc87f155bd35","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-dfb1ee9-202608261242.0.tgz","fileCount":532,"integrity":"sha512-3TI2i7Qy1ciRtcA+9JYRit8TSxAuStwUEnKg0gRIgNrjgHMO8mHe3jgoN324w44Z0amiNPy9sKQGC4Hiw8bZug==","signatures":[{"sig":"MEUCIQDhIZct3pcMZcIFMHwwIzU94yx0VXKLP04au2FN9tXYFwIgY/yIeDzRj8QJP5PEJIHvCKTchi2ADjsYcNljANJWriw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36825685},"engines":{"node":">=24.x"},"gitHead":"dfb1ee945ece86804c7a35ba637d39a7b753cee1","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608260937.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-dfb1ee9-202608261242.0_1787748276839_0.04680126654348582","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-dfb1ee9-202608261257.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-dfb1ee9-202608261257.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-dfb1ee9-202608261257.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cec14a5271df39881849f536c1bd9648cee48c59","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-dfb1ee9-202608261257.0.tgz","fileCount":532,"integrity":"sha512-RjUUQV1naXyvvyzEgJzUySX/9nTFPwy1vFneHpHcvJ+gdSye31oFZgpZ9vN23Ysz/e2g+SfpDAD4yoXgTwBayQ==","signatures":[{"sig":"MEQCIHFwg6NOt2KLVjB09P/KbYE76f7F0qNfNEaQ3FAoDLN9AiBvQiRaGsl2IHPeGMraohe6lUtUfQowq8dC5OoHQmFcOA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36825876},"engines":{"node":">=24.x"},"gitHead":"dfb1ee945ece86804c7a35ba637d39a7b753cee1","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608261256.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-dfb1ee9-202608261257.0_1787749145719_0.5749931216511348","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-f20b55b-202608261741.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-f20b55b-202608261741.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-f20b55b-202608261741.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cc7447de66c765d4ed69c0b43d9cb7cc36e9d412","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-f20b55b-202608261741.0.tgz","fileCount":539,"integrity":"sha512-qus6miqyTFU35Yzx0hMYP+gNF72So52XGBQyox7LkYhxksyXcpqvTgp+Yw5zitlMzI/HCn/1oq1jT/vSB7EA6A==","signatures":[{"sig":"MEUCIQD8leCxA/zJrvpeHVdx+tP3PsvR79W7ppNUCTur6bIUQQIgZUzLiHO32laI40pNoHEj/oiemanyerzNgTm+wqMFV8E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36896842},"engines":{"node":">=24.x"},"gitHead":"f20b55bca2d2c15ce0a13caae495c0fa13f0a48f","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608261256.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-f20b55b-202608261741.0_1787766198942_0.8885039502347398","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-f20b55b-202608261811.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-f20b55b-202608261811.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-f20b55b-202608261811.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e2931542f43ec5ee5fac5ea0aa261c215b405063","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-f20b55b-202608261811.0.tgz","fileCount":539,"integrity":"sha512-NfS5xe9cLaYBynbhfa6HaHXDh9iOC1BVmNQc6OEOmHvSb3oWlOPMq/V3zr/E9y5e7hVdyPvVgyjX1DZ8c9h0Yw==","signatures":[{"sig":"MEUCIDLYCwo7HB1PxoVN0Me/yFTFNiG+tH6gA4/D1tsNIp2sAiEApIE5RWc/bbqVIiOQL4CoaIpEarCguK3OGvfb7ps+Dmc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36896623},"engines":{"node":">=24.x"},"gitHead":"f20b55bca2d2c15ce0a13caae495c0fa13f0a48f","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608261256.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-f20b55b-202608261811.0_1787767992910_0.46455646339691636","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-7cb5e61-202608262127.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-7cb5e61-202608262127.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-7cb5e61-202608262127.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7b223a75e148229292c4b7bf0d0e69836a060aca","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-7cb5e61-202608262127.0.tgz","fileCount":539,"integrity":"sha512-TvTbNJheT5+dR87bsMOzKB6xDyVDEzyHqLzvzY/qnmHdBtQrNBn9qHQdvlinBgIoi1nwQ6SUv53OOloPrqvppQ==","signatures":[{"sig":"MEYCIQDBzFFtGFv6kFUyz8TyR03VMphz+bPSc7fAqqJ64yzz8wIhAO4NVeC+dYaX9rIrxIDm7wswiiLW6gHtfybmtJUsNvZm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36961354},"engines":{"node":">=24.x"},"gitHead":"7cb5e6144f58fe5340abcfe355cf53a8610fa4d9","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608261256.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-7cb5e61-202608262127.0_1787779765333_0.8084662091325079","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-a14a622-202608270843.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-a14a622-202608270843.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-a14a622-202608270843.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7867557df408daa525dc434fb00dd43d9cb3d07b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-a14a622-202608270843.0.tgz","fileCount":539,"integrity":"sha512-jH611hQX/ntQdzWy9/IlE32vFrSylZJJZWas+Bnra+Y4b11S7HiMIXUyLz/4bcYVLnk3sTpwmHhWk9d0fJ9p1A==","signatures":[{"sig":"MEUCIEAoiQ5WKMYcWzpJbPGhUUM9s0N7JKRaLnn66llAPfZZAiEArJZcNMJSJLVvFIBeXJZeZhi/wc2L33SBqAYg8okukJ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36961048},"engines":{"node":">=24.x"},"gitHead":"a14a622dbc84ea5b8b2eba25355bf33d9f6cb4a9","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608261256.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-a14a622-202608270843.0_1787820290468_0.7742983864028163","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-6111c55-202608270915.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-6111c55-202608270915.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-6111c55-202608270915.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"67258acb7dc70ba47a426d04c6424b823e784ab8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-6111c55-202608270915.0.tgz","fileCount":540,"integrity":"sha512-0fM1EiwSf9WGDqnIJh7P8w1D+393PTrw3vfY9bFU3+mXKmqV3uglZIgeMph9ebB287lV/HqJbVur5sPwvo8YTA==","signatures":[{"sig":"MEQCIDMaHASj93ncHnHzGBX6iTkumQ1GQQevxZyHOesZaXeRAiAi3dKJm1hcOTTw2FzShyuez3pRyh9M/TgWKELjdFTM9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36987888},"engines":{"node":">=24.x"},"gitHead":"6111c55527d1b3e7c6d998b96013bb9bf4d9bcac","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608261256.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-6111c55-202608270915.0_1787822205123_0.9229009579631051","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-2e8cc48-202608270955.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-2e8cc48-202608270955.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-2e8cc48-202608270955.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b95aa67b359c71299229d03a857a57c7d4d2bee5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-2e8cc48-202608270955.0.tgz","fileCount":540,"integrity":"sha512-NpsngbQ7EyCIGLgX1mGf1TvACHq//PPwIg7XMeCEqgp4+G8CYKtz3ux7CKjB9+hf3ZvfAMWyrimIMl15jfxBQw==","signatures":[{"sig":"MEUCIQDJgGiov7T3qgWhHZ3Cp86jupd1UkngXMHHHlOaLtqX/gIgeYnPO8iGizVvi4RoQEzIZPTKfQRGUYEyUqjN7OxvrXQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36987916},"engines":{"node":">=24.x"},"gitHead":"2e8cc480114fd467c80822d18064eaea82f6fae7","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608270954.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-2e8cc48-202608270955.0_1787824607235_0.753161873337709","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-492cb5f-202608271030.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-492cb5f-202608271030.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-492cb5f-202608271030.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"becc9cbbb63685a0f1b928e9005a4110c9ed7f7d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-492cb5f-202608271030.0.tgz","fileCount":540,"integrity":"sha512-bPgOFDr/F1k+eVFJQ/P2VRemTGH6f18FPEOTMWFzFO1txGuc2TvJoyQzhPWOH+Q7lF0olGoieXT7QfuCievM6A==","signatures":[{"sig":"MEUCIFwvIHXCc5Zt67e963pewLC32Z8mDwrXusWbOp2QYXJjAiEAmjOoUjHQnzWVqxOP9zbXCkgI81pJbsf7sPydGmRjaJ4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36987934},"engines":{"node":">=24.x"},"gitHead":"492cb5f4aa154a649d89ad0f3df5024d20f223cf","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608271029.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-492cb5f-202608271030.0_1787826715944_0.5570157440336259","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-492cb5f-202608271036.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-492cb5f-202608271036.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-492cb5f-202608271036.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"63a7e3aca66b6b8147d4e0444ff55ac3394173e5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-492cb5f-202608271036.0.tgz","fileCount":540,"integrity":"sha512-P7hqynMnfFfcJj4g3k11v5qW12r2CaCHYycKQxSVgW+Yok+WbDHa5ncYv94mQ5n5LCAuQtyl+/HnDWiRG8EEyQ==","signatures":[{"sig":"MEUCIQD3txg2LIlgb8NoIxdajcrsudCXm52fL3QVN8OpJ/eAywIgBHPCuGWWk8yIIICDAtkJCbMTlsVM/N6qrYWxmT4rDVk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36988114},"engines":{"node":">=24.x"},"gitHead":"492cb5f4aa154a649d89ad0f3df5024d20f223cf","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608271036.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-492cb5f-202608271036.0_1787827089842_0.6053902343177788","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-492cb5f-202608271042.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-492cb5f-202608271042.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-492cb5f-202608271042.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"223ad2ec41b4150261fc8094d463bc170d26ec84","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-492cb5f-202608271042.0.tgz","fileCount":540,"integrity":"sha512-d6iBLd/hiZvi1y3aIydPTDaSA8H13MWrccixb7NekWS28DpKo9kIrc9GLgIxXJ5BsLtsQk582xoUf7vQo5DCCg==","signatures":[{"sig":"MEUCIBm6NStbQMR+5wCqx/ud/BDPyuEX3zCZaLhPKfrmnlIDAiEAlSpnL2CGqVsRUEy1wzUzo+JeVY7nbtCqIaJOzVM8olE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36987984},"engines":{"node":">=24.x"},"gitHead":"492cb5f4aa154a649d89ad0f3df5024d20f223cf","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608271042.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-492cb5f-202608271042.0_1787827469437_0.2832709418815076","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-eef73bf-202608271115.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-eef73bf-202608271115.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-eef73bf-202608271115.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9882c15737836e7c4e8735359ba82babe54e9a97","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-eef73bf-202608271115.0.tgz","fileCount":540,"integrity":"sha512-Tmwdo2QE2vAkXQFHOQgnKt1qvvZNp5fXlGyHCOvgS+R5Wp0gt4Z/pkuJi2ZWvXdJLE3DFl/QhL5CE02ufvn/pQ==","signatures":[{"sig":"MEQCIFgUAj8UbV1+WTn4PqwkvaaOujIE3VhLdK+w25IWq7Z2AiA5uACeMh7IN928Q6jY8aczftlSm+iWtjTYey2/L9D2aw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36988218},"engines":{"node":">=24.x"},"gitHead":"eef73bff43ed23e9a7f68297ad7d3c6da6bd1de2","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608271042.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-eef73bf-202608271115.0_1787829440804_0.0833339159272033","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-5e0d33e-202608271212.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-5e0d33e-202608271212.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-5e0d33e-202608271212.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9a4fe733374eaf55e49b4f886776e1f9ac4b7501","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-5e0d33e-202608271212.0.tgz","fileCount":540,"integrity":"sha512-b/jyp00ODCwoW4wobhZrF4+MwUWF6SJjNDYZ/IZ1SkA6MAoElPmK7bkWekIYmoN3qLDn0sDX3j24dpqblpPeTw==","signatures":[{"sig":"MEYCIQD8Hz9mgV9URIWCSv8Uu3/DV8fyRqsbrPd9qgJKGXYi6AIhAJT7+lBYf/VBAGIc8q/6+lPU1ZocMxLqc9ae1nh0VwBN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36990633},"engines":{"node":">=24.x"},"gitHead":"5e0d33eea8f68fc3fc32c489761b57128b072c2f","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608271042.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-5e0d33e-202608271212.0_1787832849173_0.002582737563120885","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-c78beeb-202608271242.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-c78beeb-202608271242.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-c78beeb-202608271242.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"074f518dc651d1ce7a5ffc033554da178246d37f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-c78beeb-202608271242.0.tgz","fileCount":540,"integrity":"sha512-oVz04GkGFIdYnZpvwPRx+C9nNflA9a7jml9F0FKcIR2/B3XFmjlvcpQl5wKjPK5wh1hKXE+ruxfnipX6sJyXGQ==","signatures":[{"sig":"MEQCIGLIb9TcZZU8IhS6C+DxQFYP/I6qFEM+4sesWohNIKCAAiA6/yrensNMIz3E/HlIxtv1MQdzRh5JXJLGjcPotEV/kg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36983948},"engines":{"node":">=24.x"},"gitHead":"c78beeb659625585ff1e40d4d7842079e579ba3b","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608271042.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-c78beeb-202608271242.0_1787834631251_0.5942436949491339","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-c78beeb-202608271311.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-c78beeb-202608271311.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-c78beeb-202608271311.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2113918e316e32522b74ca1751d9b405325839f5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-c78beeb-202608271311.0.tgz","fileCount":540,"integrity":"sha512-XAqFBEGKLrtZrD9fRhHyVe+4VLO4cN1PdlzYNJsW2IX8LGpsJthzwNrL44O9O56cysTbTX1VsZdZ8VPxZLx3Xg==","signatures":[{"sig":"MEQCICbOmR33UHedFQbOujXK00vYgj69yuoAHLEfSvpk0sxkAiBN1FfggEBx2OwKXHn6SZXhSv1SjrtJJewe04xR8TrvUA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36983988},"engines":{"node":">=24.x"},"gitHead":"c78beeb659625585ff1e40d4d7842079e579ba3b","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608271311.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-c78beeb-202608271311.0_1787836387476_0.5143694736045452","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-c78beeb-202608271313.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-c78beeb-202608271313.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-c78beeb-202608271313.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f82e725bdf091951d057ebcf7ee09ac4f9b1e81f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-c78beeb-202608271313.0.tgz","fileCount":540,"integrity":"sha512-3/VuoMc9SkNyZknBE/cqdGPxTN5c9S2Ps7CqtpQyfZqHqROHicTIVf4gN1TzMPnhCnqis1A5/IgjK0FD261N9A==","signatures":[{"sig":"MEUCIFst9sWSGUBhKhlSFU1e8R/KyJdpiBAKwLuf1JGU8RfDAiEA1qdONQvk0Ex32g7UfLEd/ACH9ic5yBdTy0i4+ZQHF3s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36984031},"engines":{"node":">=24.x"},"gitHead":"c78beeb659625585ff1e40d4d7842079e579ba3b","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608271312.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-c78beeb-202608271313.0_1787836502014_0.7323438307732832","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-c78beeb-202608271316.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-c78beeb-202608271316.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-c78beeb-202608271316.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"91239ff221d7d823048876452bb9676c9d628d14","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-c78beeb-202608271316.0.tgz","fileCount":540,"integrity":"sha512-4lmLCbbNu1SipjVZdeoqZ+rXAkETgFnUILoBeoSpvTkTGuPeccvF4MR/qPVQWoV9h4xErf0a/keYxpQxxty9ew==","signatures":[{"sig":"MEUCIAD94JPUtLQU47x7JNEdOc5MtVMxxmmm+lv0ApwcKcA5AiEA8eWOAN62s2KauszYu19095KMsv3kEJ88inEDekBKifs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36983765},"engines":{"node":">=24.x"},"gitHead":"c78beeb659625585ff1e40d4d7842079e579ba3b","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"2.33.3-8bfa0e4-202608271316.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-c78beeb-202608271316.0_1787836688848_0.289997752700599","host":"s3://npm-registry-packages-npm-production"}},"2.33.3-c78beeb-202608271319.0":{"name":"@flowfuse/flowfuse","version":"2.33.3-c78beeb-202608271319.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@2.33.3-c78beeb-202608271319.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"119abd88803c6cdcfc39ba5a24d0133804c1e726","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-2.33.3-c78beeb-202608271319.0.tgz","fileCount":540,"integrity":"sha512-YLemQsSVjSqBsGg8UF+NrtPTkOSZQl9L5Ysx0MIXLNMVGEupT/oFA/f+kKuY1SDfCnjwpRPoC2lC0mE/FfrwnQ==","signatures":[{"sig":"MEQCIHU6q6dO4qEKCv5MubQM79nG8HIif3H31EMt0w0iEXU2AiA8FS+/9hM+nVvd1DsEe8+XCojfSchZXJcq+Ysc9H7vyw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36983842},"engines":{"node":">=24.x"},"gitHead":"c78beeb659625585ff1e40d4d7842079e579ba3b","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.1-645b22c-202608271318.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_2.33.3-c78beeb-202608271319.0_1787836856663_0.3936962712428993","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@flowfuse/flowfuse","version":"3.0.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"40108d6c32a51b37c94c555be690986c7a5f9010","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.0.tgz","fileCount":540,"integrity":"sha512-POvHpdaCsJyohQzmAVIbLzA8JXjSieiB1L+9OKm5uiKCUhN0DpsWTZnc90bIjUytl3r7SLwx0J14u/O1Vcu1Pw==","signatures":[{"sig":"MEYCIQDLVAmKY9awlgYwjWpLcewt92Rdrzersd/YsP8UQF1rlQIhAP7Q/A9BZfayC08hwwm997DIMGtUqy1zltLpjJc97cXq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36986254},"engines":{"node":">=24.x"},"gitHead":"56b076e7342b4ba66bcad94307e9bee83b0e15bf","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"^3.0.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.0_1787840059443_0.7695776034316832","host":"s3://npm-registry-packages-npm-production"}},"3.0.1-56b076e-202608271434.0":{"name":"@flowfuse/flowfuse","version":"3.0.1-56b076e-202608271434.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.1-56b076e-202608271434.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fc3d6cf9863d516b3378fe392676dfa572bb2028","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.1-56b076e-202608271434.0.tgz","fileCount":540,"integrity":"sha512-6jhkFWeurb1ZuBlxTT8fp4ww7e9JCxNEbdhGbNyOZJhNaz+lGXHsFfjJz9PpwCAzpL0AvFZb/TDKLvr1wxccFA==","signatures":[{"sig":"MEUCIDWAnL/ln4ClCczD5aP9K5CYSb/X3bpj9R+tAPA/PNkiAiEA8rXlhkB9qHo+KCtwnQHC29G/KwFXFwCZKeRkfFFH0ts=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36992730},"engines":{"node":">=24.x"},"gitHead":"56b076e7342b4ba66bcad94307e9bee83b0e15bf","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^10.1.0","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.1-645b22c-202608271318.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.1-56b076e-202608271434.0_1787841383288_0.5540141967408445","host":"s3://npm-registry-packages-npm-production"}},"3.0.1-e2ef8df-202608281144.0":{"name":"@flowfuse/flowfuse","version":"3.0.1-e2ef8df-202608281144.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.1-e2ef8df-202608281144.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6cd9667c0cfc22785959ee20365c04e62671d342","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.1-e2ef8df-202608281144.0.tgz","fileCount":540,"integrity":"sha512-1WUqbDigPHSPDBUZmow36g/GtdqjThhSB/koFhmn8vda33FbWAYV14a3oDgf8j6epUNRUrCbeBoRgzEKy5lRyQ==","signatures":[{"sig":"MEUCIAn4Jzf9ANrqBfruyN+ESnY3kQAnzo4KfKhsYJyID2M2AiEA2BbdiomP5TMpTPsn8ppal+lyHB3BcuvToe+Yg34E+vY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36992781},"engines":{"node":">=24.x"},"gitHead":"e2ef8dfc4cf3d048c8974d0afbdac083f2238315","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^8.1.8","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.1-645b22c-202608271318.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.1-e2ef8df-202608281144.0_1787917570768_0.20803624916964192","host":"s3://npm-registry-packages-npm-production"}},"3.0.1-1289344-202608281312.0":{"name":"@flowfuse/flowfuse","version":"3.0.1-1289344-202608281312.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.1-1289344-202608281312.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"49e605b90142bb544d0f26bb4f91d19923e11af7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.1-1289344-202608281312.0.tgz","fileCount":540,"integrity":"sha512-jnKR/okfBDQvxyR8NLHdjQiKhcxltBFIn/WaQqJpVGQEKXOWlsTDuxUACcmRVgHP+Uiwz8+CYFjfa9irpNuMuw==","signatures":[{"sig":"MEUCIQCi7nWB1FfrL7bhEjrIM9e1O54U1cD+xZb8rg5P3mT8WQIgV42Z+y/Hy7OCxZwoXg2tUBcomufiurUtcZHf2QQgUiM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":36992500},"engines":{"node":">=24.x"},"gitHead":"1289344a46e7b2b437bbe50b93984949a5bd0df1","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.1-645b22c-202608271318.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.1-1289344-202608281312.0_1787922858372_0.9718317242286383","host":"s3://npm-registry-packages-npm-production"}},"3.0.1-ad3fc33-202608311501.0":{"name":"@flowfuse/flowfuse","version":"3.0.1-ad3fc33-202608311501.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.1-ad3fc33-202608311501.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7e9e977e7f793e09cabce69bf6ac5d28d67ca69b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.1-ad3fc33-202608311501.0.tgz","fileCount":541,"integrity":"sha512-cHQRdb0a/vxEbAh55U23mkZArrSlue+rDMgdC2+rp35fkPw5TvzRN2pHAbL616W2qYbs9ma4hTMRLaFNC+Oslg==","signatures":[{"sig":"MEQCIAu/spyT/Wt1oXIopRQd13ogv4O9P7B7ttxqGMg6DbzNAiA3udOAjn4o6K4iwG0/ZDo4EalAt6nw1VO9YbPmXDOn6Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37000648},"engines":{"node":">=24.x"},"gitHead":"ad3fc331b47298388d6e5d9c72c01f77d447285f","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.1-aee4857-202608311501.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.1-ad3fc33-202608311501.0_1788188608643_0.6486322490126095","host":"s3://npm-registry-packages-npm-production"}},"3.0.1-ad3fc33-202608311519.0":{"name":"@flowfuse/flowfuse","version":"3.0.1-ad3fc33-202608311519.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.1-ad3fc33-202608311519.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b14a75334485fb832e35b773950d9b7ca1265d37","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.1-ad3fc33-202608311519.0.tgz","fileCount":541,"integrity":"sha512-CQF+oEHObpb+XmCsfqYCv3ULpq9x0IyrJId84EnqVLcgIihGX6tXIDEX1Cq4NM6QYisJeoJxaFCIgT1avPCkDw==","signatures":[{"sig":"MEUCIQD9Q4jZpANIIgfINchFCR+Cjg9SWfjh7ruJPPd/mdq1jgIgFB/2PZ8egEdMw9F2psd83RUJh1sC98J+ZifF6M2vnpk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37000574},"engines":{"node":">=24.x"},"gitHead":"ad3fc331b47298388d6e5d9c72c01f77d447285f","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.1-aee4857-202608311501.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.1-ad3fc33-202608311519.0_1788189678824_0.1333294286155695","host":"s3://npm-registry-packages-npm-production"}},"3.0.1-f1d54fb-202608311813.0":{"name":"@flowfuse/flowfuse","version":"3.0.1-f1d54fb-202608311813.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.1-f1d54fb-202608311813.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"62afb62dff22f1ae11bfd3f8ff0b53576b9d6fdf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.1-f1d54fb-202608311813.0.tgz","fileCount":541,"integrity":"sha512-yP/pEBr5cokwgiuOyU04T3u8oGgCnOLpt2HElmhEzxihnVlKccoykLp4z2wc6wHaVGmDU21qlRmOx4gjt3/UuQ==","signatures":[{"sig":"MEUCIHu5v5SoZ5UnUnESyKhXjD9z6pyAyt0fsp9eFuWuUJdAAiEAgt4XaOBsb4lrVwiDuixxJ1Y0GStAr6b552Aq139PfU4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37133191},"engines":{"node":">=24.x"},"gitHead":"f1d54fbfb909c3ce164fd33ae68b896fcc1916e7","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.1-aee4857-202608311501.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.1-f1d54fb-202608311813.0_1788200082766_0.2761327490969554","host":"s3://npm-registry-packages-npm-production"}},"3.0.1-f1d54fb-202608311836.0":{"name":"@flowfuse/flowfuse","version":"3.0.1-f1d54fb-202608311836.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.1-f1d54fb-202608311836.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d9d4a8e2389946ef8a2450d692a1b0c025f6663d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.1-f1d54fb-202608311836.0.tgz","fileCount":541,"integrity":"sha512-M2ceoI8LxOm1NslmfGaPZoAr3lX1hK7/cVHMj5jkQGsKKZCBuE5O9mjmsjW7BHC69gND4n0djjZQwxYdXF2Sig==","signatures":[{"sig":"MEUCIQDXb8XYzWj95KxQ7wUOWlGZD6DUm37hGohiMiw98ZuUigIgSfBDNlscv6XkIVX8m0t6atIGpQlo3X81DLLlTtgH/Zc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37132995},"engines":{"node":">=24.x"},"gitHead":"f1d54fbfb909c3ce164fd33ae68b896fcc1916e7","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.1-aee4857-202608311501.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"^17.7.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.1-f1d54fb-202608311836.0_1788201487640_0.8932830554349602","host":"s3://npm-registry-packages-npm-production"}},"3.0.1-43afc17-202609012022.0":{"name":"@flowfuse/flowfuse","version":"3.0.1-43afc17-202609012022.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.1-43afc17-202609012022.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"499abf9474b530b06c1b530b6787d2c2fd405c37","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.1-43afc17-202609012022.0.tgz","fileCount":541,"integrity":"sha512-y4LlZzIZvRr1FT03VzPGx0n3tKz/1QSuOcjT5GpqzFoTXWZ4I2kr6XZK1wl7ZM65xSMWNeHIXuKYC7R3irNIUA==","signatures":[{"sig":"MEUCIQCw0YsXFdMaey4UHFY1jfhmx7Kid9tEx+aq0IMRXWDjpgIgSBb4o5roLciX0aWpA0TV45WygpRPbN/knMHXur+BaP0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37133253},"engines":{"node":">=24.x"},"gitHead":"43afc17fd6c52b1ffab160209ddf649432f25555","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.1-aee4857-202608311501.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.1-43afc17-202609012022.0_1788294285217_0.29585586601103353","host":"s3://npm-registry-packages-npm-production"}},"3.0.1-43afc17-202609021019.0":{"name":"@flowfuse/flowfuse","version":"3.0.1-43afc17-202609021019.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.1-43afc17-202609021019.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b5e07932763230492386ceb6638387bf1c391d2f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.1-43afc17-202609021019.0.tgz","fileCount":541,"integrity":"sha512-5pbA2QiW9PdYhqWRbHdSnwswz9FOcuWRUufsp3xoWU9FJLchg024pKiHJ8OlNC7SQiPQARkKA2AV5qtAkaLIdA==","signatures":[{"sig":"MEQCIE/KNrMZvJACrIPTWjVneM4tPGP+V5ICS06lPueahCd0AiALHvUfmi/NquSYGWuvKrsIflEkXo/7wT9DwpN4qFeZZw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37133096},"engines":{"node":">=24.x"},"gitHead":"43afc17fd6c52b1ffab160209ddf649432f25555","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.2-76828d3-202609021018.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.1-43afc17-202609021019.0_1788344453087_0.8976888770543654","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@flowfuse/flowfuse","version":"3.0.1","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.1","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8fa17a9883aaaaa8d0c5c2b1339fe5f1a7ff09f0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.1.tgz","fileCount":541,"integrity":"sha512-0OaUafrcE8vvNc0GL6qzcJPa82MieWPviqBBkmCDiP4zos3qa2dgUtkN/MN7isxqnRVhM9RGP3aR79N4rVWT2A==","signatures":[{"sig":"MEUCIQCgeTYGEmyhcu92yOX4VjF5S2wMe1bDXXxWy1+EajfhYAIgeYY89eymarKhIJfa2VkkTwlfYaqA4yAKjqSrYadbRq0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37127229},"engines":{"node":">=24.x"},"gitHead":"2097e7b7a8db0f0eb5626c0d42191037b9e1d510","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"^3.0.1","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.1_1788346074041_0.39401897247555007","host":"s3://npm-registry-packages-npm-production"}},"3.0.2-2097e7b-202609021119.0":{"name":"@flowfuse/flowfuse","version":"3.0.2-2097e7b-202609021119.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.2-2097e7b-202609021119.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b9d2857abfe785ee7f02bbd4c3aba88b0e10389d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.2-2097e7b-202609021119.0.tgz","fileCount":541,"integrity":"sha512-eL+QjAyAW3i02gZOSfiYJjT1K4Wb848omRMYFxj40z90BTqU05kpuz7hzWiW9svxq9JF1ps+4R99D0MUdEa5/w==","signatures":[{"sig":"MEYCIQDWBB9D0HIvO8N82qWyPXaMHjLLgKipJGqpQDO2p+aS9wIhAPOw52r55kMHctyakPLEFe5d+tuJuQLA1AI7Ha38Lelm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37133698},"engines":{"node":">=24.x"},"gitHead":"2097e7b7a8db0f0eb5626c0d42191037b9e1d510","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.2-76828d3-202609021018.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.2-2097e7b-202609021119.0_1788348039285_0.9592651240148016","host":"s3://npm-registry-packages-npm-production"}},"3.0.2-23a4cb6-202609021327.0":{"name":"@flowfuse/flowfuse","version":"3.0.2-23a4cb6-202609021327.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.2-23a4cb6-202609021327.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e1bed9b168fc1e90849fdfe7f3000695fd3de622","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.2-23a4cb6-202609021327.0.tgz","fileCount":541,"integrity":"sha512-Lt8GNSKdlwbeAxYhuYnyZVi85/Qv05ULNHMdSHj2iESEXjzkqYuhWnWv1p8MNxXrQ5jSJURkYO0204KMBjQLrg==","signatures":[{"sig":"MEUCIQDxjO5A2pZNo9BWf0c1y5E1ISsDWoT8oqkhPTJzKc3b3QIgb4st7H3x6s+fehnKloYTZO6QK5N5Z3/e08LZTIn2PRM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37135258},"engines":{"node":">=24.x"},"gitHead":"23a4cb6fc1c1f36a4e5aaf3edfa3010dc41bcb69","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.17.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.19.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.2-76828d3-202609021018.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.2-23a4cb6-202609021327.0_1788355734622_0.3166947225556733","host":"s3://npm-registry-packages-npm-production"}},"3.0.2-865573c-202609041309.0":{"name":"@flowfuse/flowfuse","version":"3.0.2-865573c-202609041309.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.2-865573c-202609041309.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"62119a0192fd42693c7bae1b438aff3469b9ec21","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.2-865573c-202609041309.0.tgz","fileCount":541,"integrity":"sha512-6IH3+0j9rKsSvYYg756qBCg2I/EB0/64z7PBIZ8CFhzdj+W7+o491EbVF8CsWtlMZYuzheB9+O9XAU/9nkN3BA==","signatures":[{"sig":"MEUCIASE9peSD9GX2sFAKWFiizgWtwXNVYkT0qnpnQvo2daFAiEAwEhz8LAwBT6diAcwH61lOdEnihjRnwzo1BIOi/Cz1+s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCEqBmJSnYPlrgjldUE9O0TE8NbB0+5eArB0cNyxNMm7gIhAKooy1IiZhlwVgkqCZnc6AVJUhUCDBKQZRbW0dFktx7r","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37135661},"engines":{"node":">=24.x"},"gitHead":"865573c059b243d5523b3c1903f2e2024f71da5d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.2-76828d3-202609021018.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.2-865573c-202609041309.0_1788528149881_0.046158058398653834","host":"s3://npm-registry-packages-npm-production"}},"3.0.2-865573c-202609041333.0":{"name":"@flowfuse/flowfuse","version":"3.0.2-865573c-202609041333.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.2-865573c-202609041333.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4e1479f2f2bb79e26d3dbda1f713fc89ec21f0c4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.2-865573c-202609041333.0.tgz","fileCount":541,"integrity":"sha512-HKj9m48Sg92CJmU+5LpdFuOCGO9PDr5sDoRlc4g2SF4S1FvZVldRB7N5jgxOn0mcjfsVXaIxuiautrliiduCnw==","signatures":[{"sig":"MEQCIC3zx5GW0aIja3uyC5+7cgvS8IkgBC5eAS53tum9AuIHAiBDThO7lFOHNkQWEOTVvdTzBbTZqoB2bAfIyxYSeMksyw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDo4LyKN0SDMLoEwpssMV6SO5+eFHQ6pMXMMeN4Z7BAAAiEA7G657Q5CjWVEt6+P7QiVgFxMx29qU6nu0G/2O1XyBdU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37135573},"engines":{"node":">=24.x"},"gitHead":"865573c059b243d5523b3c1903f2e2024f71da5d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.2-76828d3-202609021018.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.2-865573c-202609041333.0_1788529351111_0.46483367673177645","host":"s3://npm-registry-packages-npm-production"}},"3.0.2-865573c-202609070550.0":{"name":"@flowfuse/flowfuse","version":"3.0.2-865573c-202609070550.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.2-865573c-202609070550.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f7e712f1e2d5b213512b7af8217393b02403a963","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.2-865573c-202609070550.0.tgz","fileCount":541,"integrity":"sha512-IX01KWKCwjateqR3BO3l6/JeSSD4oUen0+u+oFVgUCP7Y4BYud+I+QxWImXxjFNzEKfGfI9nXiqPnNBWaP+8gA==","signatures":[{"sig":"MEUCIB8lz14mysElSvfOg/1TVt5QBfisekk5oGRs5r05SnwJAiEAnabTdODDppywg2ZJ4BL2cgBaDUQ3/SUEyb1RzTJI37s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCZUikb5EN4gDW6nQJGg041MEJSw7KSwlIl80OPDgci1wIhAJIozLgaFhLkIKc3bQvxk0IrdQoIs97gelg1nzVRofFp","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37135370},"engines":{"node":">=24.x"},"gitHead":"865573c059b243d5523b3c1903f2e2024f71da5d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.2-76828d3-202609021018.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.2-865573c-202609070550.0_1788760622638_0.951389826684186","host":"s3://npm-registry-packages-npm-production"}},"3.0.2-ac9dc15-202609070827.0":{"name":"@flowfuse/flowfuse","version":"3.0.2-ac9dc15-202609070827.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.2-ac9dc15-202609070827.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"57dbff83c3632b48c36eb3858be618b0b1065f08","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.2-ac9dc15-202609070827.0.tgz","fileCount":541,"integrity":"sha512-xBH4UY4RAJR80iHPOuAgywdJasGJhZViF0uV0jKeX0gbp3VVw8pu1xk0jI+ACdKqS+6sFTQBwjoQ+tuRASZqMQ==","signatures":[{"sig":"MEUCIBh6tFuyZFrVdG2LhG0Txuuq5+290K33oxsdPBLqy18nAiEAiey1L+o7acI0W5aqtSVpWFr7d1f4wMZTASqQJpbuXeg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGgYlv/pCpjWzXZF7mwpUEE2zXiaQL3apHLcNYzpLFbsAiEAlqgC4WRGsUh4jEYBG5qUR0ps7BTwt5HJqsL2xrAumT8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37136054},"engines":{"node":">=24.x"},"gitHead":"ac9dc15e1b854d06d89a05d3fdf419bfec375956","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.2-76828d3-202609070549.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.2-ac9dc15-202609070827.0_1788770180561_0.012409804483633824","host":"s3://npm-registry-packages-npm-production"}},"3.0.2-4d85e86-202609071008.0":{"name":"@flowfuse/flowfuse","version":"3.0.2-4d85e86-202609071008.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.2-4d85e86-202609071008.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f37a0abe01d8b11d7bb2010d72c4d5576bba528d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.2-4d85e86-202609071008.0.tgz","fileCount":542,"integrity":"sha512-qKoi8qVRWKqbWQ/3DYlOpCkkbJk941OlgZMBJT7XNycpm5S9F0hteOJqlFKAo/8x+KI9/Y4XY68PkTXlP0zhzg==","signatures":[{"sig":"MEYCIQCIC/3uq/PF41IHSFFV/dXo0d3nnJzNErhjot2BszQnuAIhAPM5M60w2zR1FdUSc7YNqsxJLPoD3uF/Cuf6nrg2Bpoe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDGt/m5PQAZcJzAQzvZNZ2SKaWjiuqbW2/QeOUpmvCVFwIhALe3cIuwHduSQIFwN/8hSXlWZO7s5aWUPnrFq2txjzPi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37150227},"engines":{"node":">=24.x"},"gitHead":"4d85e868b68ff869341ce133e2fb9da1dc650961","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.2-76828d3-202609070549.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.2-4d85e86-202609071008.0_1788776132278_0.468343733335562","host":"s3://npm-registry-packages-npm-production"}},"3.0.2-1ac5317-202609081426.0":{"name":"@flowfuse/flowfuse","version":"3.0.2-1ac5317-202609081426.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.2-1ac5317-202609081426.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2cad2377f991874b99a7636d3e18f3a449fa3caa","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.2-1ac5317-202609081426.0.tgz","fileCount":542,"integrity":"sha512-n5qL7OkX9G4ooTUfHWEjmc1FmKQtkMVPjfKYYDY91omeJ5IuxNROYu6/NGYPNIgoL6a4rHpwVPN2QuC7Ip8kQA==","signatures":[{"sig":"MEUCIHWVTlnrtOdzApBsoYVQD2SSRhYEA8K2Xi/3AltI+RPcAiEAyA8Tno+YabY56vzHtYIMT6Ew68W9NRwg/LAJZ9LrRiM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQClP0Qvpk3Absx2Lb+v1jZr9geeyFgnQcYmWuVjVoAdMAIgNob+NhqrfRtvScs0HGjf6xWFDC3U7jLpuuEbPAjlW3o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37152987},"engines":{"node":">=24.x"},"gitHead":"1ac5317c2b2064d9b633aa1815f7bed891c2a6f6","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.2-76828d3-202609070549.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.2-1ac5317-202609081426.0_1788878114470_0.2058988766557721","host":"s3://npm-registry-packages-npm-production"}},"3.0.2-2d870f8-202609090816.0":{"name":"@flowfuse/flowfuse","version":"3.0.2-2d870f8-202609090816.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.2-2d870f8-202609090816.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7ace2c5f07292e27eddaba66628e0d54af8a54a1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.2-2d870f8-202609090816.0.tgz","fileCount":542,"integrity":"sha512-hO07fqAF486ARRQatrc8/weUJwqp4uAsXb1BsABm6Yg/7cXCsvr4xE/A7Fp1gcf/WI0mkrfsCSbPKY3tcACx9w==","signatures":[{"sig":"MEYCIQC2MtlpWxbpeTVM7a58L6xz8gwDCoE+Mp9YKuPMEF4iBwIhAN5mlZ4Uu3YdgDUfCs9LUJN+sInGrlebkLNW+pKndeeg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDGq7JetcWsL8LmL/JKABmJDYykwpe0+CCfcLWVbD+eMAIgPaOSxkzOWwomC4LqTpk5XF62n6vf7Qb+Aj9HX3sHjg4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37153961},"engines":{"node":">=24.x"},"gitHead":"2d870f8bb21b5206810a80e3cff10715b30b7708","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.2-76828d3-202609070549.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.2-2d870f8-202609090816.0_1788942008628_0.7312774073547879","host":"s3://npm-registry-packages-npm-production"}},"3.0.2-04f0078-202609090847.0":{"name":"@flowfuse/flowfuse","version":"3.0.2-04f0078-202609090847.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.2-04f0078-202609090847.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ed01c520657a29c1f4ef464dcf016fcf10d03549","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.2-04f0078-202609090847.0.tgz","fileCount":542,"integrity":"sha512-H3/ObxGOdxKHJ5/4TCn0AdB2YCnMT2Z8PfCazN0UJYluLyB2jS8jBaZ6drTj7vTi8bFIT4Eqr7KVeQvKvs+pEw==","signatures":[{"sig":"MEQCIBmVr7KN7dJGvUAv/3/iAKFnPhDmilnZkTUokrKhIL2WAiBpzRP05B9ZWcqDh4tNVVh1RBYY1gBwQnp/VLjGY4FY6g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCs/6/PGKLwRZVFcpL4CzpyVu3bkQtGCl9Kfvqdp3tA4gIhALKCarSUVIj9EFkSefLOxihh1PbWgILB5Z7wbHeD8JSa","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37157242},"engines":{"node":">=24.x"},"gitHead":"04f00782552efbdac96f1249e90befb87d6e90bf","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.2-76828d3-202609070549.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.2-04f0078-202609090847.0_1788943852158_0.5460238219044871","host":"s3://npm-registry-packages-npm-production"}},"3.0.2-04f0078-202609090852.0":{"name":"@flowfuse/flowfuse","version":"3.0.2-04f0078-202609090852.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.2-04f0078-202609090852.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3cab675e20f8140ace997c598259d3109b721f91","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.2-04f0078-202609090852.0.tgz","fileCount":542,"integrity":"sha512-BESrFwDLSjImiOsAuAXnOrpONbzS6Ula7ftM/m3C208iOAN5iJKQjANhtmbicCgwxRdZbOlC4zTIMtYPs8T4YQ==","signatures":[{"sig":"MEUCICdZ2NbiJZ8r8WavgF0Sy7Nil5Gd4zzelPv9p7AulyE3AiEAz0ucgamIoTg3CZEtJLNHtbGjP8p7caFdzSP5KEE4E8I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBebBn8Jrj+Do98WNVm15uikls7kMT8W/tpW8mTEloDDAiEArgGjRyFm9zlehdpSwc/yYpzi638ADomSGprYlbRxbbM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37157089},"engines":{"node":">=24.x"},"gitHead":"04f00782552efbdac96f1249e90befb87d6e90bf","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.2-76828d3-202609070549.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.2-04f0078-202609090852.0_1788944356279_0.8529768725396258","host":"s3://npm-registry-packages-npm-production"}},"3.0.2-04f0078-202609090857.0":{"name":"@flowfuse/flowfuse","version":"3.0.2-04f0078-202609090857.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.2-04f0078-202609090857.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e5de86ac807e0a8d274c08fe43f21269032a502b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.2-04f0078-202609090857.0.tgz","fileCount":542,"integrity":"sha512-VyuHcUgc4zL/m2KjU55/kmFt+EChdjviFRGzW6ZaNX/wLOLmF5FBAu7v1v0JHAv5/PIqwdWT1rmCX6KpybyDSQ==","signatures":[{"sig":"MEYCIQDHUV970YEBXb/gA0Oh5+29OsC+BJnGT72E/mKubXyarAIhAIrHX61iqI7E6ifKWX0tKKukX6CDpw3jhQHEkDzhslqY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD97NufRraZlsd2zSv036xkvQ4mHuxammP3hrMuCthBrAIgYjl+BoxjyLTJkKnrfT0sAjAV4p7QJcouiIpoJlQ6lMk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37157153},"engines":{"node":">=24.x"},"gitHead":"04f00782552efbdac96f1249e90befb87d6e90bf","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.2-76828d3-202609090851.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.2-04f0078-202609090857.0_1788944745884_0.9031497392771219","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"@flowfuse/flowfuse","version":"3.0.2","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.2","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b5b7c525ca287bf13eb9e52312b0676b14511c16","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.2.tgz","fileCount":542,"integrity":"sha512-p6wMCT0b2bcpCq8eosRTKYYrYixAu9YhRA16DQY0glB9HoeEBBUOEVkyTE4CrukxS7P/drfEgt/X/GYsmKj9FQ==","signatures":[{"sig":"MEYCIQC0bHCW6MTlnt451UT0qLruzXG2HDSoxJVXCLV7gHLK8AIhAIDrfouLoyJb+m3w36UR38Rz8dGLNKDZdMSPrg1rRnAE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGT8xO9fE6zyrfiKjRK7O5kZBtte0f/qYn2xZdAS40DsAiAZrV51WhKyOg74LFOoplK3XwmmCt3+5b9l6+3yhLtSCA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37151568},"engines":{"node":">=24.x"},"gitHead":"cbc2fff79e1106f5f8318c9ab2559453bc11985a","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"^3.0.2","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.2_1788947333667_0.8491688111869324","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-cbc2fff-202609090942.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-cbc2fff-202609090942.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-cbc2fff-202609090942.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e2feb15ef6db865de36948f0e41fcd6e1ec92b55","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-cbc2fff-202609090942.0.tgz","fileCount":542,"integrity":"sha512-KYdFihSDZ9B4jZfn9n4OYHTZI+jfKvHCPWdvxCacmMlC93zdbW/uTIvDcGSQwMj7PKxUZNQzm3Gju7YPVKj0qg==","signatures":[{"sig":"MEQCIFyro/71QQUgr/ga0aCUdTUcwd1YNL07pT0FiK6eH2iJAiBACgpt7w+/KRnC6rK5x9/H/sM92X6xZDN/00Q5KnntkQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFnztC5XK1g7CdJQu8GufRn+LkmPhJao/TIuvXnvN4bBAiAdgvyZ0YwtPxLOR0sgDZd4ebhBYR0tqHPKic3HlsqZcQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37158231},"engines":{"node":">=24.x"},"gitHead":"cbc2fff79e1106f5f8318c9ab2559453bc11985a","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-aa4a58b-202609090857.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-cbc2fff-202609090942.0_1788947574755_0.6218425587042551","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-476b04c-202609091304.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-476b04c-202609091304.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-476b04c-202609091304.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"03ad2a6e1af481fc659cd0037428692a98683b73","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-476b04c-202609091304.0.tgz","fileCount":542,"integrity":"sha512-yIO5SVnG/L5GgSXUuMjdrSq/h79JMbHM0TYj9xBQZLG8AGU1ZyaIuNKDJfYztbeNnhe4UtYGj/WtyELu2F0WaQ==","signatures":[{"sig":"MEUCIQDNdQYzcJJOJpaaFGHhcxUtj8gdoqtS5j/KfJcGNR8FnAIgQXhumQaGIllAdDXf2ISeox70lIKk4ytNF1MLnwjau90=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCUjBoYN/b0yhEurDo5mA8HSBILKAuqz9vZWpshWgbNYwIhAJNKqMKH9VO6JDRN/FjmI1hSRF9nGidMEnEBcVNEkLhh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37163832},"engines":{"node":">=24.x"},"gitHead":"476b04c713281f38af763a3ed0387e71147fc560","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-aa4a58b-202609090857.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-476b04c-202609091304.0_1788959811439_0.6632569372698323","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-2c0e87d-202609091414.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-2c0e87d-202609091414.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-2c0e87d-202609091414.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"92242c07e14c514d777e217625da44774b856c07","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-2c0e87d-202609091414.0.tgz","fileCount":542,"integrity":"sha512-C1C/iXCQuEo3mMvFoZwDCuR5UVNG7l63q9MuEH1t+uzKWLOxExHR/iOs0JzUmHuWXxNC/oNd3cWoyFVk49nfCA==","signatures":[{"sig":"MEYCIQDQLkTKWByNmgsp+eZQqjJqkA5c2p+FXKuf5a4knSn0QwIhAN8iPVhSaudi/7sPny3mfzWWItfDeaUMra31Xybmm2yb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAYmoLVv2TNwJ9DEhO3owvrLTVL0JPSnStQqYSmV93n8AiEAtbWr1L7ij2PzcPoBLns/jmn/7kICF+09D58G/mfnqzU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37164843},"engines":{"node":">=24.x"},"gitHead":"2c0e87d8cc2ffaf77b1610ed3d956d28449378af","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-aa4a58b-202609090857.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-2c0e87d-202609091414.0_1788963788888_0.14832147634811998","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-036aafe-202609101010.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-036aafe-202609101010.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-036aafe-202609101010.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8ae2767bf8681d8e137f759abefce99beb98cbb8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-036aafe-202609101010.0.tgz","fileCount":542,"integrity":"sha512-OLlPS3CZ6ZwK+u1XJN9ByYJUiuj3l7HIRQ+2JyocUBmlWN7VDnE4BiE8EsR5BO/8k+70TNcY2BUasq8FIDCOCQ==","signatures":[{"sig":"MEQCIFOF3RZSl4h2xgIpeU78NM6uFg4p2g7dxs3DtGsxAIGnAiAq786PMd9/VqKekLtgXpWQKTkasKpZkG9FfQzA2Z9ehA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFxlXFBJS4cFYbbNSYLfDi6zEv7pk4rHXBML22TN3uUZAiEA3oaMptG6LLRBS9Mm6uNqkSbJPC/d5o48OatgxtA9mjY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37168535},"engines":{"node":">=24.x"},"gitHead":"036aafe4c7a078be9537fd4ae9f495ac8139c9f0","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-aa4a58b-202609090857.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-036aafe-202609101010.0_1789035456625_0.5826673502108204","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-b87e500-202609101403.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-b87e500-202609101403.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-b87e500-202609101403.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8c70e8406214df9f280245e0db388e33bd52d4d3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-b87e500-202609101403.0.tgz","fileCount":542,"integrity":"sha512-2g1QLeDeJOPkaHEfdcRPO5vseIeoEpppkNYqxf/jD+psT25lG+jqPCXAHDD9bt4l2aV54bQNFuql+tsbfVjgOQ==","signatures":[{"sig":"MEQCIECYrh1OUXnzup/++3wiuQ31ynTGQYv+1Kn+LL/2Rv8RAiAih0jFESwbkDS5jCZxredZ3KW6zjqb/JXDJxJiYYQmDw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEyCnpLTvkzuF84RPb4q2Hnh97SzNEFmX/2VoqTlxGzBAiEAlM5MlS7p2kLmtCimWaQSdut8CEz4ZIHDzjwAoeequvE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37172371},"engines":{"node":">=24.x"},"gitHead":"b87e500d4bbfff362f9a30489af62d0ca8041298","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-aa4a58b-202609090857.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-b87e500-202609101403.0_1789049391362_0.31244688436330725","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-6afae7b-202609111143.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-6afae7b-202609111143.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-6afae7b-202609111143.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e5f68505ff3f937ce4c0deb2f5510eeddef196d9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-6afae7b-202609111143.0.tgz","fileCount":542,"integrity":"sha512-WG0toD1vG/dNKk3aiciJ5QTklt10SqGLcOIgJrv25X/JzB7IXwiK24S+290Z58rRefuoQuFYOmMs1g5wUlawPQ==","signatures":[{"sig":"MEUCIQC/d5Phk+WXpeS9O21HOMWbaarnoXoQKXCBRZitsawUVAIgDM44YQUK/b4oBJ1crlLEaBg74AGm79DBjKV4J5wC834=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICz5T0TfdBFNb5+MjwaSSiH98WkDNF1LNV+OR+qC8y1aAiEA4UhxfFjO1Uaxrphf1POce2Xn8fH15VN7rwzuif4l3XM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37179169},"engines":{"node":">=24.x"},"gitHead":"6afae7b5ab7a5803a7273a3e3a9cb54a797bf0d2","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-6afae7b-202609111143.0_1789127681767_0.7203806038698215","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-c37ae18-202609111240.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-c37ae18-202609111240.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-c37ae18-202609111240.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ac24f657a382b3e0888bd90d79d63dbf3d4fbde9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-c37ae18-202609111240.0.tgz","fileCount":542,"integrity":"sha512-5lnd7ubmzJvTqtTBkiNlehHTpW8SYtW9sWw43AZ/Zog7NL1Cj2BA4e+frTc9v7qs79lvAnhUmT4RAdnlOSFfwQ==","signatures":[{"sig":"MEUCIDZmCwVXyGAtg3Ow4DbQ02/enOBIzII8vCKMlvyclMR9AiEAlVRZOCWPOr3zSdMZTAglgLrCmahzKTQRmSuaIxE2EZY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIA6hgwO4+VbSaf02unr/WWuTBVpM0jhBq/Wb0ryl6KPKAiBzbDPUJhBh5qAIlo0llHoPeCR0tPvjtC5rDt45eaimcw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37188541},"engines":{"node":">=24.x"},"gitHead":"c37ae18a357733f7ba9a352ea03dda98d3307b50","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-c37ae18-202609111240.0_1789130848430_0.08135276149067816","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-c37ae18-202609111301.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-c37ae18-202609111301.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-c37ae18-202609111301.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8586b4495f85a10fb6853c6d7419bdc420e003b6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-c37ae18-202609111301.0.tgz","fileCount":542,"integrity":"sha512-MOpaU3ymSzQN43myEQUNaCJsOEWBYGz7TRJvHdtYSKjyXddoVaiBg9pTuAtiLd5X4ATrpvUMaqpggGOJJyRkdw==","signatures":[{"sig":"MEYCIQDypVQ2tGVynFm47f19Pcf9TpZKZAAoRf2yCjgigiG42wIhAOP55TcnA19AqrWcURUExvwAFR5H3nj6dc7jdJyjWdhd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDKHn8P4CJzulcC/lhSfMP4avpJAshNyaP8i9/Z7gwzPAIgYak7bzLqUiS6yN093/uJ07jVfotw9ugQzZzNPlvU9gs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37188503},"engines":{"node":">=24.x"},"gitHead":"c37ae18a357733f7ba9a352ea03dda98d3307b50","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-c37ae18-202609111301.0_1789132176343_0.8520999593505358","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-2cc29db-202609111319.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-2cc29db-202609111319.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-2cc29db-202609111319.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"714f9c9682b37e6dc437904212f8ad6d78af6bae","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-2cc29db-202609111319.0.tgz","fileCount":542,"integrity":"sha512-EJj2Fbh+MAeEo3nzBRI1LCoEjM8gdVqBDwVZA1UiviwXKPef7mvUBXMP/a1XfzsiC/VrqD/T7Jwu0Ok2/zB7VQ==","signatures":[{"sig":"MEUCIQDvgHk8IeFcfs8aH3oL7aNEOjhPb4sE/8aW6xylGA0e7AIgLFuG76wvY6u7ksVcGMsa6zN50eGUwDYQ/8JDfauaMYI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBKHlBpBvJyxP3e5mZIuO7nZXu5ziE5qOrCm18hWvuwwAiEAiGX7NDsRJOSFmKL00Kg3nWyogvaICnWk6H739+lBsPk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37208589},"engines":{"node":">=24.x"},"gitHead":"2cc29dbf0e3e144b7fd8706d86eb4ada8be7e95a","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-2cc29db-202609111319.0_1789133145441_0.1272533450521669","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-2cc29db-202609111339.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-2cc29db-202609111339.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-2cc29db-202609111339.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"140ee88b3889af26f4023cbd0a45b27577eb66d7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-2cc29db-202609111339.0.tgz","fileCount":542,"integrity":"sha512-ASKr5ch/wBA5ywIvB1G7Wk2rssHQkB3r70DF9T48vMn71zrQFIvHFPXNpt3Kh87OzXLrt4QPijBtp1iqng9FLg==","signatures":[{"sig":"MEUCIBXvUP4UzWzQBgDozi+7Mmc9kSJBnjh0B05GEkmY/itcAiEA3p7OyzM0mWStYRy5IHOuFN0VqGHhWk1YU/zrp7SvK64=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDtw4alDBgRF6yif3Mv4C/IaAQuKBBcfHso4UnXtnyk6QIhALh9LZDuEqQ1CQ2ca1lFigABlzb3Qh7Hj0JG3DSlggxc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37208527},"engines":{"node":">=24.x"},"gitHead":"2cc29dbf0e3e144b7fd8706d86eb4ada8be7e95a","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-2cc29db-202609111339.0_1789134379677_0.28067553908063747","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-2cc29db-202609111346.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-2cc29db-202609111346.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-2cc29db-202609111346.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"69704e3618a02ff809fb6276ca434f04cfe08832","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-2cc29db-202609111346.0.tgz","fileCount":542,"integrity":"sha512-wWdTnzNiZK2AsDsTgMQS6WSOH8vv5PKqA+lQkVNZ2n19M8tm4d00bfpOSgXamt4kjato03DplqmEGh3y4w5xXg==","signatures":[{"sig":"MEYCIQCxjMoCeiFhjn7m/epQv7uNA83Q7yf5mv6zatGykjMjjwIhALBBXWatfkZ9I9WkFPfrtpo1qECRyo2vFDJPa4wcVnSy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCtrdY6ezw3iQKlPW826PNpeU/78wVc37owwgjetTLtbgIgEf2Z4cdfLNUTlH0rJ4crwKBajHSlNaUSXXIaxDZHeCA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37208778},"engines":{"node":">=24.x"},"gitHead":"2cc29dbf0e3e144b7fd8706d86eb4ada8be7e95a","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-2cc29db-202609111346.0_1789134820660_0.7878354325741979","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-2cc29db-202609111352.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-2cc29db-202609111352.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-2cc29db-202609111352.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b9b099e096b1aee3952aceae26168c7e06fad425","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-2cc29db-202609111352.0.tgz","fileCount":542,"integrity":"sha512-nYMvnjecCiGyQ5MpOwiniqeUzu+4k9lgnugvX7i6guQpbIbuYYpFGCqe/o9xsQSv6/8fawZKw5X7WnAX4qNoZw==","signatures":[{"sig":"MEUCIQDWQx9WqkXbXJ/baAfBzjRkoV/OjPuCSoad1M8JHqJgWAIgP8RpXz5oBb+RavV1kE8VgYNLSw1hOL/Ky7VlnkrfqgA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGiOlfIa/hn5SRGtuaPwdT7yJt/+1UQ7LJwwuo7Nfux6AiEAtZQm14ulZfaaBkq9PIUdli/VKy8AyRUGYEIQprMWuIo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37208701},"engines":{"node":">=24.x"},"gitHead":"2cc29dbf0e3e144b7fd8706d86eb4ada8be7e95a","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-2cc29db-202609111352.0_1789135424360_0.14100799470289593","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-48079db-202609140954.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-48079db-202609140954.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-48079db-202609140954.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"44a3bbed5a7ed7d0d7239b8d66a5dd4d12a345f6","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-48079db-202609140954.0.tgz","fileCount":542,"integrity":"sha512-4QC459uCBJd++cpoFeiBLrJA/anbUPNubYpSKeTleSBXWBCGSHWQtSyUD81tsbJbyJgbsiHPEvhNOKyxEjO9fg==","signatures":[{"sig":"MEUCIQCnXjBQ+wedW0p5uGweVQUZ8MviiD501PZ9q7zvAnTWjQIgMfttjleNQi48E/aITFiphcVFdM5VKkeJfkFkdXgeG5U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCgtdAZnnS0b/Pj1fnq2ONWa7fiHiA4rvAZEbUO4XcMIwIgYSOP2GR019wePV4Xq6jPo344Hy9y6yOj0eDTiLGESCE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37210418},"engines":{"node":">=24.x"},"gitHead":"48079db440c08efea3b084772ff286b6dbe278cf","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-48079db-202609140954.0_1789380264987_0.042546427113471896","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-82e99ac-202609141007.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-82e99ac-202609141007.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-82e99ac-202609141007.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1d975e4328336d5346dea23a349108d1256ed89e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-82e99ac-202609141007.0.tgz","fileCount":542,"integrity":"sha512-qn59mhc9CuDPpvZNj/8HFY3EQYxnXyBn5ESnELOIzosTUm3IXTS1f7YuSzTQCDSQ/fs1Cs0ubOsyZmZcdTiyaw==","signatures":[{"sig":"MEYCIQDKm0L4CIv2h4asScadjDTYWRvgI1A5wTcf9AM2bqJK2gIhAPpIsQG+2K2sVEo1y8QsVhuZ/uSMYIi3suA2Ok7lrLg5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC+PUiSsiGOkkWKXzCj/ozkE8PXqJePS9gJ9PpM5Qg0BwIhAKIcS/ryc2WIKQVe1GOVqusVlwlGjpUYYYWMtM30DLNF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37297622},"engines":{"node":">=24.x"},"gitHead":"82e99ace68dbe4e7aea8837945d2ffa9ead53f6a","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-82e99ac-202609141007.0_1789380927327_0.44152361100260795","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-82e99ac-202609141029.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-82e99ac-202609141029.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-82e99ac-202609141029.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"16debae29031b5d93acf6b2b7e4dcd76642ad7e5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-82e99ac-202609141029.0.tgz","fileCount":542,"integrity":"sha512-+UoEiGjFWkxeKCOLDDHo3t6WAAqg5ggn8aQpUeWbHNKa9b7OphgKCx9Qu95HN4xemRlaQo7Dlrqmp/O30OZUUg==","signatures":[{"sig":"MEUCIF5ogXureMio7cYJbqfHNTqGTKA97IBlPaCY5bVnMK6JAiEAwxA8keUr/5mdlUMKYPxxUwUp2dbtM2KErhA2LJ/CLeY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHbeo+bCDadg1lQLDlPrw//bGVIm/3W55s5WpgQ+uIyyAiEAvr4my7OCBWdQ9xBVSloPwlOKwJeDdUb17/+IIWBzDII=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37297587},"engines":{"node":">=24.x"},"gitHead":"82e99ace68dbe4e7aea8837945d2ffa9ead53f6a","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^9.0.0","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-82e99ac-202609141029.0_1789382118643_0.24951445934658678","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-5843f23-202609141220.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-5843f23-202609141220.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-5843f23-202609141220.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d1d138fde5a43d07c17299b75347adb38be5b5dd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-5843f23-202609141220.0.tgz","fileCount":542,"integrity":"sha512-bdbj1ZNPnHrLmcewFoyrILsKGDS7/Fuh/ges0i47+cCftQrl6ZihwHJpmKYuxAv5OzfHLA8zQ0/WAO5LaI22SQ==","signatures":[{"sig":"MEUCIQDvLXNtisRpKrrqETUmeep/x+thUK0qhyScs5xmbvCRDgIgEx34ZPWa9icQyS/Y3lFOeb50V3xvdKU6kSp4XWZur8o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAzAsgLzHESnmvVLQvXpD1VgQXem8yEYcw6v7OPitvNoAiEAkaxiWzOjGmbCUODFoN0CDvsGHWdAVf1YNfvwV7hpkgw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37297499},"engines":{"node":">=24.x"},"gitHead":"5843f2373d6d31b89c0795705b428befce652a5e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-5843f23-202609141220.0_1789388838607_0.8339010627577439","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-d668ffe-202609141235.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-d668ffe-202609141235.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-d668ffe-202609141235.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"95229d21054b45edd90b33e5e5a554ef4fc76422","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-d668ffe-202609141235.0.tgz","fileCount":538,"integrity":"sha512-CfgpwxdkOM5RLIsHz1uqLymmBtOSkf1GlKX/Oi+IqmIkl6AmUDya+o1DoiabcdO6ob9BhH8Zt9LtEg8f5jMuQw==","signatures":[{"sig":"MEYCIQD1PPodlaYaE/2R5GNhpBSQCMv2qymB9rLDT0WZv5138QIhALXmiWqOPYRXzdJmbVqgfCDwxp4cDGQRvs0RWxAuYP1A","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC6peljAH8nxjJrDQygoKkKjdI2YDewlcUmf8LXff09+AIhAPOV6mZJA4N68wN5Ibqk+mGc2ljhQ7hYz4yKJPirXSRP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37432921},"engines":{"node":">=24.x"},"gitHead":"d668ffe7bd4602f1df034e1b51aa85d848ef7d34","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-d668ffe-202609141235.0_1789389768961_0.27083380003487467","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-d668ffe-202609141256.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-d668ffe-202609141256.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-d668ffe-202609141256.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"132729c28be59899bbf178d846f04f8f5a40bfcf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-d668ffe-202609141256.0.tgz","fileCount":538,"integrity":"sha512-TcPgUvpaISRamPhA3EYlCPFROpCQeeEL09B/Ad5AE5mfQp3Tv4213QgGIM6K20g4pXgD66hsje6tAPs8qDuujQ==","signatures":[{"sig":"MEYCIQDTFULGfZJvSX1+CH3dAHDJSDTphBVJPaazU4jnBCM5YwIhAINieT32UikJ9rhXGR8uldD0VNuLMSVdv9zbMyzGBXGD","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIFK1frVL0WjmusLH23zxJrI28wJu+HT3h1zEpY7XJBefAiAvY+wpsehULNcCPkQxC3S7h/Aj9J1XHPjLzpXp9o1Jbg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37433028},"engines":{"node":">=24.x"},"gitHead":"d668ffe7bd4602f1df034e1b51aa85d848ef7d34","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-d668ffe-202609141256.0_1789391006583_0.9514045591425433","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-fe5b27d-202609141319.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-fe5b27d-202609141319.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-fe5b27d-202609141319.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"92178173b5267ecb841af8a3814bb0a71b2f7fa1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-fe5b27d-202609141319.0.tgz","fileCount":538,"integrity":"sha512-uOMn3kBt/s+42dn6CyQ2gavF5eP30E5dppXKfR6m2X0ItSLn4DWvTYOiDjpRi87E1S/eoU0ujROwvFUh85wEEg==","signatures":[{"sig":"MEUCIFKomJTK4xVcK0AFDqRfvvk6vnQdbNfrthfI0IwAL4UEAiEAjQfpoM86t0cyxHkicrIAkd7hTis2LIhscdChw6qFS0U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGsDy07gUYQH7FLJdOIKaQSXirfq2SkSF34izovtUSotAiBRSWZwc5xVP4tvJqmU0N+7QV3nWg80SXjCAqgehd2qRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37433109},"engines":{"node":">=24.x"},"gitHead":"fe5b27d38d88e93ae084ecf6fafb622639cd30db","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-fe5b27d-202609141319.0_1789392474571_0.7489516737452575","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-7cc5c99-202609141624.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-7cc5c99-202609141624.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-7cc5c99-202609141624.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8414d6fa3df5eb71b8fa27d0058c96e51152a796","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-7cc5c99-202609141624.0.tgz","fileCount":538,"integrity":"sha512-zM5LYUe6JO7dn47d3zaBOMaX6EMwIkgWMHdj5aO7SmUwsd85okg+SO+XGufOkP/3aBukywCYGsL1Z4MWme+K7w==","signatures":[{"sig":"MEUCIQDZsjSYWaRhGz1hyei+gXFWtStOQYM3jyYoUT1njjXKggIgTTGVV8ianZAaBComm2wPRjdxKS9mEapms+hT6f+JVnE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD1UPaNyTECg5oBCb4mqCVZhiE6G7Ty5ClGeOvd3hSjvQIhAN9GEwwigfSPlmlikP/LknEIAhHkl4fdW4htFk5ini13","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37429616},"engines":{"node":">=24.x"},"gitHead":"7cc5c993bf706174a3e08e24f190248a6bb6171c","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-7cc5c99-202609141624.0_1789404040820_0.06514305368977369","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-bb96f74-202609141723.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-bb96f74-202609141723.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-bb96f74-202609141723.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d0139e69a6e2e331259f7dff96a09aa8c1de4560","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-bb96f74-202609141723.0.tgz","fileCount":538,"integrity":"sha512-9/cdsNra711/Yp1WUIRfrsVJAUCA+pvISV1Fn1nf4w/14gCcpyvnbahaxboWVWHVk5sC48RVpi1bYIMXMnJXhQ==","signatures":[{"sig":"MEQCIA4vA1vTzndiBJrMXkyVrh++elr4xS6ntWgPp1jtSz5nAiBOJ1QUfxLEdHImg0cFGQ3SSWvmno6nPd5k5AaUl0HPQQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEuBzPTuRUS40xdskcHJ16Y+jfoyX4mUobrBqyV1E7WeAiAYoMCrW8f8BIQ8JPkzamMckWX+RgKGGI64ZVxOHEhrGw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37299870},"engines":{"node":">=24.x"},"gitHead":"bb96f74ccfe8a7443ce2e430671d25b31405e163","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-bb96f74-202609141723.0_1789407090623_0.08155630273692238","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-223aa66-202609150914.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-223aa66-202609150914.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-223aa66-202609150914.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"3d6bb4fcf3c28fde8405323cd9d7b35516029033","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-223aa66-202609150914.0.tgz","fileCount":538,"integrity":"sha512-MFkOqnS6gx3mRukCTTngp3ZlSb1spUrKplq/0LpX8VihvLhsQ17XdYmQFDoc6uEXC2+SmNvU/omqlPfxyOBACg==","signatures":[{"sig":"MEQCIBqAIbDAsv/ZfkDXIbaecpJdKL7mg9ZKRqlqjbOtG82EAiAOhBVey07mR/DgLDWaP5j0V5xhUihrUk0IyZsE7Lh6VA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFglLmmLOdo0p4RHFw0X6Pa5C0TD45XOccPzV+IDJ36UAiEAzqUgIcHtWNGivm/RifsvsHdLuw9XA/McjDLsDbke1Kk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37299796},"engines":{"node":">=24.x"},"gitHead":"223aa662cc4c95880420061727b30f318cb176a3","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-223aa66-202609150914.0_1789464091350_0.7673676464349022","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-799bea4-202609151031.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-799bea4-202609151031.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-799bea4-202609151031.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9d023076c1bd5194c3337e9395a225145bbfafc5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-799bea4-202609151031.0.tgz","fileCount":538,"integrity":"sha512-tSth9RKWuWtB7cbUV7cjassihQyQO9cgh4HwojW6GYAmxeXDMaGejAXbx8V2o7cvjN4WrrQyY4uSF6zKJvoBUg==","signatures":[{"sig":"MEQCIBWE9vKp2FliyXIKx0Ffy9J60D35pM99WIGksx7F0LrdAiAENjnJoa+QoQioqyPcQ1s86pCqH3T5osYByb5UUq1osA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDSL6K2HeCff2BOpk6KITO3ke8rxHsTq0K+MYctuOMoOgIhAPVqRvGR0YbTnpAFqGNu0BaOCnhAnHBraZ2X4DxptCK2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37300693},"engines":{"node":">=24.x"},"gitHead":"799bea4e9d620cc25ad8f9126e43b71aca756840","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-799bea4-202609151031.0_1789468800439_0.693440082178032","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-b5c371b-202609151041.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-b5c371b-202609151041.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-b5c371b-202609151041.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0fd90adaeb65c4d25ea9e1ef39ed34c6f93ecc1d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-b5c371b-202609151041.0.tgz","fileCount":538,"integrity":"sha512-CXPO2HroieNp+F9Ku71vzU4nbw9Ad0oX03llIQnaqQZU5bWORVK89WXlK3glWzshUIf4ufR+CY0FL0n+HyIHiw==","signatures":[{"sig":"MEUCIC3IxYmh2LZvyjvQzRjymVHfP7l7LCyG7iuvL8ZJWzmJAiEAyFyKmrkB0SaQZOi0lpOEVu0IPjiLCc1bJ86WxM/uPWo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFePV8HklMBPKYSHcrUQ5IYxD153aqYk9EHmwnorvohoAiEAiIwFO5uk7bhspmJqtB0ntg6mctA/wRL12EvIGIlmxuA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37300828},"engines":{"node":">=24.x"},"gitHead":"b5c371b93e38362d43702897eeb75310cc07b06a","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-b5c371b-202609151041.0_1789469331552_0.9166515214172521","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-b5c371b-202609151116.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-b5c371b-202609151116.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-b5c371b-202609151116.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8d97c67a91fc0249b0ec8b8cd0b6e75895472e66","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-b5c371b-202609151116.0.tgz","fileCount":538,"integrity":"sha512-fStPUPSMdPiRLpK22D5JnWo43ftWp4mlapOXbLmqE7SKNxcXAgUbMOIOqazEf7FiyxtPeJMXuwPTCdh098TrZw==","signatures":[{"sig":"MEYCIQD+lkdTKf+bSGRo5r7iU6Jp+tVHVsi8C1dEs35NxMJjUwIhAOLEO0nV1plulJg2HOV5kt6ezLCemzxllS/wBhTni9Qk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCHpASk0qeyKHQSWnZSEuII+5j/hacVFue69qn2XfeSswIhALFLZaitoN2aKYkND/6zb5dGFvEEA0+5XCoaw60MbUaN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37300425},"engines":{"node":">=24.x"},"gitHead":"b5c371b93e38362d43702897eeb75310cc07b06a","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-b5c371b-202609151116.0_1789471342639_0.9849684313420584","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-3ea44d4-202609151244.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-3ea44d4-202609151244.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-3ea44d4-202609151244.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"38a8600445c80a362c5bb1ec25514695b5d99c05","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-3ea44d4-202609151244.0.tgz","fileCount":538,"integrity":"sha512-lNYuInSBDDocoFYyCSrShkD+1PSLHEU1bKLCeZKFD70+m8t9cnt7kIzZuKKz+UZyAgm/t/vzTL2l+YcVcEMKWA==","signatures":[{"sig":"MEYCIQCS5g2CuF1PJRJwEAPBiVJZ/ILAsORsGyPeCJAXuAA43gIhAKuG2N/0WxIR0MUSzLGVs3Lg9Mz8X+VWEH5X3X5+lkUO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIHGvDhSWhaT/KkIjDWjWsp0dXO0u44+OziYljkxhzGc6AiEAlNLs80fHkIjEfMiG2xbp8zo/Pya2BiVpCUi6XdPTuEM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37300950},"engines":{"node":">=24.x"},"gitHead":"3ea44d4737db08129c9f277a736d992420e4ca1d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-3ea44d4-202609151244.0_1789476757731_0.5744260277281126","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-aabc3c4-202609151346.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-aabc3c4-202609151346.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-aabc3c4-202609151346.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"aa2a4621278f89ce191bae01107aa3a6665b8ee2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-aabc3c4-202609151346.0.tgz","fileCount":539,"integrity":"sha512-pkueT5NegvViAMQ5QeEbky1qwTjVsPHw5hfZGvNjIOBsaKEMW+PjLGQ9yl3E+J2nCYJ7s+NecyxfjtkLnJ1k9g==","signatures":[{"sig":"MEUCICrxlzwgH0HxswrRqldvhBgr2v/0Dd4U/G8PIEc5yDt9AiEA/7iQpfrbK8U8cEXvjXBoO8VBxtQJxAgs51TIICqvlIw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAQ5hc+xjqRdpyGQh4xdVVykpg33z3Ik9rZL15Wt9/6eAiEAgZa5Yc9TfHPRLq1LWXO5VmgXsVXha7qNybr0Gic9FRE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37302888},"engines":{"node":">=24.x"},"gitHead":"aabc3c465db8866b52816883b05c0849bc592a1e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-aabc3c4-202609151346.0_1789481108902_0.8280094777100158","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-4d1e317-202609151411.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-4d1e317-202609151411.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-4d1e317-202609151411.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d916595117dadd4e3a19dfb55c7891bff7af2d1f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-4d1e317-202609151411.0.tgz","fileCount":539,"integrity":"sha512-pYg6O7opTpmtiGhFjdd+9aFj+Zq67r+J5bs7Krlnk8ANAlAOOJu53YYPw2rd0towhJGF4plvdObEEzrqA9rY0Q==","signatures":[{"sig":"MEYCIQDDMja+DGxK1tzOxSVDbJ0Xasp+GFHGrElajoZIEqFdTgIhAII5sgV+CkPe+aSLjpgN0IMcuGoxF4G+Ej5Pnn+7bYRe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICam+Mbbz3htAEdYzIpgy8/mdd/Gm7RvclYxiIs/pXbpAiBLmPiBO8+dTAgf31WzGXyZB0ZR8AeRe7AIpi9YWud0UQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37312715},"engines":{"node":">=24.x"},"gitHead":"4d1e317ff6b0a53f68beddfc98c28d36c0f51404","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-4d1e317-202609151411.0_1789482386978_0.9077600840291578","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-e3e986e-202609151839.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-e3e986e-202609151839.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-e3e986e-202609151839.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1944db7ae09af7cccd448724866161c0e3a4d1cc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-e3e986e-202609151839.0.tgz","fileCount":539,"integrity":"sha512-JBNCc7SRwLC/KvJVQgZZaQl7nolfTHrn5iiPCCM1Loaw2Y5x3svZbOJhbBqyULueEFV1SiPasNzRD2pgKdsjXw==","signatures":[{"sig":"MEUCIBUWENBpR4ZQaEtrxEQRrWVbkjFoU2s/5Kunz36K5sM6AiEA9ees+u7mCOtbxW308Hs7ab6RP+s4xKa9kXk5dCGtu1s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEPsLJJ5KU4C7YsTTcLySLFM23hU7SD/6G09R6tTvMCxAiEA34rjm2Rolxy1Q4L1oPKhrlo7O58DTm0I1T0HSCW4RLM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37315097},"engines":{"node":">=24.x"},"gitHead":"e3e986ebfcc2c62ef3197bae7088c0668883f93f","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-e3e986e-202609151839.0_1789498055942_0.8834892778799734","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-f74313c-202609161038.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-f74313c-202609161038.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-f74313c-202609161038.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5cd6246d5610329e814d7bb0da6826260498fdd5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-f74313c-202609161038.0.tgz","fileCount":539,"integrity":"sha512-x5DUirbKKErrSCX/JkfpSyXOaNYru6eY0LgsMZJitCtNiZRL/fdwiep7dg4bOaGavx6tbAj6PqibIFc3dB3CJg==","signatures":[{"sig":"MEUCIQD4B24+ff/Z55pcOQwd7HBDW/7idyLVG1tRWYR1UzT/qQIgJ/52X6hsXo5An0C5m6+viBityRh9O/xqMhY5bNJjPws=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDIqsoK69H4IX9GLitvc053cBJdd8owf3DG1cIVLhOCrgIgTIn/veW8DHlF9OWh1khrXi8M4RSCvn1lgxlJOOhNRwI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37315440},"engines":{"node":">=24.x"},"gitHead":"f74313cbb6fd8ed973f32b91700ae5b92b8700e4","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-f74313c-202609161038.0_1789555533624_0.4561515203752866","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-5eff32c-202609161209.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-5eff32c-202609161209.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-5eff32c-202609161209.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"afacf5ed6258ab5c81c52dd62833948605c33bcc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-5eff32c-202609161209.0.tgz","fileCount":539,"integrity":"sha512-LMhq8C96uI0cZWinELiZMw29c7FedDGkCn2n2K8+kbnkZxzaJDj5YU1x0VADLFW/5eOHODKPxcoVH0YwgEcg8A==","signatures":[{"sig":"MEUCIA07Wv+LXrO+v+ODkj+bBvMWKk3U8qr1+pfPnkNwIMWhAiEA55OdqnGGk58KNVCfq41FGg2P/DeXjafVaRQE5r0N5s8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAQGazKNvIdDjcFmHzUw7A4wX+UlxSzqCZdMPDLOTG5KAiA0ndglWWfcSIxNCmems1AVnfdGOexqcejuQQSxmf/e5Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37319758},"engines":{"node":">=24.x"},"gitHead":"5eff32cbf1bd2bd977d4df23ded4a3a7de5ff311","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-5eff32c-202609161209.0_1789561073544_0.15838740921861016","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-2fe8628-202609161237.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-2fe8628-202609161237.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-2fe8628-202609161237.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1ba7a4f8bf2ca0355d0568646386b24ac055cd5c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-2fe8628-202609161237.0.tgz","fileCount":539,"integrity":"sha512-dE0Pmpf10f//qjsFhkZsFxJdJiX8ZCiIbv33qj2kRKlAAJ9ayCTEs4fR04I8R6TXCkmfSKEMTwlmNrjS/0DQGQ==","signatures":[{"sig":"MEQCIDyxF1SWshvec7fdkCRy9CdgVsxaU77prNr/2YjQOHR1AiBm+77Bi1EkCQ+SVd03fhN4wxDo3yDNZdDoXiE1QckEzw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCLLl0R8SJE2MtKwmRZ5vJ2ZiMxUGyvwSGNOQJDzaomwwIhAMvS6KlnUZI5aBL1BThslJPaOyGm4vQW3mEmPYo9D0a9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37331723},"engines":{"node":">=24.x"},"gitHead":"2fe8628006b73b309d068ddb40d056ed48656ec8","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-2fe8628-202609161237.0_1789562710589_0.147974509418471","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-1deddab-202609161419.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-1deddab-202609161419.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-1deddab-202609161419.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"645f1d42071082a5fe0236d14dee1bc0808410fd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-1deddab-202609161419.0.tgz","fileCount":539,"integrity":"sha512-KFvrj2Gy+w/2UNjLsMSQGJCA7zHvaSBN8FI67DiOmXXikKHkXECsoPckws8gcybiRMMNsUo0PSvmH3oYbWZ3PQ==","signatures":[{"sig":"MEQCIBZn+a8RJ5qtobHfFXwyxJxr/FfR1Y6oPiRwph1+PpUAAiB7vV2MqL2Mrw6ODoH5GYO5UR4UwXfyPnwupg2H9w/eaA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCd/5HdoLB1h/Y4rwhHE8LChQ+oDUqp23VaLWAbxfgqAgIga0Z2WXru5xqrhAevjefthXhPCex73GYcmQkI6Qf3DTM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37333505},"engines":{"node":">=24.x"},"gitHead":"1deddabad4fa4ea4c953f4c190c6d7e2da5b64ae","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-1deddab-202609161419.0_1789568827307_0.18251902050431035","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-07c6586-202609161505.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-07c6586-202609161505.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-07c6586-202609161505.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2337bbe2e80ef26bc3c36787315b032f40ffb6b2","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-07c6586-202609161505.0.tgz","fileCount":539,"integrity":"sha512-CcG1v+LMEBwDKaB0RHktmgis/tYjypZ3ZskYEUlTcR7d7XM4YPqmJYnA+dALCzQ6Ri8zN6+B9k2ikfivotnYJA==","signatures":[{"sig":"MEQCIB6mS0NmMCVSvesRdeR10PAMDLKOFo7p4Ke0kNb6a79mAiARo9mQp/s5myHRscys14EzgnIh3dUoh95LzfPgE90iiA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIB2BDCtDbxGyP1sCZXjRqCznqVfjMDN8ViOq1lW9tSTlAiEAhy2MgrOT9iTe378BdQzdHNdoi8beaF++Tp0KJWgGpmA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37334775},"engines":{"node":">=24.x"},"gitHead":"07c65865d4969ce5d3daeb75f63310d286b88c3a","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-07c6586-202609161505.0_1789571596472_0.6918884431945802","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-d002b57-202609161701.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-d002b57-202609161701.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-d002b57-202609161701.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c195017c827baa3a87f8bb27884689605828f3ea","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-d002b57-202609161701.0.tgz","fileCount":539,"integrity":"sha512-qaqUYS/yY5olBCPBITpge+LgPGojO6mrhUYgRXWFOdBH62j4qlsohxsJosFhnygEwob4/nhf5VvFiJKyAhCGmA==","signatures":[{"sig":"MEYCIQDSvQY7Qn/nRcu7JnHKR6QrHp9TuKZGIFfLnZvxzGA6QwIhAKi6M73Z0O98jwazM8Kd4R0EZUlIydOmMqFPqLPJR1Z0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICrPmTvUwER+Us+0VgA1EMPnzVBsao11GmmvTsgIxEggAiAmx6YSky16mYpdzcUsRHdOHyWh0M3w/+f7+w9ZtCLmLg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37343578},"engines":{"node":">=24.x"},"gitHead":"d002b57fba22937d56c6309b0bae19b068bc4ac5","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-d002b57-202609161701.0_1789578561987_0.7306636939053139","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-cd214b5-202609161729.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-cd214b5-202609161729.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-cd214b5-202609161729.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"11ca181a7e0456c09702d7ddab4a8afb9bea9481","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-cd214b5-202609161729.0.tgz","fileCount":541,"integrity":"sha512-e80h1ok+a+bfInUnC1eobozDG9Tf55/NzjpD160IHzu7Xb6ISYvBX+JGALi3G45WBr4w5rK6Gba2dX9njG8kSg==","signatures":[{"sig":"MEUCIQChCgw2H1UcXSgplMj260+vlCOEPb2ALSpWPqPicSkajAIgcuLfyNKRsi9U3+nnhlMAmcwpE7dpR6XsLmBbijeTzM4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCdGoS7V6KcDO6bjDadyLZ216+LHuJdttz2zTE3tG3DkwIhAI1QnM4tZzbXj2qGt7at6BA9iSO3B3RLKJ5bcvpQTF3N","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37351524},"engines":{"node":">=24.x"},"gitHead":"cd214b51312f87879b0c7e6854a40bcc674c0417","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-cd214b5-202609161729.0_1789580251360_0.6655863864461662","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-3ff4516-202609170900.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-3ff4516-202609170900.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-3ff4516-202609170900.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"90c59f1b8ffd98f29d6bdea2b70ddc68f6fc80dc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-3ff4516-202609170900.0.tgz","fileCount":541,"integrity":"sha512-FoA4o9/C/xhZAfVrgE2mDLwMXR60UIuGp0PEOAYOUInCr4BQo+KWMfpU3laJOCHZ4e2cMERenhiUyJ2jCyHWVA==","signatures":[{"sig":"MEUCIQDMeaO7u68lLjKtR11xoqLO1e3jBB4j8ayMPRm//Ba87QIgTCEgorXoV0KbCkOkOYJqD2cpzRKxh//3K+orlPiuV5s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCq3VZbIINdmZu4XeXf6DjkITIG0bIUme9FwSwJftPDWQIhAMjnYFh0q/j4nOlc2k7Zp3zTqr4E+gE3OCw6Qey5A4cA","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37364831},"engines":{"node":">=24.x"},"gitHead":"3ff4516cd18f7ca1646a68f024ce645af53f7a2c","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-3ff4516-202609170900.0_1789636097440_0.39928098240905907","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-6f31cf8-202609170909.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-6f31cf8-202609170909.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-6f31cf8-202609170909.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f3cf86d0b21bc41a11e6d19b9706f8ad3c9d646c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-6f31cf8-202609170909.0.tgz","fileCount":541,"integrity":"sha512-Pas+RN7FAwW7HGkbPh1Q9jPklEjPZb7dJ5PL0dni5NgJhjJz05Yu1Yu9QFqU12eH5qlEr/vUUSd+VpbxFLAxng==","signatures":[{"sig":"MEUCIHcNGFQ+sYyjesgLUCGeX9p2YKGIIIC7Dg9M4bXAtGRpAiEAo1qQxHNuHFpraVnW8Qn3btawuj+RmwJmGk3My5cvnsI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBQqBBLy4Ois2Ez/jmZRtn4HWthCgUFDxNmDXvDjM3DaAiEA+pIFwPucbCI0ZWquQTDuIMN5+ZZf+Co8T+XpFs6680g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37365752},"engines":{"node":">=24.x"},"gitHead":"6f31cf812df3d065695ab8e8bd03174d510e2107","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-6f31cf8-202609170909.0_1789636570687_0.9947420426100901","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-6f31cf8-202609170920.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-6f31cf8-202609170920.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-6f31cf8-202609170920.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"0bec1dbe2dda4a7fa2560956360e47fd7d82b91b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-6f31cf8-202609170920.0.tgz","fileCount":541,"integrity":"sha512-dIb4c5kGPnpCkKkZodXU/M5vIZQ271W/LpUskfc4qeP+jrFpZ5+SvzCT1lvo7z7qKxWbDZaht5Mo6T1hvBBcNw==","signatures":[{"sig":"MEYCIQCg8LjQxlnqRzr6r/T+UgqFQyWyVwo349Pm9N/qJc8+XwIhAJ5jX3Z0FpesMiEE3J549phUH8dQVDBR+XHCQaxb1MrG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICfZdYvDivErHROZ4w0DbeNqWYuz8vRYZOFUoh4MA1rpAiEAkbJ1VF2+0r5KNYq/OVFBkfZv81lvUcE2XWdoH37ZIEg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37365582},"engines":{"node":">=24.x"},"gitHead":"6f31cf812df3d065695ab8e8bd03174d510e2107","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-6f31cf8-202609170920.0_1789637326846_0.8103579443198277","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-6f93bc7-202609170952.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-6f93bc7-202609170952.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-6f93bc7-202609170952.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"afec4ca8cedf700d751691826e7bc73fd8325758","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-6f93bc7-202609170952.0.tgz","fileCount":541,"integrity":"sha512-WgDagPtQXcTu6LMmmTv67F2GyIWyiRuk8xn8U5K2TJMMZ3/h7XOkxjSK8Oz3eudF/djFE9Op4PGkbCSZFk9EOw==","signatures":[{"sig":"MEQCIExYwPA8D0m0kr2U9PSLtqXVVP2hJZELrSWO3aV7ObrgAiBCxKZZGfq/0WTxfbuX4H35W7wfEHmLMpNXZweSgbFhHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCID7Ko/t8BN75MRzGqS+4IMltwU52szRQav+60RoYludXAiBW6r16y36FLfl1nXyCHT/K8lRy8DnDnmIy+YW1BaVMrg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37366725},"engines":{"node":">=24.x"},"gitHead":"6f93bc71e10ed6f8462c392fc97f485da935be20","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-6f93bc7-202609170952.0_1789639316531_0.837872684496971","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-6f93bc7-202609171013.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-6f93bc7-202609171013.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-6f93bc7-202609171013.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2157369708943d0a0d259d3379cd45493418eabc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-6f93bc7-202609171013.0.tgz","fileCount":541,"integrity":"sha512-1PMMjfOzgVUwiwed0E7mRmKSasFTC7cweAomJI3qhs2uzPbs6N+VwSFFXBb2X+NS1SYLkBvLrAD0CxF8rGEllw==","signatures":[{"sig":"MEUCIQC7lPJlHd9PCGPnQ5JLJfTDHj715m+54Va4XcVmY6JiaAIgcH6nL0k8OB0Z8FXDzBb7DahywSoDYKcmd4KCu+/rMhY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCVd2Ae3BAc3LhlXpVgiaXVIXQEDp06veSuM7pWSgWW6QIgBF3Wyr2J2+oChTKUj4HlS96+Cgq77WDs67+0M2B/05E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37366245},"engines":{"node":">=24.x"},"gitHead":"6f93bc71e10ed6f8462c392fc97f485da935be20","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-6f93bc7-202609171013.0_1789640486492_0.19547882750813383","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-500b2d4-202609171128.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-500b2d4-202609171128.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-500b2d4-202609171128.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"06c6314c1cb88143df8c6b4fa53ce03cf403ab3e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-500b2d4-202609171128.0.tgz","fileCount":541,"integrity":"sha512-P/CZv6zJIwmFohfmyiRD7Uz8T4jhLk+qIhjUVYd4qjIy4hl3lji7iFj/aHGiKlmFXx7amHakH8w67kdNBBsAcA==","signatures":[{"sig":"MEQCIAGnI99kZ2oE38O8hpYkzPQNj6aYM+iDiu8RYjeS9QrJAiBjhwPA8mKvaBu3Qsc12wuF2iY3KYNEWgs2NZnTPmyJfg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHUtpI7IFCWU4Dc/ku9zK3/L4RlXNAebiyYr3agwdbSwAiAwYX+HwZjqrhZYQsx4Th5lYgEOd4KsSEtDD/TXTltKNw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37420723},"engines":{"node":">=24.x"},"gitHead":"500b2d451842fe258a32ff75cee2932e446990a7","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-500b2d4-202609171128.0_1789644890935_0.2099555501407515","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-75ef6bd-202609171254.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-75ef6bd-202609171254.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-75ef6bd-202609171254.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"b6d36b983d2cbfceefbdc3eea73d28f83c4a695c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-75ef6bd-202609171254.0.tgz","fileCount":541,"integrity":"sha512-IbQu11+6a9yrWTbeFPMG/bjfYPuku31J2N9ZwpQ+k08wqQqX+sWwjwCzURXZsOMT8pdo3GkX/dGurC4R9iickw==","signatures":[{"sig":"MEQCIEV7cXcz48mgvMnIjJRT8yTzTuED+7cBwFIL0NzBbK2mAiBv4NA4A16yX67iMGFlIOfDnRqNogVkay0BN5BxNF+Iwg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDQmTjrxbv5NzrykcMUk1bMr4HMiSgM4a4ajDby+4XnHAIhALpcCV7WT6cNpocwc2gixyVORAG+2Th07Nl9i5rmY3f2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37423335},"engines":{"node":">=24.x"},"gitHead":"75ef6bde85401fde2e08a58050b3c0397188e3da","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-75ef6bd-202609171254.0_1789650774790_0.5163310647983652","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-09a912b-202609171413.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-09a912b-202609171413.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-09a912b-202609171413.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c26572091d13ef3e8fd36f94cb23a61d64b3fa76","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-09a912b-202609171413.0.tgz","fileCount":543,"integrity":"sha512-Sv7sbtVD4n+O6H1F8k8RdPh+1SN4uTAw0JsCnflQ3eqeBrrh6AJs/2g/s3p1oezORBEy9iAY3rrcwzTKqfe3LQ==","signatures":[{"sig":"MEUCIDwBi+lQF02ekACF6G6Kjj71InSb+8KKW2DRcWhPb4CxAiEAssqAckvJ7As1eTkhY6a5lX/lHD45ebzDlZpSKa9Q4oo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC8qEKik6RahtTCdKLM6yE05I1vgMyizxp7JuYaTPOCzwIhAOE/Hh88LAUUxOnJdnFNEHDvcc8pZmwPmTsr7Ecgu1nf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37433314},"engines":{"node":">=24.x"},"gitHead":"09a912bbcc369e091b1105ddd07fe506f9c4c72f","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-09a912b-202609171413.0_1789654881839_0.15964194916224161","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-09a912b-202609171455.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-09a912b-202609171455.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-09a912b-202609171455.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"067f103f13522b3327fe1deb2c6f30d213c23d86","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-09a912b-202609171455.0.tgz","fileCount":543,"integrity":"sha512-zbWZWzuvzP9u7LerwtjP/eo+EjGW/Y2JyuXFD0I7lxzJr2ybjCuqjHjoajYF8kX5EVXjWP+9IVnyrmXfPcmuCA==","signatures":[{"sig":"MEYCIQCYw0w7m09i69ofKdhDtOGLVKsRKRO7axcZjAwoM5auJAIhALBLhIoa4MHSxRorHt7uds/t87EwcPZh7tHZAKWTOMoS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDMjnzo3dgDn/8TUppuCMshKQpbFlfOnB550P4LyR1tKAIgWpceOGfjyjwFTEIIlIt6My7GPeG0qCoqMXvAxz0YufI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37433373},"engines":{"node":">=24.x"},"gitHead":"09a912bbcc369e091b1105ddd07fe506f9c4c72f","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-09a912b-202609171455.0_1789657312789_0.6217881369570941","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-c6007cd-202609171700.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-c6007cd-202609171700.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-c6007cd-202609171700.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a1ac6d9f7c1c47e9cc1774f1e19a9f576ba16e56","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-c6007cd-202609171700.0.tgz","fileCount":543,"integrity":"sha512-FxSP1BcN7HFFPUKo7A1KWRxxTMHIXbab2pEYwsZgQb8/Imp8HVWQgdhOWeqVNMey/FsoNutZVtq2xi41xpvPDQ==","signatures":[{"sig":"MEQCIF562fq8Lk4lFB6Pf31DheEknY0ZtqD7XOAKjF0jdTZlAiAsZO+OpEahHqnxE3IgwZBR3jFME4AKQpIb8/W2aAsCBg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD4sS38+zJ51lyp2SmwsWcF5nKL4J32ndZ7ld5kDUsl2AIhAIgHrfzny+HF1EWWimrO+uIrX/c/LgbsTP/6TtaXiITB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37447644},"engines":{"node":">=24.x"},"gitHead":"c6007cdde90e2b7b2278f568d5d885c9b10b71db","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-c6007cd-202609171700.0_1789664882902_0.24799317197454673","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-addb6bf-202609180954.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-addb6bf-202609180954.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-addb6bf-202609180954.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d3d0d97483b23a5dcf14c461ef95a0bc2cb8dd91","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-addb6bf-202609180954.0.tgz","fileCount":543,"integrity":"sha512-G/t2/lwaSwpdCvJgDN8T6yrdDX2aNSplLBKHdueoRNFbtB9llDV8nBWAxWc7v8u1f+/cM9FUt3SfBYstb0ogjQ==","signatures":[{"sig":"MEYCIQD4H8kZdU5XJyAWvsjMJD/PhOhaAAk72Oobn5ZPgdeODAIhAMODIVuQhzDCtOe4JWpRKf5+ZbSW2zN34IWVvcLRZ5Qw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCiTvHxdEhqLaV8OTbrxCwWBeZH5rUmVIbJLuqkkljFpwIhAKH0AZ7OLJmQzmu8L6VvUMHgUs9ecHDgqC1ZJsTmPkni","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37447790},"engines":{"node":">=24.x"},"gitHead":"addb6bf0daaebbd32d71c090323943280cf9a758","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-addb6bf-202609180954.0_1789725764707_0.9571359466821132","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-743ae9a-202609181233.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-743ae9a-202609181233.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-743ae9a-202609181233.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4533a53f24dd215a42a3ef7cbca83d0f175c78ed","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-743ae9a-202609181233.0.tgz","fileCount":544,"integrity":"sha512-XL7I57CtgcJ5euUngPuiSXBm7tEb/oJVjPa5ek1FoCVimTvq0c5S+MNG0pj2u6V39ffIsC+ebYMnqzthpS/fjw==","signatures":[{"sig":"MEYCIQC47IAAZDCM2YME/a6X37o6bwu0qhUFhcnDfgSTEDnxqgIhAO80SQXFCrFlV0cvBmbyBrKpekxfqgDrpSHFrttwVigT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCuN75lmJlPOhyp81tYKxGQnoiDFkTXZqRNIMO6PZDtvQIgDnnROGOFseKvRpPEU6pFA2KkMUZ0qyNjNWR+viRnLxY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37449429},"engines":{"node":">=24.x"},"gitHead":"743ae9af8a265d0981dd4252d45287e0e7f4f960","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-743ae9a-202609181233.0_1789735214606_0.5883370541147968","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-8c3cc3f-202609181401.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-8c3cc3f-202609181401.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-8c3cc3f-202609181401.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"87483495db20996e601cb96557dad1e47e82756d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-8c3cc3f-202609181401.0.tgz","fileCount":544,"integrity":"sha512-xYbQmQ+TMYViahPWLnCwd/AcYDpB9M9WIi/i3Xmda+XcX6dJ18S1DRXiyyCvHyuWryDRzFYu3k3qHaaWbcS8Fw==","signatures":[{"sig":"MEQCID7XzW3iiRuek+IaHKnMm14L2u6wSYEEcrHnavzHZnPFAiAQEYg4CcDf+2GY5b7ydql63FKPKinPqIkEVPINEkh06w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCBSbPPM2XnchGJu9uuL29nVpSOC7Np198+xqGc+ahbPQIhAKn1wl06Mj/wKbesBA/EZYEGfTOj178JOVdHexrEcdY3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37466464},"engines":{"node":">=24.x"},"gitHead":"8c3cc3fb35eadb7a6040c0d1ec3d0ad800b86d1a","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-8c3cc3f-202609181401.0_1789740461409_0.15112005244795812","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-0f075c2-202609211320.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-0f075c2-202609211320.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-0f075c2-202609211320.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6cfd15094d11ccecae037fcc3044d6adeda288b0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-0f075c2-202609211320.0.tgz","fileCount":544,"integrity":"sha512-vXaMB3BQ8kg/c1jYmwn5AmDga1vHa9NS0fQCF2+E70wncD/Z04VeqREm2ROR2D+gDup4cbEWvGMHFnCGTRtQUQ==","signatures":[{"sig":"MEUCIBGCzlxsIID9XRcZ44BWFJm9B8/uzCPA4nup4Kpt83pFAiEA7M0xzvwexnuqkwKgKcThBQLAL5zV2ZT9B0lhhd7Ltdg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDcJan/V3aA7SOZUuI+oSveVtuP4rwyKWD/RSrYpbw9vAIgVVcDsQkOK6/zpz0Odui2/eXiqjFOHhIGJKpEzleb2G4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37484455},"engines":{"node":">=24.x"},"gitHead":"0f075c20dbbccb17e29e382f42bec5939ff87877","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-0f075c2-202609211320.0_1789997253411_0.877714286317766","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-50fed3a-202609211415.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-50fed3a-202609211415.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-50fed3a-202609211415.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4a08cb5dbeca68d89df07c645696dc8dee3ec866","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-50fed3a-202609211415.0.tgz","fileCount":544,"integrity":"sha512-cqnBoPCIwdKLYZG+4tJHHTR8F/IeWhhiB1jhhXD1RcfpDVC9nUrzxpKuoDd/0wWCJHE/U3EPM6ywHFodH+/f0Q==","signatures":[{"sig":"MEYCIQDoIBJPeNNXJpC1n8UhwG9ol0i0vorySYdHZMPGBgn1yAIhAIyuLcm6ozNGcqy3LuIK29TEHC9ooLmYJU+MMkR3SFgu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIB1QjoKcijjXpd1dbvjirW5glSDY+iMlYNsPdRGhfGAeAiEA368YWCIH83cOtw3EJgphTS6vKengjwL6pqZCfuvyg6E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37485134},"engines":{"node":">=24.x"},"gitHead":"50fed3ad1514d80cb12baced254ffbfa6ed05ebe","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-50fed3a-202609211415.0_1790000617648_0.8916336341955446","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-1aecd83-202609211608.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-1aecd83-202609211608.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-1aecd83-202609211608.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6ad6cc81fd39eb7326d9bcc8ab2cd7fa444ecdbf","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-1aecd83-202609211608.0.tgz","fileCount":544,"integrity":"sha512-ibQe9YYfnBtEHTcH+GFMp0HFQvzc/lXeTY1k+I1xsbOGvkUVhSiP0QlyLhTYzknojGnN1iFkF9LK900DEVNJdg==","signatures":[{"sig":"MEYCIQDGPPuWErWv2+Up9nVCDsKp35mvLGNx16AfmEeAfeeaUQIhANPq/Gp+bKXszBVfT5Xcwk2jPSlLBLB/5DP+HPxGMuzL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCTLtoOpWIUQxkEcZZwvzUEo9hgszThnk1f5b9pHtELXQIgQ1qMWAPWeqQ/Jn+/l5z4rLzpo6vqJNbUOPw6eYcRkrs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37381026},"engines":{"node":">=24.x"},"gitHead":"1aecd83a882cd0444f69ef1a0eb2e885d76c48f4","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-1aecd83-202609211608.0_1790007378298_0.956548636167684","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-bfd5583-202609211617.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-bfd5583-202609211617.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-bfd5583-202609211617.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c032b9df680b90189a61c326d2d696ecc10392a9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-bfd5583-202609211617.0.tgz","fileCount":544,"integrity":"sha512-jBsgmeMjd65Jwblr3AB7LaC9Ahc4abZrh0KoLi6zbV84G3o1e3PI+uwJPSoFKQvNP4c+Mu559v/DqqZ6cDXhug==","signatures":[{"sig":"MEUCIQDI9dfkjYNjjsEHXEL+eJaqGpqTA8f3e6IMiw7GE2xNWwIgU/9MabUB1PR9Kt32+n4ZMXkEN5GKDgZmwc1aLXJTs2U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCrYjchdnSttmZQbJUnZ8NF4qie7SmKM2UMQR5yHpz/LQIhAJLPIgM2Wcsib8YiuIUukrYE8HmhaILVZGlWGA/bu/tL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37512294},"engines":{"node":">=24.x"},"gitHead":"bfd5583f60e1d888add7acb2edf4a02d30d8187d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-bfd5583-202609211617.0_1790007924247_0.2181237163819647","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-bfd5583-202609211631.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-bfd5583-202609211631.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-bfd5583-202609211631.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1d8e96a960b15af4997adccf202c7b25782b42dd","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-bfd5583-202609211631.0.tgz","fileCount":544,"integrity":"sha512-TPfX3SPGleHC6q/iv3FuRwT/CNXkOWPtj3lSoRpvuMJzWXlpaOik8sKIXLDkNBlCKe4metn6DwX4Rl8/2snh+w==","signatures":[{"sig":"MEUCIEh3QSe4bGcfPEJPX1CyIHHwlJqvn9U+amGI3KWGdzBwAiEAnMIff40Srju67QMAL4Czy7SFfliZUgGwejl7uSyA1gM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIH+mHjJE7EmlJJytYi0LCj71RGF5Tp6euLQ0NNXuIiA1AiEA9cLsHiLjPhtQjn3hq5KGyMrjli2BIcG8CAoU7p5tknc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37512421},"engines":{"node":">=24.x"},"gitHead":"bfd5583f60e1d888add7acb2edf4a02d30d8187d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-bfd5583-202609211631.0_1790008668254_0.2818406609729427","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-54fb3fd-202609220911.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-54fb3fd-202609220911.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-54fb3fd-202609220911.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ab70a7a25db6c1fa3f52771581b0cbcfe5ac0cb0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-54fb3fd-202609220911.0.tgz","fileCount":544,"integrity":"sha512-elHJOCy1+qjSefblsWL7NURQKtPjRcPNqftrqMjzQrwKw+3hysyHYtzQttLxt0N7ZHn8hhaxSqr/gwmHlLJGQw==","signatures":[{"sig":"MEUCIB8dfZ0MWb6h+hR7aGgaxiZ33ot1xMbD0hIPN4r0PVUfAiEAmCZZ2ESDGKWdHARopDqVxwvXwor3QGXyf/gxOoarDfA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAmSFIgqnrejmgXUpaEC70bHJ+djn02L52YXrkTJTAUFAiEAivk8kumcjCE4R2VbCGuEYUQZvEJO6sT9K0yc9ig1ojA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37382076},"engines":{"node":">=24.x"},"gitHead":"54fb3fdf4d5e994e541c33c179739b157935a810","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-54fb3fd-202609220911.0_1790068716093_0.6929890599668491","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-06348f9-202609221011.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-06348f9-202609221011.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-06348f9-202609221011.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"21485e63d6c85c560f9f82d6c91b5b578a0ce266","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-06348f9-202609221011.0.tgz","fileCount":544,"integrity":"sha512-TSzVj4oXqyjYvVTVMfiT4BzTr0/QGHjNoTPMEiejUzTkwld6yd04mFvm1MqH6y4H0iN+SVcyb1fLN+8xQ4WcEA==","signatures":[{"sig":"MEYCIQDOTvTV7//M7u3O+Nu3oPX7WoE/u48wIxBNAa5xguHRRAIhAMI5eBDK6CQSoAMueUomxh8LCfhIljnVzohkcb6lEtbj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIDTO4uSumekKBMM9e1F98RX7aENHE+k6KBZvTriNXo4XAiBfbo7JH+y1oqA58iNpQ9/fjE38cmynoWLxdYnvfxItMA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37381870},"engines":{"node":">=24.x"},"gitHead":"06348f965dd10269b3d82a5ab092b602491d07cf","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^17.4.2","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-06348f9-202609221011.0_1790072524344_0.19619080431348634","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-1ab067a-202609221127.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-1ab067a-202609221127.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-1ab067a-202609221127.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"9bca1dd7df38acff2ecc8e7f4808e3c24526968b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-1ab067a-202609221127.0.tgz","fileCount":544,"integrity":"sha512-YfpFC0c4w7fXowi4y0oE5ipeJXlFv4tmE+5QK4ts1tIF97Og0IxzHcctXWqrgDH017oKfNRe0iq5hnssJQCNlQ==","signatures":[{"sig":"MEQCIELzrNZwRtRaW8b3Cz3xqk9+tf+NtxHeguOHPf+fQSIDAiAfURIuK99U/x+q+CD/5F47RI6kfn8716t0Hqp1KsQxZw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDGPsW2T56p4tOTw7K9yo1x+4trqqWWNdbz9Otem1lZ7wIgXFkOP05dqYVVVExCdxSDahmO6LLA2+o0nd9MrVGMtjU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37381752},"engines":{"node":">=24.x"},"gitHead":"1ab067a1da273193d2499c266b19eccc2307f418","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-1ab067a-202609221127.0_1790076857318_0.1395152278895826","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-2bde8b0-202609221145.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-2bde8b0-202609221145.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-2bde8b0-202609221145.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"6617725ea731e68122ccfefaad8eeb283cabcfeb","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-2bde8b0-202609221145.0.tgz","fileCount":544,"integrity":"sha512-olImhAJKZrEnzgptp1NNpRIU3PqMPUVpaLe/Z9yVpBApj5JE/8X52Rjtxm4gUMyblGgOXBMi3XTQkWn/9nX6eQ==","signatures":[{"sig":"MEUCIA3I4e4y5ekLiA2pBNTVWQ8SR1qCD/366IAG6VXGioUXAiEA16iprKpKoIL7vCsL9YnPHS1RJZ5biUeIPdRUJ40zIg8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCNEBXF53h0gfhGc8b99C8d9T7U55C9w7OgybKTXQtI5gIgXLvE4/55Zc2UL6bryjUm7kVOkLiFhugFuBU2HbW6uME=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37401452},"engines":{"node":">=24.x"},"gitHead":"2bde8b07483ee0549435b26f128886ff7b32952c","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-2bde8b0-202609221145.0_1790077951574_0.8249132030823749","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-d885e10-202609221207.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-d885e10-202609221207.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-d885e10-202609221207.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5bc42b1b6327e3d9280b6ec5b1385692e533d7e4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-d885e10-202609221207.0.tgz","fileCount":544,"integrity":"sha512-676WzEKdjejSRH5mSgwSp26A64kAl5hQ9AjnsnLmax7BxbxKFZ2IMh5AISHlF08mI0pGRZsxiNI6PZpYZPbtgw==","signatures":[{"sig":"MEYCIQCNx0vCSlh4ndjXEC/Af4gO5ifXSxbFK6hCd+195Y2f0gIhAKPVdIwseI4rTI5/PRs1YH4JBh934YbxOveiEtnDe6lg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDQ06YXN3hB5LF4Z3FC9tcYKI/QdjgCxGW2NVjQo9Z/1QIgC+VPLRd6TV6qIIv3E65aHxHPS4YkU6ixYTiKRjZ5DbI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37413574},"engines":{"node":">=24.x"},"gitHead":"d885e10ed41052e15bf5eba32540d4e8209fa293","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-d885e10-202609221207.0_1790079350982_0.7599921269572638","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-ac06b0a-202609221217.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-ac06b0a-202609221217.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-ac06b0a-202609221217.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2761585a5c2af207eb1f71495a7432e8c2c0e319","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-ac06b0a-202609221217.0.tgz","fileCount":544,"integrity":"sha512-FzevRT/bvpG2LAEwd/W0pGZcMygLa2DeuY7Cbd4RKW/EJd6yPX5YgiMcAU8IUu7jRJMrV+xy1gRcsZWO6ayL/g==","signatures":[{"sig":"MEYCIQDLzPYT1KFEuRaqnq9CuCrwa3MNg5qAv9pU1/r9wKUnIQIhANmzCd08Sfky/+tPIeosyqVzB4nsKmxuXna7s+2OCTC+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCQebbGhOsIiv3k0WM++O7yaOFzBlJbcPgD9IZ/qSJ6PQIhAMTtLJgElMeQ1t3yL0EMEihW9OH6xVR3YOv8qY2q00lt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37418843},"engines":{"node":">=24.x"},"gitHead":"ac06b0aaf1dcf799fd474ccd53bd3dbe5f80d687","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-ac06b0a-202609221217.0_1790079891669_0.9944199241689904","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-a8d0de5-202609221228.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-a8d0de5-202609221228.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-a8d0de5-202609221228.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fb311c3e9f7ea6cc384a5539a351666bf57f456c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-a8d0de5-202609221228.0.tgz","fileCount":544,"integrity":"sha512-TSa8PU3jKW24dmvs8UlySdnngHj7i28IP7fEF8SaczbQ7UIboEBAiQorV4sIY4g2HuVisIrtox/EfyQVSEaDKQ==","signatures":[{"sig":"MEUCIQCbMA5BuKzATiCfvV6iy99xRx4vCWx2ZvBcIautUUBo3wIgBg7R139Z6qF6JqHE4wqT/hchTabs/QJoG0hfy0/fusQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEU43+6UDcgAzE08/R9A7d2VUU0ZBfoqHOtHqEPImpz8AiEAx3JyhSVmSlqFiymzxY3TighHs07TYGbnuvef2bWiNAM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37419021},"engines":{"node":">=24.x"},"gitHead":"a8d0de588094334e2a1c80a48793b3f2f02bc275","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-a8d0de5-202609221228.0_1790080550323_0.06907283334225722","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-567f824-202609221405.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-567f824-202609221405.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-567f824-202609221405.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7a4de3bc1a18de81756e23d444864e60670464dc","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-567f824-202609221405.0.tgz","fileCount":544,"integrity":"sha512-rU+Zd+oFPBV62almNFjLyZXVCDCf0Kf3soVjofpNkb58hKkypJQF82IbFTgpoBMUlfbsr7PtO403sbt6i6jKDw==","signatures":[{"sig":"MEYCIQCVuM3B/ZtktHBfiJTj1OOXUEECeubgTFhIBMxywnp/0AIhANIr9gn1egWHYVNUaCOIsVi/A7gxfHkPOf9TpvYku1kW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHp6FNjCbG7eH3pUaXF1kofKjmni4GJ03F8z5jsoslBIAiBU0+xKnt6wglR7awzg8bIhYU4WYQCPTBzd+qLw80oYcA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37452708},"engines":{"node":">=24.x"},"gitHead":"567f824d55fd3e2af2ae329b861253e9fc4eeccd","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-567f824-202609221405.0_1790086407804_0.2977678549325731","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-567f824-202609221426.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-567f824-202609221426.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-567f824-202609221426.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"efd45a0a51e2fbe4888e090b56143c2f150c37d4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-567f824-202609221426.0.tgz","fileCount":544,"integrity":"sha512-C2omwTdUH7GTUjsRfISjGgtyip6rlPGpatrBIhxXl21FSFcpwHqsamOjfOLsLjJv129qOAApny9Lj+JOfz7F9w==","signatures":[{"sig":"MEUCIQDoBBkAziTmFo7dkaUYFApC3HOFel7dRYwby+PPFd/HiAIgZ0D5OoZpEUfvJg4dIFNDbBS0NHxtUTaCVYlHXPSEWcs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCUT2Z/OUWhgl42ayVKb/SWou7uh2q++esTa73pv5vIaAIhAODD5rL4+NH2mfI5YhtjVxfW1YFFk0Y00Nvnk5zeVjEh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37452207},"engines":{"node":">=24.x"},"gitHead":"567f824d55fd3e2af2ae329b861253e9fc4eeccd","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-567f824-202609221426.0_1790087514184_0.5726185007715356","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-5174cc4-202609221539.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-5174cc4-202609221539.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-5174cc4-202609221539.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"51e74acae0507b7c62a14f9c810c86dffd58494f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-5174cc4-202609221539.0.tgz","fileCount":544,"integrity":"sha512-1z7mXh8IEZSycgW8fXIberwtaZ/mwPKtDsRXsvbgVTdn9zBcdPY1/lobJ76HEJ1zqQfYLhLtHU8WzhB29M8Rzw==","signatures":[{"sig":"MEUCIQC1RcmcXBIxYq/qcDwSnfMt4CogEeYJ3h1Fn2FFDEoknAIgYvJtIfQpsJVMX8xEUkRc8epODKP7fWeCsITBpthqduc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICGaLLJrSSWdVXdoFa0fOo+rPfuSPFO/nY8INCdl2+7EAiAv1I0q2IFZxV2RbvbQabbCd0Q7wxBR9cKZtFaHGj/5ZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37483983},"engines":{"node":">=24.x"},"gitHead":"5174cc48609d9ede5fa2683617e4639de25d0fac","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-5174cc4-202609221539.0_1790092042310_0.5418416126434822","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-5174cc4-202609221601.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-5174cc4-202609221601.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-5174cc4-202609221601.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"c32d25be99e6d1f1db28abb848f3be01ff58d686","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-5174cc4-202609221601.0.tgz","fileCount":544,"integrity":"sha512-pvuJO26KFFCXMC9UvNEmHLf7FdyVJBsF++j4Yrf9hZlCLmWSzQeZPSI+9wLasz2EU4wjp4HueDVVsQCsNdFcnw==","signatures":[{"sig":"MEUCIDa5MjTjss8/gY5vug9Wh38ClMkPQxFIM1Vp9zn06yYoAiEAnyMm3zlkeEWd73sw6JyVWk571UPqWkQNnWyyCIObyww=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDhYRi6MA0fS4g4JO/qdWTMfuQ6vg8fhjuCfKYNcaI+NgIhAOw6bgnSqG9xcc37cIvnZdtdjX0YAIdEnx+cNxPj7lNd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37484331},"engines":{"node":">=24.x"},"gitHead":"5174cc48609d9ede5fa2683617e4639de25d0fac","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-5174cc4-202609221601.0_1790093458988_0.7247273014519908","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-2fc92cc-202609221632.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-2fc92cc-202609221632.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-2fc92cc-202609221632.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"40617c9522fa44aaf717ea4503ca38a9f26c377c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-2fc92cc-202609221632.0.tgz","fileCount":544,"integrity":"sha512-eo6rMCQPBXAf6Tc+6yZj7JleEPwXrtoNeLaah7Vm6OC8JcOpb3pvGwc/FLFwcvQd9L+oLU7W5M+wa5q09Yxh6g==","signatures":[{"sig":"MEYCIQC4uvXjMLeFkgac+h7k3YW+YhLyNcZ39Cpie0C6h9M5CAIhALPKiQt7XE5WxNKVbOyOll9+BhgSRbH++xSoj7KMsIH6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAQI+aPXyYT6Jg5g5Ns7hPh9kgEnDl6eMeG994sVn9gYAiAmU6WyA6yv8d+dTZK/6lFCREhQNqIpbiDG3A051SI2/Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37542150},"engines":{"node":">=24.x"},"gitHead":"2fc92cc7f86c1803a78ef8aef4e4d1cf72ed3a6e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-2fc92cc-202609221632.0_1790095224784_0.662140599692282","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-1ab83f5-202609230917.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-1ab83f5-202609230917.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-1ab83f5-202609230917.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8b57dff1e0e0cd3143d356c37030e103b2d0bee0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-1ab83f5-202609230917.0.tgz","fileCount":544,"integrity":"sha512-HgzEGBwVrrxMxt5668bxCWJWxudAjFFT2AUk+jpBINsSVMtLnX2r8VGJClJ68rCN2Irq78IjAH49vK7cliwUEg==","signatures":[{"sig":"MEUCIQDFo7BYLwDoVGADYy83XOMZFlg9BgWTbFa3zNPL2sMgTQIgRTTN9oXQ470roGziDkUV58BAt0h4EpHK0n/Y5h7CFI0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCbmp6Zu7qubuGA+FDwFOJ3YTUTleXKmlkJO8LMqllHswIhAM13GbStfY+uyLqc3v+zNgpB8NpJbMDEM7Ujk2b0TmbG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37541692},"engines":{"node":">=24.x"},"gitHead":"1ab83f529fbf4427b939c7105fce77c8a6b2185c","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-1ab83f5-202609230917.0_1790155494930_0.2251303251271759","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-ecbeb88-202609231030.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-ecbeb88-202609231030.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-ecbeb88-202609231030.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fe7d0f834aa3c6c6428ed8432276c195ab9888a9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-ecbeb88-202609231030.0.tgz","fileCount":544,"integrity":"sha512-uKYgolGraWBu8CmjUcwPRF9kCeZtJxvKQKcJ4HVeBYFvG8Yr/yxqKdSiXw/I7SgMPwmY1+TP1Ko7TH2KSyDwFg==","signatures":[{"sig":"MEUCIQDkijg/XdXbRxBUSRr6ImI4MUjdFAxj/VgsqP955E0MAQIgbPxm5tIwAvLNStpD+2DMyZh9ypQ/kXcEhYQ1lwAk99Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGE7FZ/L0F7GL20p7gfcXQT8oF1+CsCSr3RjczTxzclMAiEAyImHyy+9IeiKTABq0ugqcnXRX49l6cWpy8EqvIr9yZY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37542049},"engines":{"node":">=24.x"},"gitHead":"ecbeb88d927fe84bc7116be2dd84f9d60525c028","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-ecbeb88-202609231030.0_1790159923043_0.9649079564207199","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-641109d-202609231039.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-641109d-202609231039.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-641109d-202609231039.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a9a0bc15f29a2ddbbfa1158f7ab7babcf97f654b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-641109d-202609231039.0.tgz","fileCount":544,"integrity":"sha512-n66bX+diC5B6bRxQcajZ7S5HM4oi4yNkohClJfYDabV4eT6S2uDFFqd23/5tXcW30rjraGKuK8fxsQI/Jaj3dw==","signatures":[{"sig":"MEUCIQChicSL3CtW4IamCHFb8jBeSw15H856F9nY+g0bQ6JA+gIgSpD3mlV/b17ZIc85mG0bbZdCN01QUxp9An24kwa9BvA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQC5EWdwgTenRSByfUPWRSoEHNZcHqoQufZu80UZilRPbAIgfgZZP+iW3eeV/dgIkvo8ooxmzBi1EFS3KB25PxRCi4g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37542850},"engines":{"node":">=24.x"},"gitHead":"641109d04b270cfa3314cc81b6d7b467c36ad88c","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-641109d-202609231039.0_1790160448270_0.4416605916568488","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-f8a701f-202609231051.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-f8a701f-202609231051.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-f8a701f-202609231051.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5f61e43322a633d9110ce004aac231a63cf746ec","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-f8a701f-202609231051.0.tgz","fileCount":544,"integrity":"sha512-BSvcScDT+YazDPw8a4QciQuZe5ak0VYsJNNQTd75MU/p+w7vh0Q/pYZ2ouowUaEZpTqTOUHYbZ4Ww86NVW3rYw==","signatures":[{"sig":"MEYCIQCZMNN6RypdeKMwQeIvzKtWZ0ZTAYk6HM4RYU96UcUl5QIhAIdcaXZX4NYpcujwvp4FZgNGgUHfKlNYvKHjI2J1VxLE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDJYiu5P6jeok8NS51SnaXHvp8RooBDnKUrwShX1J+zzAIhAJB7gx+n/EM+pBlIoEAC76yU71ofMJm+RpGnG86BdHGV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37554011},"engines":{"node":">=24.x"},"gitHead":"f8a701f36d7acddc6ad9f009f5fe3efba0eb323f","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-f8a701f-202609231051.0_1790161073619_0.9548908402696139","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-f8a701f-202609231112.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-f8a701f-202609231112.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-f8a701f-202609231112.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d62f5b80ba9f849fc48a359c12d2daf3226fa85d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-f8a701f-202609231112.0.tgz","fileCount":544,"integrity":"sha512-/Aei2wwTHQBBErh4HdrhWUeBzSfiWJ8b32NpND3a1LZ4aQiGiFUuayZuc7qbXcBvYz+5rzHRRCmRYX9aEEiV3g==","signatures":[{"sig":"MEUCIQC+A7nbiltC1M/ZGp1zlPgbTDowkJ4UFAdeaM58UbKvuwIgH/I1lVbsdSQkRiFWlqP790eKM3Jpr1yPTcBKpSKeGcA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBZ3TC0yhG0YVC+PdtrJVyBHDJDn/iNd5A0UcFKyf2f+AiBK5NF7KTPEZQFEOnmvRjs2KZ4aFQ/iqKkWsbfcBObuwg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37554291},"engines":{"node":">=24.x"},"gitHead":"f8a701f36d7acddc6ad9f009f5fe3efba0eb323f","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-f8a701f-202609231112.0_1790162371474_0.2664421324039046","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-50b1b4c-202609231441.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-50b1b4c-202609231441.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-50b1b4c-202609231441.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e35b573d2da28f5b63980f5927ebf6b1fcde9ada","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-50b1b4c-202609231441.0.tgz","fileCount":545,"integrity":"sha512-sF2wrWz2WmVeag5J0iN1GDuqGfdKeB5AKgIh6yS7tRJ8iuiLsfqfwUYX5Vm4nAaq5Y3c0hoZAkGWop/nL043VA==","signatures":[{"sig":"MEYCIQCoRq/bbnNsY+3KenV8+kgd+fc8YHOOTkqSx8GGa4Z31gIhAODjxFvd7oSCXOfOB4GInPonjwR3PROKtdLBq6eFUGMq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD3bGSkM3by6tm9AXFWPlugqWl3UtumdsfWyPGH1gDjIwIhAKfVBNvnG7YWF9GZvRaTUhsWX8gd0T5lyK+KrHU0jaLd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37557132},"engines":{"node":">=24.x"},"gitHead":"50b1b4c052cd6e84b00d7534c4f44eb07b267f4a","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-50b1b4c-202609231441.0_1790175065294_0.43371120841222877","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-203f798-202609231453.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-203f798-202609231453.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-203f798-202609231453.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f6fe241ef71eabcad4335880a3bd92e65f7a73df","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-203f798-202609231453.0.tgz","fileCount":545,"integrity":"sha512-VKMPghaQcnlKbNK+LmZnpQGJl1PDCskurlT7zqnW1wc0xAfTnRVnrP5VBKvhkqHBmstnaX2yn0+5O5JoQsUBMw==","signatures":[{"sig":"MEUCIHnD32x9HFQonVpSu/iOvDDcr+7hk3zJxQIKLl0YZi1nAiEApXYgNcnUEWNixwO8rulX9ZN1A6LZ19g8ke2T/mBp1JA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDp5NN6p0a1Uh6Wo7dCar0KgIjCwrBos20DX6sRIK9V8gIgSwW6juLpiieS+SSZfOxJvBJF88JapPfhIvm/3HR9jL8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37556948},"engines":{"node":">=24.x"},"gitHead":"203f79857117b3aea984bdede65160bf43ca9949","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-203f798-202609231453.0_1790175652529_0.2420289271079663","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-c4d8346-202609231537.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-c4d8346-202609231537.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-c4d8346-202609231537.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1af85b42e9c310cae3e2c067fbb04b5f619158c3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-c4d8346-202609231537.0.tgz","fileCount":546,"integrity":"sha512-wa00Kux/ReIeB7HcacDbMJjew4dKhv3L3cINtL5LiFhsxkfE1D6a8YGPoEWUGAjypVqR/+VqGrQcmVNBcjOSxQ==","signatures":[{"sig":"MEYCIQCSOEHBvYWytgGNNz4LJbxneo/9JoGZynVvJ3gfPnENpAIhAJwNBPj82CxLs8L5WIzfs5i12e+S5YCicTGaLLdvvU9u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD3HdoXifFnvsfr+/OVb9NB3XVDPNxXbWm5S6wtk75v5wIhAPzpNcUr5bRYsBbt8w9HmfJBltXkOi2pxOH+uGJc2BnQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37562816},"engines":{"node":">=24.x"},"gitHead":"c4d83469303de59d9f6e303b5a5db99f679f0d7e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-c4d8346-202609231537.0_1790178360242_0.4259975593368819","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-c4d8346-202609231602.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-c4d8346-202609231602.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-c4d8346-202609231602.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ed69dd10c2149e5ffc14973593d2ceed5ba2939a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-c4d8346-202609231602.0.tgz","fileCount":546,"integrity":"sha512-SvZQFk/G2v62SGyAECXTmfNzKzOSRQdX8Koyrzz9amVpzJZfihUUSYSUxvL8QVakX1D2nlXvsvkFvEliW4yWTA==","signatures":[{"sig":"MEYCIQCp5aCM6k+eYZBaQCSuU6m3k/QhJ+Uvm4mSW6SqR6effQIhAM7Tylc8WrkbVA2I2/8Ma2SfOPPBVFmRUNNzP9HlM6wx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEm4mleHJSI755jG85MOjeojJ6v2vT/L+s93bvdAdp+VAiEA7pRTQmyd03+W0Hl22DDwBxQZ2X6gDnS1UuAcm9d51Qo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37562885},"engines":{"node":">=24.x"},"gitHead":"c4d83469303de59d9f6e303b5a5db99f679f0d7e","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.20.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-c4d8346-202609231602.0_1790179860486_0.952296414152515","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-8d7130f-202609241116.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-8d7130f-202609241116.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-8d7130f-202609241116.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"49622ef1522affcd79abeb393d972705725ffcb0","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-8d7130f-202609241116.0.tgz","fileCount":547,"integrity":"sha512-mjLU+cF9nyswZqzanMhxW7YoEVqxsfc86cqQttILs+bDy/W9y8oFvy4lmUjFH55z0syOTpTyQnGf1YmCht0Xqw==","signatures":[{"sig":"MEYCIQCL67pN4Tny7i8VLx9+N9WBvAOoekJEWizn2TnArYqMtwIhAI2+KApYEntsbdbPMkkuv/SV1FkQbelJCrgdmsrwTZoE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCl7GwXBusHmKtyCGUDG/6F7ioNRKurugktuSvfedOQMgIgKfa2FflCt2y3GNnaH7EABya2qpU/getMkB5piS6t78E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37587643},"engines":{"node":">=24.x"},"gitHead":"8d7130f8901ee6bc4c9e9d42d0a44c81135a928b","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.0.3-759b09c-202609110841.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-8d7130f-202609241116.0_1790249047039_0.07371631615489238","host":"s3://npm-registry-packages-npm-production"}},"3.0.3-8d7130f-202609241326.0":{"name":"@flowfuse/flowfuse","version":"3.0.3-8d7130f-202609241326.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.0.3-8d7130f-202609241326.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"81935c3c413545c9d7fc58a991c4b39c49fe180d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.0.3-8d7130f-202609241326.0.tgz","fileCount":547,"integrity":"sha512-4IPRIAwkPqGKmy1Yr/A+bjyKp4Gy0ImGgEUxMXScrZN6mUH9ExByNf73eM0wbexSbwClrIISH9pr10e48qKuog==","signatures":[{"sig":"MEUCIDDPHtkuztiq7Bt8GJ0YHp/+vMcSgSlwAf/bpMgLK9qGAiEA2UcwUIjgJwpgNYVcL7v21U2fJhhbQ0FC9Lk5AIJs9oQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIC4UERzHKVRQ5V5l4s5iH/NhkqgvPT1hsXQUoZN+TXS/AiEAynY3EHrgbeYLLC1cCRYznzlrlKmt1LGMUU4HyRtOUO8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37588094},"engines":{"node":">=24.x"},"gitHead":"8d7130f8901ee6bc4c9e9d42d0a44c81135a928b","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-efad3b4-202609241322.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.0.3-8d7130f-202609241326.0_1790256859155_0.25048189604628046","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"@flowfuse/flowfuse","version":"3.1.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ead60cb90b4ec4e552c587979e3cae8437f9f451","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.0.tgz","fileCount":547,"integrity":"sha512-xJAHSM4pfR+lhkPyzwJvPHUxZ0hn+aN2bD/2qteexWM9JnuOEOL5VbL3OkGi5MVPsR21alWdqImYQP0lzZebyA==","signatures":[{"sig":"MEQCIFZevH4c8y0G8PNHCPshMMJI+mPaXCybQEM3E8/Gy5yrAiB3ISZTUSfMX4ACoLGuohNu++4XGt7FwuESuvO/dlNjmw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBOpEQ0SXUjjXO5gcbQSOMm9HL7SAoR52TXfmV+l10elAiBTgQElf1SO/M4GttfwFcAR5CQjnmkLyL0d5b6FHDN7Dg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37591096},"engines":{"node":">=24.x"},"gitHead":"9604dd21e0e0879608cf70e008f543dbcb251109","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"^3.1.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.0_1790260181954_0.7767289412205232","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-9604dd2-202609241444.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-9604dd2-202609241444.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-9604dd2-202609241444.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"f6a91b033ea38ed5788c586fd1c9a35390a1b763","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-9604dd2-202609241444.0.tgz","fileCount":547,"integrity":"sha512-1ng17cg5YH9l81TMMxnE7aYi8189jBB8EbaqULj1fAncL/k3CkME2mdGt5GCRHksLDrKu+6Q355X55d8Z461Xw==","signatures":[{"sig":"MEUCIQCdMgd4TrjpepZr2suowzx32vVqkrURDrCBqL8A4vYDogIgJrpz+FMTNQLfxdkb0TXYg/K2gWDLlJvlpEhkv7zE1mc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDb6NcxTUDwwU/eP+BAyfnLiQfzH3pDt+/4YVYNSQEkpAIgRNOaMqf3i2sXKqknd2DHHfBkg/3CmWIRapMEMxffEQI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37595599},"engines":{"node":">=24.x"},"gitHead":"9604dd21e0e0879608cf70e008f543dbcb251109","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-efad3b4-202609241322.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-9604dd2-202609241444.0_1790261583364_0.49288038000853485","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-cdf2592-202609250845.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-cdf2592-202609250845.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-cdf2592-202609250845.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"13f4d1fe6b93bc194a2f58a91e9bd4b0a7664343","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-cdf2592-202609250845.0.tgz","fileCount":547,"integrity":"sha512-uIDl+zpDRi5fqhRlnsyDiA1zL46mdpk8o0Ot5ExaeSWUXanOw0hcYpd8DvwPDQl8dYIPdocoYvnujg8FfM/J3A==","signatures":[{"sig":"MEUCIQCphwSMqNb3ze66H1xY2SAouCKO2dqytlVDtb6VYpGVvAIgSS+PmIYfTjpNw37N8swQFVgPxah5M9wETi61c38F738=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCMjfhU4VmBDuSyW9CdR5kzEIDaVpzus9bhUsMUYd+h0QIgauNg9F9HLjPxjM247U335Tt56yCtLDNrqrkShrhNy68=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37595975},"engines":{"node":">=24.x"},"gitHead":"cdf25925b6e2a27e8c95bf309e1c0c7bf884ad4a","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-efad3b4-202609241322.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-cdf2592-202609250845.0_1790326474830_0.9522930217850749","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-a979a67-202609250855.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-a979a67-202609250855.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-a979a67-202609250855.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"43e54793ae8bbd53875c3cfded3ccd60330c7106","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-a979a67-202609250855.0.tgz","fileCount":547,"integrity":"sha512-FZxlStLTc3XXypVxNeCFckenOHTSujVe0xiZrGKV/TTyzeBL0n+xJORsLuxtElquoqz3jJV5TZjsRvc91bt1/A==","signatures":[{"sig":"MEYCIQDfEPNVVvM+zKLJvSr/7wukC0AC+v+ouvoeXDD86e5hdQIhAOzausGXJsUs4lqBoJVdVHhunbAL5uWFrhI6WqWDb7XZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEB1oSADmR7Wpg38UAiQi8hBOec/Ud9GIpJxVKx7WgzCAiEAkZ01UadNtTipi2P0Cg1FrbgwumsQDE2QnSIIDG4RqUQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37596193},"engines":{"node":">=24.x"},"gitHead":"a979a67d87eb66b1ffa1f131bf25acfc18333c10","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-efad3b4-202609241322.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-a979a67-202609250855.0_1790327063425_0.8822392688882457","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-a979a67-202609250908.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-a979a67-202609250908.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-a979a67-202609250908.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e05cae712db07b3bb045a9bb7edbcc911041618f","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-a979a67-202609250908.0.tgz","fileCount":547,"integrity":"sha512-21WMxdoQR7Z6NK2zZsQTOfeen3ksVGeekMryx3eKxSRi1um8HYZxhMfonsuJ3ynv11SmoAnK02lKG13KGIDLKw==","signatures":[{"sig":"MEUCIQCLz0nJM8249kiaqVLZBbwPQ0Yvx8dH1yV/5gQf3+nWLgIgVp//TMYOCn8Y96h/f0zJFmn8IXMGy1DnslG+7XBEq4g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDhAlGj3ZoWRqL+2hOwd2ODRwAbqvRT6bryJWpCxKh9MQIgTUyR3FGH2xmAZPvWoS1VLDumv6IV2secR4h7D+cEjTo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37596175},"engines":{"node":">=24.x"},"gitHead":"a979a67d87eb66b1ffa1f131bf25acfc18333c10","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-efad3b4-202609241322.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-a979a67-202609250908.0_1790327823290_0.22481932557190443","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-88d18bf-202609251540.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-88d18bf-202609251540.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-88d18bf-202609251540.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dc09bc06569178c146e1906ee0994ccac3bcc1b3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-88d18bf-202609251540.0.tgz","fileCount":547,"integrity":"sha512-0kidrWP+mc3Gmp53MM7v0TIIxbdXPO0RpQqK927h48Nz26eady4z+JuVnH1cRWW7QOKyeEy//ZyETJUbpaLEUw==","signatures":[{"sig":"MEUCIGjrhUh1qGw0LqvBaQmnlGU8Owia9rc6d9eYiYcG2cCkAiEAyCVs72Z3UHL9eJEwak6csbxIxug5FSHrfWmI7e4ESSM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGRknNU1YPRcTYgp7TCDc1ozcnhHzaxIi1NLCfvde6iRAiEArqKGpYBmjUM2PyYB5yTutpS0W6EPlH7tX+Au3Gol940=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37597522},"engines":{"node":">=24.x"},"gitHead":"88d18bfc2bdee6960cb8f92a19fd1a8c320f9592","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-efad3b4-202609241322.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-88d18bf-202609251540.0_1790351372132_0.023949191108930235","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-d271eb9-202609280942.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-d271eb9-202609280942.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-d271eb9-202609280942.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8080f1b41c341ccec4128572b7ca9c882346722b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-d271eb9-202609280942.0.tgz","fileCount":547,"integrity":"sha512-3Gc9qWhkQsBtUXNQR98NDGxE2ny9JrkrHf5F6ctfYkuZ92aK6GQs0P+xGXCYIOXPfa92wctjYTouNbbHH/gkqQ==","signatures":[{"sig":"MEUCICOd6ZIzPlMycvR1+C+QypXAwWNriiwH2o70ZrEQ0QyYAiEAhnv2WP4p/rkrO423Niw4nN2g2t0VG4yqlzUAX29xGG8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCOWHDVGNeQjgagLNnq9A/z39hS8PIyAeny77AZOQWYAwIgPifOfYEH+0sqmEwnMooEPCKlbqqgeC65jgJPkCNgEWU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37597224},"engines":{"node":">=24.x"},"gitHead":"d271eb916cdfecee03f23dd7091e8b3e048d8e25","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-efad3b4-202609241322.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-d271eb9-202609280942.0_1790589189828_0.9555744030890276","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-49de67d-202609281000.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-49de67d-202609281000.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-49de67d-202609281000.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"d254e1f3049dadca9bf8e275f93780ca5e8acdd3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-49de67d-202609281000.0.tgz","fileCount":547,"integrity":"sha512-EgQBGunH/PHopqzId7YI5oigZ9j2n/O0J0osoj1ul1usLQE4EtS4/h8CmQBWd+yasuDcx4Jg9/3UAdZzBWdmFA==","signatures":[{"sig":"MEUCIQC2yu/OjHt/OgW3OJrs3lKQ6um6a3yWVofTXESTflRRPAIgWxgdxNP5vNF0maeyMV2j+kc0vksnZ9lPlx1bNfzy4P0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDr0OhWsKVKWbFc7Io5YtTF5avgK83B7X5lQ4Yf3nbfHwIhAPjEgzTddWGjE04QnAEqXAvE3O9I24UqqqN2bk10dBQo","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37616511},"engines":{"node":">=24.x"},"gitHead":"49de67d0ebc0b2b6f5a52e7ad0f6731ec59eb542","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-efad3b4-202609241322.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-49de67d-202609281000.0_1790590150173_0.9620208002063144","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-e0a9a07-202609281349.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-e0a9a07-202609281349.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-e0a9a07-202609281349.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"98ffaa286368ab5fdb1cd6a0eb8c4db7121dcf72","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-e0a9a07-202609281349.0.tgz","fileCount":547,"integrity":"sha512-o+FRJeBoz3JGNgNX+1k+t7ggjYbqcliFNi55vvMC47pfG7/SY9NWqrekWACyEQhlj4wVWFpKGxqysumXOxK/8Q==","signatures":[{"sig":"MEUCIFeuemS+6zq8kCh/l8UHlmWOr7rCfDJTARykmXaOaZ6jAiEAy/1RUVCtv0UG6nCjfJI3T78dfMXtpxx0zJ3rjG9JgJg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHThI+SBQ/TcRUE6ImaqI34SKyY2Z/AvqHYSw6xPwBi/AiA3E0kF/0HB//nl48QFH22korJohm+VnerdUr1GkaK0fg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37631312},"engines":{"node":">=24.x"},"gitHead":"e0a9a070b8b9dc6d50cc99469586a89356c7d7e3","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-efad3b4-202609241322.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-e0a9a07-202609281349.0_1790604113643_0.40456653658794584","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-e0a9a07-202609281410.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-e0a9a07-202609281410.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-e0a9a07-202609281410.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"7906c9d5d3100fa140624d6934f1f5b8bd00e8e3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-e0a9a07-202609281410.0.tgz","fileCount":547,"integrity":"sha512-CpKTOJF1WtJGFLsIHbj87IHfLAfogIbN0TPUJopQnQo3o1n3WU880tk4FspKuDeXirvKkDZrbmBngLvJ+NjfZw==","signatures":[{"sig":"MEYCIQCPb97Wv7LoHYTtkNZLdJbVrvjQxYhJeKP6SeoCOsC4RwIhAIk7Bt8X1EWvEr2u6JaN2NwuFvusGFlMcsUccanGtJ/8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCPwF+ijspRo5sdBa8UKf8jr5fZIben9/0d1fZVHk5CjwIhAJlFmFemBJWgrWmSMJDTBKrcptOL5hvr/C1E1cnyLGdP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37631117},"engines":{"node":">=24.x"},"gitHead":"e0a9a070b8b9dc6d50cc99469586a89356c7d7e3","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-efad3b4-202609241322.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-e0a9a07-202609281410.0_1790605185312_0.19298610137727312","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-86a3156-202609290845.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-86a3156-202609290845.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-86a3156-202609290845.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"05ef6595b441e8d7de6af54aa89fb3db436e4ff4","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-86a3156-202609290845.0.tgz","fileCount":547,"integrity":"sha512-rm7hCrtRgvj5OzDEeau1Bd7om9kYEzvLB1preVAH8rmRjEFGIqp6EXah5tjpB38BmdVudg8h/wcF/mbLXmqn9g==","signatures":[{"sig":"MEQCIBc081MaMpRMxXsXXVMkhE5GcHfDUb5vhL0VImeDFk4CAiBYX27spiYWTkQQZ7sQKUBYGuHZOVsNurhufIPPad+QDw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIAglZlXmJyMdNCdN8Ca3jMHrwhFdwfuDRtVI+vTFwjWLAiAwkQSQo01xMU/i+w795JEI+VHpeg/jFAIPmTnNKAc+Pg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37631421},"engines":{"node":">=24.x"},"gitHead":"86a31566dfa33055fc3cdc8c2712f0daa9aeb54d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-efad3b4-202609241322.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-86a3156-202609290845.0_1790672096091_0.6627073867724782","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-86a3156-202609290855.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-86a3156-202609290855.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-86a3156-202609290855.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"cc6e91a61c6869f16816dcbdd6ac011093c4e092","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-86a3156-202609290855.0.tgz","fileCount":547,"integrity":"sha512-0qGTgxmmKaQdiJTGXG7Fp2hm+uw75jAl2ERhGa9WM9KjsC+kEjRZBNoSDcl+TVCllX6/rxBWVMYP9FerZXSpOg==","signatures":[{"sig":"MEUCIAi5YFEjGN6MfrEFmuVQos0PQlNzpzVl6L65X2D8Mbc3AiEAhmt2ZRCkBcFJ9b19Z5+FKmdZJXhqxTsAu6z4Zp/ejG8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDjBdFQN/MFaSI3hstWy2l6NMqJKo2utuMEDv9j71nGRgIhANPIMtQ5/iulQP/GOM8RUg3HGVaYo54ESYQYCRQvt5l4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37631198},"engines":{"node":">=24.x"},"gitHead":"86a31566dfa33055fc3cdc8c2712f0daa9aeb54d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-97486e4-202609290851.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-86a3156-202609290855.0_1790672571728_0.8651597710653409","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-d1e982e-202609290919.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-d1e982e-202609290919.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-d1e982e-202609290919.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"68bfd0adf57e9f2da5a1a963023cd35df5ba959a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-d1e982e-202609290919.0.tgz","fileCount":547,"integrity":"sha512-Zalk/jeV7bHFYXyWsvwV7k+oyp9YhvU0lFtgxs+aYn+H2znvjPNbBAR4zqKKqLjplyXVq4yoRBD64u8z/GNJYg==","signatures":[{"sig":"MEQCIGuNhZLbni4tgXAIsyEYJPifRKuBqsHhCkwRm1gIFtoUAiAk6b89A33nF6di8krB+x/5eocAL5QaI+o6lQDG6v6lzg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBrdEqY7PeBGK8bdEw/OGi0p0D++ysp00FeVCJkiFnmSAiBk4wogugYX3pG4D5KpLB41BI2jyMbdrEzmdibGLAc5Eg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37631258},"engines":{"node":">=24.x"},"gitHead":"d1e982ed82643eac3367e1e07a2b1777ed5d4e91","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-97486e4-202609290851.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^5.2.1","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-d1e982e-202609290919.0_1790674096270_0.1394458411018158","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-daa2133-202609290934.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-daa2133-202609290934.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-daa2133-202609290934.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e647ca76be2fc21a89a31ded45249041d88d7e8c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-daa2133-202609290934.0.tgz","fileCount":547,"integrity":"sha512-UnJ/l7/d58zbOkIRQuTqKwmTQaUxECKR0S6zSktwnMCj3YtIji2CiGfnoDEthBFEyk1522THcojmdNVXIw4Wxw==","signatures":[{"sig":"MEQCIEvAGzWPYSu+aSpT8YuxWHsO/ez7PbCCcxLo/oHe2Gp6AiAaCZpUyqRQ2J8+KGFxljTkZEbe9+WWPqsFD2waXr9bNg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICArBCBdaeFe1DFq+Bbz9VFo9oTIFhfnJ1Hz9k4ATTBTAiB5zrkV9FPUKL7ckrDrw5fml6ePRUCpIwXZeW3Y+6XO6A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37631504},"engines":{"node":">=24.x"},"gitHead":"daa2133e10a7444e7fb7a1451e58bdc9c6b2b3d1","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-97486e4-202609290851.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^6.0.0","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-daa2133-202609290934.0_1790675121435_0.4901908114307587","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-daa2133-202609290956.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-daa2133-202609290956.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-daa2133-202609290956.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"1c2c3a558fdcb57158d6ffae7db266bbac2aff9d","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-daa2133-202609290956.0.tgz","fileCount":547,"integrity":"sha512-ihpDAAlDcywCF+Bk0yJ7szOe9MF0EPvrBXoYl2V887QvL2edM257uaIH/yTAhbFgJ3GuxiQLipL2h9bo6dLhOQ==","signatures":[{"sig":"MEYCIQCw+ZoC9mQkYTM0p4RzhzGR4Gl3xMrgRWtCYryZb8eMWAIhAKOLuxd2vGZ13Q9vN30cVvs2JkN4+hKP8aP5EpOhaHGF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGFxvT0JU+REiRVstd39UU3zK/zTzKyef9GfxaKK4ZXVAiBOm3ZczEP7TtER7CVxLhBSKhU1mwnJwf2mYEa7v/G21A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37631193},"engines":{"node":">=24.x"},"gitHead":"daa2133e10a7444e7fb7a1451e58bdc9c6b2b3d1","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.1.1","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-97486e4-202609290851.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^6.0.0","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-daa2133-202609290956.0_1790676289734_0.6072227098613519","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-d8f0a7f-202609291053.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-d8f0a7f-202609291053.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-d8f0a7f-202609291053.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"97b0ff318a031614503406b88c4e5b521c3df188","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-d8f0a7f-202609291053.0.tgz","fileCount":547,"integrity":"sha512-33ZMRXtWQtHT2yumM70cWIjVpGYwSWK0NHd1KmiY+EiNVFjElRwdidoF6e1/VYe/73oCUOgaZx3vPbM93gNVLQ==","signatures":[{"sig":"MEUCICjbmjqjcvzvolYZD98IeECYAfxRTKwgnSv2FTGJ37RbAiEAsmyC2KH1uJVjzY4mUYc9q3pnS3+rbYtv6cA8+4CZNiI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDveKyUXSqKVaWm6xEdxH3W80t+i36EXIMxAf3jz8c68AIhAPiHNkkIQGYA6RvgtnLRZx4lr/by60zZ+f3U+aO2ZYop","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37735360},"engines":{"node":">=24.x"},"gitHead":"d8f0a7f30af8663728d4a3e271fddf373fbf697f","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"5.15.2","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-97486e4-202609290851.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^6.0.0","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-d8f0a7f-202609291053.0_1790679571611_0.7354418311896327","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-74e747e-202609291118.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-74e747e-202609291118.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-74e747e-202609291118.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"17b759202e8c962933dfdbcd378872c1b3f1a4c8","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-74e747e-202609291118.0.tgz","fileCount":547,"integrity":"sha512-Jz+7m12e2CVB8DraTWYZTYaLS8/7UD4cocfM8I51HA0Z6qwcMSgfnIZJf8ygpDaNyfFLn4GZMJyBkSNEtQ9atQ==","signatures":[{"sig":"MEUCIEcRoERWgqiew3Y/EgehZY8nstFwXbtOyjLt4AtF0qZHAiEAicDC/SuvLTR71Yu3Kt1jbEwXF5iAgheJWE/VJUH0Okg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBtTxvTf9E0U2Ulk4Hl3j55wd/vQm9VzLDnjHMMcL6/vAiEApqLy5jZ50ERLuSaLOAa8AqbmzRPgkwXAstCA/nhQcQk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37734884},"engines":{"node":">=24.x"},"gitHead":"74e747e399ee59f557acb93c9c0aee66de548328","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"5.15.2","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-97486e4-202609290851.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^6.0.0","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-74e747e-202609291118.0_1790681243733_0.42391176306636025","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-e1023c6-202609291537.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-e1023c6-202609291537.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-e1023c6-202609291537.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"11e1fc42e2fa7cb62e3c728b2de4d8752b43816a","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-e1023c6-202609291537.0.tgz","fileCount":547,"integrity":"sha512-gCzXdjg4EpuJpK3Q2lafmgZ0w8mqdKFRZFYSoWy7xIaVFWLaQypF2RPWBZMbb/F5LSnjlduQtdA10V32tPqt/A==","signatures":[{"sig":"MEYCIQDaZ2LUA1iKiV1cBfUGtLGMKyhdDbt6oA6Y4OoRRLywcgIhAMYgT7H2MB2klSEdvTDCbxTGTyZp7zXnEZwU6iFWS5nz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGDBJTE3nXXjZcHK08MzyHsU3B317dQMirxvwuJRF/PDAiEApeJ7zAK4Jv3ZmVafTUe2ds9fTBZ1SVUGHfTqYuOhkfo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37741794},"engines":{"node":">=24.x"},"gitHead":"e1023c6e304b4e7ed3652a10243e129862a1f5d5","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"5.15.2","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-97486e4-202609290851.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^6.0.0","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-e1023c6-202609291537.0_1790696731963_0.28522236675680723","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-f1013c3-202609301309.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-f1013c3-202609301309.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-f1013c3-202609301309.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4f725e5cdd7fdb2dca8df39a365fe215994c0c98","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-f1013c3-202609301309.0.tgz","fileCount":547,"integrity":"sha512-k7S8p4LNBH0ulw8KwwcZkporAPgNs/BrT6yD5cKfH59MSVzlAhPbiXQCryau3KQVYINFB02djfS41YCG/l8wvQ==","signatures":[{"sig":"MEYCIQC3QrpGvWzS06wMoNg+n5cKUeqCQq0eGDS0elVPKjjYywIhAK8I7Pg+3/Ks0sKa3kyCq//HY+ZvRLKPASVEO7KPEUdi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIA1w5NQuWt0koPqHJs5VaAo3wzY775HIPMTDxOHxgnpuAiA6oCfE7BG2afFbRfaTkbdE14Iv/MzvdjlQCWE+x7854A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37637972},"engines":{"node":">=24.x"},"gitHead":"f1013c330c64a458eb9602d4853e89661e1a42e3","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.16.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-97486e4-202609290851.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^6.0.0","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-f1013c3-202609301309.0_1790775875117_0.7183265552854177","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-b6f6140-202609301455.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-b6f6140-202609301455.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-b6f6140-202609301455.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a0599821e20d588c0d9cbad96dcd9236a2ccbaf5","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-b6f6140-202609301455.0.tgz","fileCount":547,"integrity":"sha512-wPEgId09LKZv4530RqEWJ1L5jDT8jsEcCYvNGoDej50iqka9mYHrOy9uzTOs8ASSkms2MJX/deD2TF5CO5haUg==","signatures":[{"sig":"MEUCIQDE3wPw1DULDfNqeHQoCMZVE99jvQoqHgmwi34nzGarTwIgeHA/RLFrW5pc/Wzj7xKp0wRVAJe1uu+DQhfADoqTC3w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIB4cLzdcGodVh30Tcj3odV43S762t5vbzAPM4ebuF9fgAiEA4NWR53AAAw9droSriWexHs3UQETfywN6NkyJgvlIVhI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37641251},"engines":{"node":">=24.x"},"gitHead":"b6f61405fafd0df3f000b40c3e45d8dfa7632048","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.16.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-97486e4-202609290851.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^6.0.0","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-b6f6140-202609301455.0_1790780577841_0.7702992535248452","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-881ef46-202609301540.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-881ef46-202609301540.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-881ef46-202609301540.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"8a7b362837fd375fc8ac413d793e149180673cd3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-881ef46-202609301540.0.tgz","fileCount":547,"integrity":"sha512-7dalneUy2eZY2FTHO6oLlpt557P3VGANpd3bFmzZpH2AJgURi5rEd8TWxNoFM+8u/YmR74qtla1huFm5FstLaQ==","signatures":[{"sig":"MEUCIQDlg8Qv3EL4TetYNBayaMyMKksw//2uZJSmsI7h7AS43wIgStD49PaWtrqAUiKbonzf+90tNhou6ryilq2mN2yZ/aA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGuuutFj2TF3D82kY4PShHZQQijdOCWErql9yiCeQXyBAiEAt7qL7onRWfgq4iuMTwLQXQ16XHeeq6UtI52ep+nikVk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37643379},"engines":{"node":">=24.x"},"gitHead":"881ef467781e525b2b0cf022ed1ec3b167e953b3","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.16.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-97486e4-202609290851.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^6.0.0","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-881ef46-202609301540.0_1790783271055_0.7612394696660727","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-785980c-202609301703.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-785980c-202609301703.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-785980c-202609301703.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"dcd6e34016bf40753f503125fb4e639f5804e323","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-785980c-202609301703.0.tgz","fileCount":547,"integrity":"sha512-jr/fpWl1DYHiPVvM6X1LJsA42N3kxbAwzCaJ/oSo8/WoMiV6TGfB0kf3fU7p+vMTiN18N3PRcS39lJdDEsYLlw==","signatures":[{"sig":"MEUCIQC7AC1GkZkdH1ueGF0+L5poxGNrPaTxwO5LrdlsT4Ur8QIgJeOUDigSw8mZeT+ubPCkLmixcqKt1G2XmwXeB4TgAAQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDJe6nZ3uXOJGoTm3g4x3aLA2GKq/JXVXhI21/eejdiYgIge5xjJur8Qr7gJ9ltIjbMCrBT4Bqcn0nf1bDjxeFrdtU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37642080},"engines":{"node":">=24.x"},"gitHead":"785980c01e249885ba39bbd0f7bab4faf1787cac","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.16.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-97486e4-202609290851.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^6.0.0","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-785980c-202609301703.0_1790789412780_0.3983587551271699","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-56660e3-202609301804.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-56660e3-202609301804.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-56660e3-202609301804.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"43f8e10f591a63bb8ca2b59fad1a3d719b8b2f95","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-56660e3-202609301804.0.tgz","fileCount":547,"integrity":"sha512-D1EkGbRb2wMsbNIP7zyqzRXxYiCVkMS3qSlsFbHP6QEN2ayxKyGnK2/OCnqYObSuOg/rKAxZjOuNs12jM0RX5w==","signatures":[{"sig":"MEQCICA9MbsQAxuxXAJEo3neSSbSTY3Cts3KavoLhBD9zhfYAiAiyKkeANxuTAB3qsOiDBG+eqmdoiBNaRrxOaQpKEGasA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDa+isJ8cfyNGOOAfF92egBFnlX519L479zPs6Joi4bOQIgQxeQjkI2rsOi8+jaawHPeu9K2bu83IyuhTiuvLktpNk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37642081},"engines":{"node":">=24.x"},"gitHead":"56660e3685390ef7f8362e05f0217c8d76246066","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.16.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-97486e4-202609290851.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^6.0.0","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-56660e3-202609301804.0_1790791966015_0.3746370953835947","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-227f864-202610010844.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-227f864-202610010844.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-227f864-202610010844.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2e10ed0945042b1dd0c5597275de93d9fe3d77d3","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-227f864-202610010844.0.tgz","fileCount":547,"integrity":"sha512-Yp4vNINGL3GFaOIEvQNwLoAiYXIOyZF/OfrfcJ3J1Hz8cn3NNpKUJoOFyqRdyq7lUUWn9+iW+wqE7SiCSHK8Uw==","signatures":[{"sig":"MEUCIGxy2yPDByozCT3zE8bDGhaHhelKWNLtHpzvz2fF5RUNAiEA3hG8TjJQOaQZccDdqLggVyHBpKsvBWUmsfIpSqTYSgk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEkmaGmQ6REAIEyDTpeGLkbGOtMeNeT9MKTbrXzUf+LsAiBnGZa5L29oDhxcUHtMDmE1tvV5hDDhm2IT02coWJx4sQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37642527},"engines":{"node":">=24.x"},"gitHead":"227f86401c8a72765128e649234b403809588c28","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.16.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-97486e4-202609290851.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^6.0.0","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-227f864-202610010844.0_1790844598567_0.45665868636308304","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-d097c27-202610011520.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-d097c27-202610011520.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-d097c27-202610011520.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"12efa76efb6228121489737be341075473691d34","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-d097c27-202610011520.0.tgz","fileCount":547,"integrity":"sha512-1M2jEYUlXCU4SlFXQhh6Z1GowL273T39FS1OJqtZuPRxIpsAFIZXyQiI60xD7LR2Kk297jwvnRcvIvN7b0tRVg==","signatures":[{"sig":"MEQCIFh0urql6wre/Fdy0JEQonC/FmvlxcMDZOPYTSlDq13pAiBL/vox++s53KCDjPhO7EjM4HTC7p/tgZOOI+Ncveqv7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFr1Y7+qQ+yjgqMNN/saDIswdKPx9QC6YaoH4lnXckOtAiEAzTiyGNyjpmGVGwuV+fAcywfAcyVGu8Af4k73rl9/pwc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37643177},"engines":{"node":">=24.x"},"gitHead":"d097c27842beb1ee111653b0fc6efc801ddfab10","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.16.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-97486e4-202609290851.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^6.0.0","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-d097c27-202610011520.0_1790868885168_0.7039842736410216","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-4184afe-202610011550.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-4184afe-202610011550.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-4184afe-202610011550.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"5508571fe5bba0b296babf0855a838e6bff05bad","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-4184afe-202610011550.0.tgz","fileCount":552,"integrity":"sha512-CNU9qnNNvzyBz1ZkM3FYrzwwfTBcAzNJwNfxWjG+gsR0VYtywACGg8jwr59F02712bFeDQtoSRCoSa10yaB1nw==","signatures":[{"sig":"MEYCIQCDq0SEUTgPmLpJkEL1xcV2Y9e11HGvkILLAhMBvhgulwIhAINAkSrvF0sPfz12VTMmvmY8Il5wfF1dp6GgnppOy88H","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCeiqRJCEcLzRNX07n+6mCAxbdVdeJzguXP3+g8fyuheQIgaHGj/FGb/uhRWPrOfRfEg/+p7n+u60OS2deboCGaKxI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37708734},"engines":{"node":">=24.x"},"gitHead":"4184afefe082289e2d2b28b98c13b906e0bad281","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.16.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-97486e4-202609290851.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^6.0.0","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-4184afe-202610011550.0_1790871547172_0.509455072249146","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-b814073-202610011627.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-b814073-202610011627.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-b814073-202610011627.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"fd243540d990b7b0fc20a5528cfc074832e6326e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-b814073-202610011627.0.tgz","fileCount":552,"integrity":"sha512-5tJlPtahaGYJCducQb3R9yN3v1Z6BsTGidJj670iM7acNo+5lWpKeFaFKD2FuB8/fb+QdJxsBRzvoqeaAX3aZA==","signatures":[{"sig":"MEUCIQDk4AeEuH/Vg8M9dsZ5fYzvfFrN8Ux4QJRDiSVkg+netgIgep6xE4POhX0pl/CbsSbHCGz8B+WCmKptoim4z3oYt+Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDljkBhYSlrgBeHq8agzp6mgH56FFbpgvJkoJhq61SVDAiEAywYMk2+d5sDGkAshDJJECw6Ex3z6prpo/XByzq9t20E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37675601},"engines":{"node":">=24.x"},"gitHead":"b81407331e4fc9d742a85109d35d66e84c983d52","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.16.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-97486e4-202609290851.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^6.0.0","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-b814073-202610011627.0_1790873033771_0.7948249143426886","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-e73a9b4-202610011826.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-e73a9b4-202610011826.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-e73a9b4-202610011826.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"62c1662eb02d20410d526b6da352b14e0a795aa7","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-e73a9b4-202610011826.0.tgz","fileCount":552,"integrity":"sha512-e4u/cy6BWJYPqX7XyGgScj9L5SDTb+ZYZF47j200UzGP44u9MJx3ZwuNa8LphnlDH/o5bIpaQbvWzRyd9epssw==","signatures":[{"sig":"MEUCIQD0oWpog9U2pBEZ/H/XIXydIesPWDy3Gist8M2DmaP0gAIgDzmhGfnLiykH5M4sPrr2e4EAhcL+S39eumajYbZsdN0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDhRr9fNzweT/nme/8nUt6RRlphIo1y0dw1z6x4OtWLtQIgR6zxOZ3oPKmS/aUxl5OTv4VgVUyWFvB5engQQoZke7g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37675722},"engines":{"node":">=24.x"},"gitHead":"e73a9b4aa0d13d953a6bba6988d272790dce9abe","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.16.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-97486e4-202609290851.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^6.0.0","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-e73a9b4-202610011826.0_1790879613345_0.1243503421775689","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-b91e4c1-202610020928.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-b91e4c1-202610020928.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-b91e4c1-202610020928.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"4d1afcba3baefcdf4e4f69de47bd93493fbcc19e","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-b91e4c1-202610020928.0.tgz","fileCount":552,"integrity":"sha512-WC3OSPEdNfdm1X6co4/ik+yB1kNyrca8qnPS+2pHkWft+NS4eUa0mqwVQkw6okLWZSWleAtjpSjnzkkSTgikiw==","signatures":[{"sig":"MEUCIQCRZNU82Tcusig5kN7F1EEGzlkuN3cwKB/YRDXStr8DpQIgDCGOIKreqnrHc8NCBwUojfPSpa+abcuqbQHQnxvu7OE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCRWNPOWyPjTWS5PU2KOKhET9grW9oQgrsVbLprObMhRQIgO4vqdjnBm7i6n2yq54p/aPlqnhVgzB3EVp/V/D943+Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37683935},"engines":{"node":">=24.x"},"gitHead":"b91e4c1c6a8a38b58987877b51dce1b9162843c8","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.16.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-97486e4-202609290851.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^6.0.0","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-b91e4c1-202610020928.0_1790933715087_0.20154106580305609","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-b91e4c1-202610020950.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-b91e4c1-202610020950.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-b91e4c1-202610020950.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"80b2c3d23be368f251a0ba908206abf0028c4637","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-b91e4c1-202610020950.0.tgz","fileCount":552,"integrity":"sha512-cqOcbuOf+jMr4HW3Hs9T3tWr1TBdCOSsGy5REt/YjzAnO8kV5AVYlWnyHGN4tqBfkbe1qjuSeDIgOm2Ww+W2/A==","signatures":[{"sig":"MEUCIQDvGwCcxDxDWI6p9Mlw4UGnvzfnx4QcejiNOx/zByxcKQIgXO+x429d6WnXo7yrmTIXFi+NkkjBMA2Ecbl1TmX+w1w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDNVTb3yuV4dK9REAwWC7QKvSdHO0AhzPB8tIkDGBc+qQIgDqRMhF14n97bOKLa51yxM7jDuPLFULNsu0u/895Az/8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37683838},"engines":{"node":">=24.x"},"gitHead":"b91e4c1c6a8a38b58987877b51dce1b9162843c8","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.16.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-97486e4-202609290851.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^6.0.0","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-b91e4c1-202610020950.0_1790934989710_0.7673186847788471","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-b91e4c1-202610021255.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-b91e4c1-202610021255.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-b91e4c1-202610021255.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"a90836b0ac9feea845660f881888d234f6c3892b","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-b91e4c1-202610021255.0.tgz","fileCount":552,"integrity":"sha512-dNFvdrMxPESYOwA2pZsjijJc5ZifywTvyo0h49PVLmbUf2zgGnAq7iLNOr3S7AZ/APf/Y4b55sGJjaDolRnH/Q==","signatures":[{"sig":"MEUCIQCHXnsoaiNIb/jNKRonuwZN8rh8AfdyJs6Z85lK/Y8U1QIgYIv8CGIf6bBsdTkUgcYq3WEKNLv9hFnh33zbjKvJJT0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIGonqzPTU6mhMgRXGHbkTkhMPrTJP9yQKFXol06HDsfdAiBbva1ms4WKvIN8lyRMtnzc1xh9A5ehsAzinLY+8CGbZQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37683873},"engines":{"node":">=24.x"},"gitHead":"b91e4c1c6a8a38b58987877b51dce1b9162843c8","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.16.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-ba102c9-202610021252.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^6.0.0","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-b91e4c1-202610021255.0_1790946094288_0.24837466485215187","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-04c5fb5-202610021321.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-04c5fb5-202610021321.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-04c5fb5-202610021321.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"bb6d795d2a6acee5b8b5bc8b2915fb7137768be1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-04c5fb5-202610021321.0.tgz","fileCount":552,"integrity":"sha512-jhlZQTJIYjclJ01OPIjEWkCd01pYoqjrrULE126fy4hEiN38ttqYM00JZY02hDMKHkVQbXT5/ZhYOqITO2GUSQ==","signatures":[{"sig":"MEUCIQCnpbkjAJaBpLVqqP+KJP/18Pxaqiddyhc0WshPHvDnYgIgS7aveTI8fBqCOZoGsaPO44JLmLYiUoJPyMM/R+PCoVU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBdV9K4hDf9FSEFi7oHj37gsJr5zLZHSL0rtH065kS3GAiA4WsNS10v+WZZNeOVLnY16/5JCffMrs/ZBfxb74B07CQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37693301},"engines":{"node":">=24.x"},"gitHead":"04c5fb53d69ed72655b434917327cd4025e96a52","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.16.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-ba102c9-202610021252.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^6.0.0","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-04c5fb5-202610021321.0_1790947937732_0.1200412339461332","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-9a87dd4-202610021338.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-9a87dd4-202610021338.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-9a87dd4-202610021338.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"ca70bad859b84b4a58463e008abeb6abddb47e96","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-9a87dd4-202610021338.0.tgz","fileCount":552,"integrity":"sha512-geWJcdVQJj8ULM/+fqUjKKknByZMrPYx1f8iiJc39H63RxutTgy3Rft4VBziHHw7Fw4LmabMLMMLXQlTYjeikA==","signatures":[{"sig":"MEYCIQDL7dP6ciBvBL7a5qDP8+h4jHKqaE6zZH3riZOMhWfLCwIhAIEZUW0xdgltcLPK7f7xlAkVrtl9ZS5xXRbMgPz3d9G3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD71jUM45PwK6uH0CKVySQLsBAlqThSHmubNgUnPw2wFwIgfv3tltBy1CBRVJRkp0k3P+JR1ou2lXIRBlMUy2A/CWM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37693625},"engines":{"node":">=24.x"},"gitHead":"9a87dd47be08a1dda7ef7639f31d8cdd73f2a152","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.16.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-ba102c9-202610021252.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^6.0.0","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-9a87dd4-202610021338.0_1790948799344_0.7427851339049865","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-871bda3-202610021348.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-871bda3-202610021348.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-871bda3-202610021348.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"992bd157e69f9a5b4e27c6a72ac805396952855c","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-871bda3-202610021348.0.tgz","fileCount":552,"integrity":"sha512-PVStVMuj1nlpRLxyi7DB8vPv2KPEnUGmeRHM/mnMZKStoiDlG61aqKGQEghoOCTCypLIVs6x8fOvTo+xZ0aaGw==","signatures":[{"sig":"MEUCIDFnce87SSNWy2z68+0e1GsZJWxeV9Wy4U28dTLaAvkMAiEA8xPs3mwxLpD87sUTDUs+66oWYxclWkotuDnI203k6Rs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBg+yJy5thgQiV/FaaHw4RhZaUobFU7uskG6PcQGnVy3AiEAyykY8CxYhDhB/KkqIkmxUT0CLQLgomL2SYRfPVVyYG4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37694137},"engines":{"node":">=24.x"},"gitHead":"871bda3fec64781e7c74440add6f0fcf9e190e02","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.16.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-ba102c9-202610021252.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^6.0.0","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-871bda3-202610021348.0_1790949294905_0.7688974028763844","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-871bda3-202610021406.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-871bda3-202610021406.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-871bda3-202610021406.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"2704afd99ba03dfd970e8b048e45284d915281b9","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-871bda3-202610021406.0.tgz","fileCount":552,"integrity":"sha512-C4QaW3ThLh0sb8g5DldevXh+0T1CKdtQXl8anlNey6dsQF6o3PNCJlew91p9u38WKg9XKuIFIW4ySyrzH/FAUw==","signatures":[{"sig":"MEUCIQCyvBhdK7s0Q5OaDIbgzF4ICahkO/+Npkm6tqVkjjY7XAIgJO2AWlhkktcvGfo+U9nlx/CHmN0BVDJtJ4ahWC0fJts=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDDHxK0f7dsttL07CeevmeDtKeVuqEg9Q1BlBBh91cuAwIhAKNRusg8d8i3HLb+kSt8ygqMw0T4oifcLek/+X14co6T","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37693619},"engines":{"node":">=24.x"},"gitHead":"871bda3fec64781e7c74440add6f0fcf9e190e02","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.16.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-ba102c9-202610021252.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^6.0.0","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-871bda3-202610021406.0_1790950374337_0.24388234858560875","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-87c22ae-202610021448.0":{"name":"@flowfuse/flowfuse","version":"3.1.1-87c22ae-202610021448.0","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","_id":"@flowfuse/flowfuse@3.1.1-87c22ae-202610021448.0","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"homepage":"https://flowfuse.com","bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"dist":{"shasum":"e66e85da9ca5c9d85de8c2c17c074eccc6bbbf27","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-87c22ae-202610021448.0.tgz","fileCount":552,"integrity":"sha512-6iDgJvMvpaG+G7P8DRXq3oxWzfw2zMAE1VSLPqDtp4VUZsbT47Nv4ysGE/xRPgEe7pitnTHH6nmGPyRaygzgpw==","signatures":[{"sig":"MEUCIETwAhXPplVMGL+annfwRPcKz1uKKHOkCneIzi08WvJtAiEApIEL6N80VGwfSXu6ZQQWrhp5yXeiwrKdP3j3hy2ERSk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIF+hp0XsVr2orM+YERMFNK0KbxTmVHJXiFMn0c6FFr1LAiAcb4hJs6nvntiOW1ByyFbDzCCA7U6m75GfOUr2GA3OpQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":37698978},"engines":{"node":">=24.x"},"gitHead":"87c22ae9816dab42ec9af54a4f624199b4c7541d","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.16.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-ba102c9-202610021252.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^6.0.0","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"tmp":"tmp/flowfuse_3.1.1-87c22ae-202610021448.0_1790952960950_0.607528443890238","host":"s3://npm-registry-packages-npm-production"}},"3.1.1-4c68fca-202610022019.0":{"_id":"@flowfuse/flowfuse@3.1.1-4c68fca-202610022019.0","bin":{"flowfuse":"forge/app.js","flowforge":"forge/app.js","ff-install-stack":"scripts/install-stack.js"},"bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"dist":{"shasum":"d33d699f9d55bedc9c2b6a4a7fd170a718d315f1","tarball":"https://registry.npmjs.org/@flowfuse/flowfuse/-/flowfuse-3.1.1-4c68fca-202610022019.0.tgz","fileCount":552,"integrity":"sha512-C/YhyoFx2btj//FRZhNSMeaH+RMsU4XCwPE8rMGzqJP/WcLp1TwJB4gmkqeMvQChjtLNEp36xAOO3WQfFShPAg==","signatures":[{"sig":"MEQCID69Ch1GIyX+by7cuzzigVuZme3QlZunCwm/sGR4tcIrAiB9LEph2iKBV9b6fSX3MtLtA7QBdKbRkqcU6BwGz9h0RQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHJf0yWunjD3F4kSnhTS5C2pXIoT8mykFjV76VZIqLTuAiBmF5oOVHYFnFy6c2MIl828QfzbKpAoWUSo6UaCMqHMqQ=="}],"unpackedSize":37703822},"name":"@flowfuse/flowfuse","author":{"name":"FlowFuse Inc."},"engines":{"node":">=24.x"},"gitHead":"4c68fca0efabdf64e07a21b2c448075e217591e1","license":"SEE LICENSE IN ./LICENSE","scripts":{"lint":"npm-run-all --sequential lint:eslint lint:colors","repl":"node forge/app.js --repl","test":"npm-run-all --sequential lint test:unit test:system","build":"webpack --mode=production -c ./config/webpack.config.js","cover":"npm-run-all --sequential cover:unit cover:system cover:report","serve":"npm-run-all --parallel build-watch start-watch","start":"node forge/app.js","cy:run":"npm-run-all --parallel cy:run:os cy:run:ee","lint:fix":"eslint forge frontend test --fix","cy:run:ee":"cypress run --config-file ./config/cypress-ee.config.js","cy:run:os":"cypress run --config-file ./config/cypress-os.config.js","test:docs":"node test/e2e/docs/valid-links.js ./docs","test:unit":"npm-run-all --sequential test:unit:forge test:unit:frontend","cover:unit":"npm-run-all --sequential cover:unit:forge cover:unit:frontend","cy:open:ee":"cypress open --config-file ./config/cypress-ee.config.js","cy:open:os":"cypress open --config-file ./config/cypress-os.config.js","serve-repl":"npm-run-all --parallel build-watch start-watch-repl","build-watch":"webpack --mode=development -c ./config/webpack.config.js --watch","lint:colors":"node scripts/lint-colors.js","lint:eslint":"eslint forge frontend test","start-watch":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js","test:system":"mocha \"test/system/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:report":"nyc report --reporter=html --reporter=json -t \"./coverage/reports\"","cover:system":"nyc --silent npm run test:system && nyc report --reporter=json --report-dir ./coverage/reports/system/  && mv ./coverage/reports/system/coverage-final.json ./coverage/reports/system-coverage.json","cy:web-server":"npm-run-all --parallel cy:web-server:os cy:web-server:ee","install-stack":"node scripts/install-stack.js --","generate:types":"node scripts/dump-openapi.js && openapi-typescript openapi.json -o frontend/src/types/generated.ts --root-types --root-types-no-schema-prefix","build-watch-hmr":"cross-env NODE_RUN_HOT=hot webpack serve --mode=development -c ./config/webpack.config.js","test:unit:forge":"mocha \"test/unit/forge/**/*_spec.js\" --timeout 10000 --node-option=unhandled-rejections=strict","cover:unit:forge":"nyc --silent npm run test:unit:forge && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cy:web-server:ee":"node ./test/e2e/frontend/test_environment_ee","cy:web-server:os":"node ./test/e2e/frontend/test_environment_os","start-watch-repl":"cross-env NODE_ENV=development nodemon -w forge -w ee/forge -i forge/containers/localfs_root forge/app.js --repl","test:unit:forge:ci":"mocha  \"test/unit/forge/**/*_spec.js\" --bail --timeout 10000 --node-option=unhandled-rejections=strict","test:unit:frontend":"vitest run --config ./config/vitest.config.ts","cover:unit:forge:ci":"nyc --silent npm run test:unit:forge:ci && nyc report --reporter=json --report-dir ./coverage/reports/forge/ && mv ./coverage/reports/forge/coverage-final.json ./coverage/reports/forge-coverage.json","cover:unit:frontend":"vitest --config ./config/vitest.config.ts run --coverage && mv ./coverage/reports/frontend/coverage-final.json ./coverage/reports/frontend-coverage.json"},"version":"3.1.1-4c68fca-202610022019.0","_npmUser":{"name":"flowfuse-user","email":"nick@flowfuse.com"},"homepage":"https://flowfuse.com","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"overrides":{"vite":"6.4.3","uuid@8":"11.1.1","uuid@9":"11.1.1","minimatch@>=9 <9.0.9":"9.0.9","serialize-javascript@<7.0.7":"7.0.7"},"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"_npmVersion":"11.19.0","description":"An open source low-code development platform","directories":{},"maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"_nodeVersion":"24.21.0","dependencies":{"pg":"^8.11.3","vue":"^3.4.5","zod":"^4.4.3","diff":"^9.0.0","mqtt":"^5.16.0","pino":"^10.3.1","uuid":"^14.0.0","yaml":"^2.3.1","axios":"^1.4.0","pinia":"3.0.4","bcrypt":"^6.0.0","dotenv":"^18.0.1","ldapts":"^9.0.0","marked":"^18.0.5","qrcode":"^1.5.3","semver":"~7.8.4","stripe":"^8.222.0","zxcvbn":"^4.4.2","echarts":"^6.1.0","fastify":"^5.8.5","hashids":"^2.3.0","sqlite3":"^6.0.1","cronosjs":"^1.7.1","inquirer":"^14.1.0","dompurify":"^3.3.0","lru-cache":"^11.1.0","sequelize":"^6.33.0","handlebars":"^4.7.7","mqtt-match":"^3.0.0","nodemailer":"^10.0.3","tar-stream":"^3.1.7","vue-router":"^4.2.5","@sentry/vue":"^10.54.0","pino-pretty":"^13.1.3","vue-echarts":"^8.0.1","@sentry/node":"^10.54.0","highlight.js":"^11.11.1","jsonwebtoken":"^9.0.0","posthog-node":"^5.33.2","random-words":"~2.0.0","vue-shepherd":"^3.0.0","@redis/client":"^6.0.0","@heroicons/vue":"2.1.5","fastify-plugin":"^6.0.0","lottie-web-vue":"^2.0.7","@fastify/cookie":"^11.0.2","@fastify/helmet":"^13.0.2","@fastify/routes":"^6.0.2","@fastify/static":"^10.1.0","@headlessui/vue":"1.7.23","fastify-metrics":"^13.2.0","@fastify/swagger":"^9.6.1","@fastify/formbody":"^9.0.0","@fastify/passport":"^3.0.2","vue3-google-login":"^2.0.33","@fastify/multipart":"^10.0.0","@fastify/websocket":"^11.2.0","@fastify/rate-limit":"^11.0.0","@fastify/swagger-ui":"^6.0.0","@levminer/speakeasy":"^1.4.2","google-auth-library":"^11.0.2","@aws-sdk/client-sesv2":"^3.916.0","@sentry/webpack-plugin":"^3.6.1","@vuepic/vue-datepicker":"^11.0.2","@flowfuse/flow-renderer":"^0.5.1","free-email-domains-list":"^1.0.16","@fastify/csrf-protection":"^8.0.0","@fastify/request-context":"^7.0.0","@flowfuse/driver-localfs":"3.1.1-ba102c9-202610021252.0","@node-saml/passport-saml":"^5.0.0","validate-npm-package-name":"^8.0.0","pinia-plugin-persistedstate":"4.7.1","@aws-sdk/credential-provider-node":"^3.352.0"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.20.1","ajv":"^8.18.0","nyc":"^18.0.0","sass":"^1.97.3","jsdom":"^30.0.1","mocha":"^11.7.5","sinon":"^22.0.0","eslint":"^9.39.4","should":"^13.2.3","vitest":"^4.1.9","cypress":"^15.14.2","globals":"17.12.0","nodemon":"^3.0.1","postcss":"^8.4.29","vue-tsc":"^3.2.6","webpack":"^5.88.2","mockdate":"^3.0.5","promptly":"^3.2.0","cross-env":"^10.1.0","mocha-cli":"^1.0.1","ts-loader":"^9.5.7","@eslint/js":"^9.39.4","css-loader":"^7.1.2","proxyquire":"^2.1.3","typescript":"^5.9.3","vue-loader":"^17.4.2","@babel/core":"^7.22.15","@types/mqtt":"^2.5.0","file-loader":"^6.2.0","neostandard":"^0.13.0","npm-run-all":"^4.1.5","sass-loader":"^16.0.2","tailwindcss":"^4.2.4","webpack-cli":"^7.0.2","autoprefixer":"^10.4.15","babel-loader":"^10.1.1","should-sinon":"^0.0.6","style-loader":"^4.0.0","@pinia/testing":"1.0.3","dotenv-webpack":"^9.0.0","postcss-loader":"^8.1.1","@vue/test-utils":"^2.4.3","cypress-mailpit":"^0.0.4","@babel/preset-env":"^7.22.15","eslint-plugin-vue":"^10.9.2","vue-eslint-parser":"^10.4.1","@vitejs/plugin-vue":"^6.0.7","openapi-typescript":"^7.13.0","webpack-dev-server":"^6.0.0","copy-webpack-plugin":"^14.0.0","html-link-extractor":"^1.0.5","html-webpack-plugin":"^5.5.3","@tailwindcss/postcss":"^4.2.4","clean-webpack-plugin":"^4.0.0","eslint-plugin-cypress":"^6.4.2","eslint-plugin-import-x":"^4.17.1","mini-css-extract-plugin":"^2.7.6","@typescript-eslint/parser":"^8.58.0","@vitest/coverage-istanbul":"^4.1.9","eslint-plugin-no-only-tests":"^3.4.0","@fastify/response-validation":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.58.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/flowfuse_3.1.1-4c68fca-202610022019.0_1790972738329_0.7973723446306"}}},"time":{"created":"2023-12-19T14:20:27.268Z","modified":"2026-10-02T20:25:38.839Z","1.14.1":"2023-12-19T14:20:27.649Z","1.14.2-2ec1846-202312211045.0":"2023-12-21T10:46:56.261Z","1.14.2-2ec1846-202312211049.0":"2023-12-21T10:51:03.621Z","1.14.2-07b3bf5-202312211104.0":"2023-12-21T11:05:30.203Z","1.14.2-07b3bf5-202312211111.0":"2023-12-21T11:12:30.376Z","1.14.2-07b3bf5-202312211331.0":"2023-12-21T13:32:20.245Z","1.14.2-07b3bf5-202312211333.0":"2023-12-21T13:34:58.344Z","1.15.0":"2023-12-21T13:40:03.228Z","1.15.1-9fa974f-202312211349.0":"2023-12-21T13:50:06.018Z","1.15.1-0335c90-202312221307.0":"2023-12-22T13:08:08.373Z","1.15.1-14fbc5f-202312221529.0":"2023-12-22T15:30:32.921Z","1.15.1-5100509-202312221623.0":"2023-12-22T16:24:18.055Z","1.15.1-0301fdf-202401021043.0":"2024-01-02T10:44:20.281Z","1.15.1-f38acb8-202401021533.0":"2024-01-02T15:34:23.325Z","1.15.1-1688ce1-202401021545.0":"2024-01-02T15:46:55.031Z","1.15.1-248b4f4-202401021553.0":"2024-01-02T15:54:37.160Z","1.15.1-248b4f4-202401021559.0":"2024-01-02T16:00:40.617Z","1.15.1-248b4f4-202401021602.0":"2024-01-02T16:03:57.672Z","1.15.1-eb4473f-202401021701.0":"2024-01-02T17:02:16.606Z","1.15.1-a295288-202401040927.0":"2024-01-04T09:28:46.496Z","1.15.1-600a0f4-202401041245.0":"2024-01-04T12:46:22.590Z","1.15.1-1f7e349-202401041318.0":"2024-01-04T13:19:25.596Z","1.15.1-fe5b4bb-202401041825.0":"2024-01-04T18:26:10.705Z","1.15.1-0e4a2d3-202401051651.0":"2024-01-05T16:52:47.990Z","1.15.1-e7274a3-202401071853.0":"2024-01-07T18:54:25.711Z","1.15.1-c8a5404-202401091401.0":"2024-01-09T14:02:26.424Z","1.15.1-793ef24-202401091436.0":"2024-01-09T14:37:57.566Z","1.15.1-c64aa28-202401091513.0":"2024-01-09T15:14:41.469Z","1.15.1-cc8404f-202401101520.0":"2024-01-10T15:21:19.214Z","1.15.1-cc8404f-202401101527.0":"2024-01-10T15:28:21.237Z","1.15.1-cc8404f-202401101717.0":"2024-01-10T17:18:58.662Z","1.15.1-d5d4ed6-202401110931.0":"2024-01-11T09:32:13.525Z","1.15.1-463a348-202401111205.0":"2024-01-11T12:06:09.233Z","1.15.1-ba9f167-202401111724.0":"2024-01-11T17:25:29.204Z","1.15.1-2750159-202401111734.0":"2024-01-11T17:35:49.610Z","1.15.1-c9f9f8a-202401120935.0":"2024-01-12T09:36:26.293Z","1.15.1-51e46dd-202401121008.0":"2024-01-12T10:09:49.276Z","1.15.1-214fc03-202401121115.0":"2024-01-12T11:16:53.475Z","1.15.1-5995f8a-202401121445.0":"2024-01-12T14:46:05.534Z","1.15.1-5995f8a-202401121451.0":"2024-01-12T14:52:54.979Z","1.15.1-16ffc90-202401151045.0":"2024-01-15T10:46:56.841Z","1.15.1-16ffc90-202401151054.0":"2024-01-15T10:55:31.676Z","1.15.1-22cf30d-202401151157.0":"2024-01-15T11:58:39.854Z","1.15.1-960a198-202401151202.0":"2024-01-15T12:03:28.380Z","1.15.1-45f88f2-202401151530.0":"2024-01-15T15:31:16.194Z","1.15.1-45f88f2-202401151537.0":"2024-01-15T15:38:36.575Z","1.15.1-45f88f2-202401151617.0":"2024-01-15T16:18:42.357Z","1.15.1-d38ccba-202401151654.0":"2024-01-15T16:55:06.150Z","1.15.1-bda021c-202401151721.0":"2024-01-15T17:22:33.861Z","1.15.1-e1584f4-202401152226.0":"2024-01-15T22:27:06.029Z","1.15.1-cea84ad-202401161048.0":"2024-01-16T10:49:07.256Z","1.15.1-9579e30-202401161117.0":"2024-01-16T11:18:50.141Z","1.15.1-32d6063-202401161419.0":"2024-01-16T14:20:47.601Z","1.15.1-8aa9ec6-202401171000.0":"2024-01-17T10:01:22.135Z","1.15.1-8aa9ec6-202401171006.0":"2024-01-17T10:07:11.526Z","1.15.1-7ad420b-202401171458.0":"2024-01-17T14:59:10.287Z","1.15.1-d785306-202401171508.0":"2024-01-17T15:09:42.728Z","1.15.1-d785306-202401181023.0":"2024-01-18T10:24:44.495Z","1.15.1-d785306-202401181025.0":"2024-01-18T10:26:15.645Z","2.0.0":"2024-01-18T10:38:24.701Z","2.0.1-4a760cd-202401181048.0":"2024-01-18T10:49:05.461Z","2.0.1-e9d2aec-202401181500.0":"2024-01-18T15:02:00.370Z","2.0.1-787e80a-202401191134.0":"2024-01-19T11:35:15.407Z","2.0.1-fc3932a-202401191152.0":"2024-01-19T11:53:25.892Z","2.0.1-fc3932a-202401191207.0":"2024-01-19T12:08:52.139Z","2.0.1-0f6e814-202401191436.0":"2024-01-19T14:37:21.734Z","2.0.1-82f4e1b-202401221140.0":"2024-01-22T11:41:30.158Z","2.0.1-850bd01-202401221552.0":"2024-01-22T15:53:55.225Z","2.0.1-4e15018-202401230930.0":"2024-01-23T09:31:54.577Z","2.0.1-4e15018-202401230934.0":"2024-01-23T09:35:39.860Z","2.0.1-4e15018-202401230936.0":"2024-01-23T09:37:45.320Z","2.0.1-4e15018-202401230955.0":"2024-01-23T09:56:38.524Z","2.0.1-8e8cf85-202401231009.0":"2024-01-23T10:10:24.127Z","2.0.1-8e8cf85-202401231012.0":"2024-01-23T10:13:07.291Z","2.0.1-432d9c5-202401231030.0":"2024-01-23T10:31:36.502Z","2.0.1-432d9c5-202401231352.0":"2024-01-23T13:53:21.167Z","2.0.1-432d9c5-202401231412.0":"2024-01-23T14:13:49.274Z","2.0.1":"2024-01-23T14:47:39.194Z","2.0.2-749fe26-202401231455.0":"2024-01-23T14:57:03.467Z","2.0.2-3850e58-202401231547.0":"2024-01-23T15:48:06.102Z","2.0.2-6d7d4cc-202401240931.0":"2024-01-24T09:32:51.914Z","2.0.2-501b361-202401241043.0":"2024-01-24T10:44:40.517Z","2.0.2-05ead6a-202401261142.0":"2024-01-26T11:43:14.897Z","2.0.2-16cf95b-202401261333.0":"2024-01-26T13:34:31.926Z","2.0.2-8427346-202401261649.0":"2024-01-26T16:50:00.524Z","2.0.2-9bc98df-202401290912.0":"2024-01-29T09:13:56.339Z","2.0.2-8e6c6b6-202401291150.0":"2024-01-29T11:51:06.603Z","2.0.2-590233b-202401291306.0":"2024-01-29T13:07:37.049Z","2.0.2-6b0e36b-202401291455.0":"2024-01-29T14:56:01.843Z","2.0.2-01db9b4-202401301128.0":"2024-01-30T11:29:33.436Z","2.0.2-01db9b4-202401301131.0":"2024-01-30T11:32:20.337Z","2.0.2-01db9b4-202401301132.0":"2024-01-30T11:33:53.396Z","2.0.2-01db9b4-202401301136.0":"2024-01-30T11:37:39.956Z","2.0.2-610c998-202401301331.0":"2024-01-30T13:32:16.982Z","2.0.2-ed44f35-202401301400.0":"2024-01-30T14:01:25.899Z","2.0.2-e85cbaa-202401311505.0":"2024-01-31T15:06:18.963Z","2.0.2-d0f6c98-202401311756.0":"2024-01-31T17:57:20.265Z","2.0.2-2331d72-202401312044.0":"2024-01-31T20:45:08.948Z","2.0.2-79f2e21-202402010748.0":"2024-02-01T07:49:51.937Z","2.0.2-1106bac-202402010836.0":"2024-02-01T08:37:20.240Z","2.0.2-8e6736b-202402011153.0":"2024-02-01T11:54:21.409Z","2.0.2-d665d06-202402020937.0":"2024-02-02T09:38:49.361Z","2.0.2-9723fe9-202402021130.0":"2024-02-02T11:31:21.729Z","2.0.2-1b92584-202402021229.0":"2024-02-02T12:30:08.317Z","2.0.2-3f2ac1c-202402021735.0":"2024-02-02T17:36:43.379Z","2.0.2-25e6e62-202402021737.0":"2024-02-02T17:38:56.647Z","2.0.2-4f6f294-202402021803.0":"2024-02-02T18:04:18.800Z","2.0.2-4f6f294-202402021806.0":"2024-02-02T18:07:44.584Z","2.0.2-c0d1a39-202402021822.0":"2024-02-02T18:23:16.294Z","2.0.2-8de1ba9-202402051102.0":"2024-02-05T11:03:00.383Z","2.0.2-a8422ea-202402051525.0":"2024-02-05T15:26:58.605Z","2.0.2-d347177-202402051555.0":"2024-02-05T15:56:26.526Z","2.0.2-d347177-202402051653.0":"2024-02-05T16:54:13.756Z","2.0.2-3b7ed0e-202402051804.0":"2024-02-05T18:05:20.182Z","2.0.2-3900376-202402060953.0":"2024-02-06T09:54:03.076Z","2.0.2-3900376-202402061002.0":"2024-02-06T10:03:18.659Z","2.0.2-a3edd3e-202402061031.0":"2024-02-06T10:32:04.881Z","2.0.2-7da4626-202402061036.0":"2024-02-06T10:37:09.313Z","2.0.2-bc79846-202402061432.0":"2024-02-06T14:33:52.598Z","2.0.2-3ec2e65-202402061515.0":"2024-02-06T15:17:01.768Z","2.0.2-cf40e8a-202402061807.0":"2024-02-06T18:09:01.307Z","2.0.2-cf40e8a-202402071014.0":"2024-02-07T10:16:08.478Z","2.0.2-215d7a2-202402071227.0":"2024-02-07T12:28:43.589Z","2.0.2-8b76c12-202402071258.0":"2024-02-07T12:59:06.294Z","2.0.2-b75b0a4-202402071333.0":"2024-02-07T13:34:57.975Z","2.0.2-5cf9e6a-202402071340.0":"2024-02-07T13:41:49.538Z","2.0.2-2de789f-202402081437.0":"2024-02-08T14:38:17.774Z","2.0.2-2de789f-202402081443.0":"2024-02-08T14:44:31.163Z","2.0.2-2de789f-202402121002.0":"2024-02-12T10:03:57.870Z","2.0.2-7f6f405-202402121606.0":"2024-02-12T16:07:21.711Z","2.0.2-7f6f405-202402121608.0":"2024-02-12T16:09:08.311Z","2.0.2-7f6f405-202402121609.0":"2024-02-12T16:11:14.491Z","2.0.2-7f6f405-202402121613.0":"2024-02-12T16:14:22.246Z","2.0.2-4e8b625-202402130900.0":"2024-02-13T09:01:55.157Z","2.0.2-7ce995a-202402131437.0":"2024-02-13T14:39:25.821Z","2.0.2-005e863-202402131643.0":"2024-02-13T16:44:31.333Z","2.0.2-97d2901-202402141026.0":"2024-02-14T10:27:00.599Z","2.0.2-faf15fe-202402151207.0":"2024-02-15T12:08:13.723Z","2.0.2-faf15fe-202402151355.0":"2024-02-15T13:56:28.865Z","2.0.2-faf15fe-202402151359.0":"2024-02-15T14:00:42.827Z","2.1.0":"2024-02-15T14:17:19.837Z","2.1.1-0ad3ff8-202402151424.0":"2024-02-15T14:25:32.970Z","2.1.1-173eeed-202402151653.0":"2024-02-15T16:54:54.380Z","2.1.1-de8e1a2-202402191004.0":"2024-02-19T10:05:48.032Z","2.1.1-de8e1a2-202402191010.0":"2024-02-19T10:12:01.660Z","2.1.1-07b531b-202402191025.0":"2024-02-19T10:26:08.523Z","2.1.1-f0a0f03-202402191112.0":"2024-02-19T11:13:20.317Z","2.1.1-ac2675c-202402191150.0":"2024-02-19T11:51:39.657Z","2.1.1-8e31538-202402201002.0":"2024-02-20T10:04:01.928Z","2.1.1-3cab712-202402201131.0":"2024-02-20T11:32:54.305Z","2.1.1-24e1d62-202402210913.0":"2024-02-21T09:14:52.107Z","2.1.1-24e1d62-202402210916.0":"2024-02-21T09:17:28.801Z","2.1.1-24e1d62-202402210919.0":"2024-02-21T09:20:54.720Z","2.1.1-ca1b89b-202402210944.0":"2024-02-21T09:45:45.091Z","2.1.1-ca1b89b-202402210950.0":"2024-02-21T09:51:29.853Z","2.1.1-6e8647c-202402211918.0":"2024-02-21T19:19:51.709Z","2.1.1-54f75e9-202402220939.0":"2024-02-22T09:41:00.376Z","2.1.1-0b4e1fe-202402231433.0":"2024-02-23T14:34:56.004Z","2.1.1-d281b22-202402261349.0":"2024-02-26T13:50:32.408Z","2.1.1-335538c-202402271725.0":"2024-02-27T17:26:14.985Z","2.1.1-335538c-202402271757.0":"2024-02-27T17:59:12.960Z","2.1.1-1160256-202402280949.0":"2024-02-28T09:50:48.542Z","2.1.1-1160256-202402281120.0":"2024-02-28T11:22:09.126Z","2.1.1-1160256-202402281139.0":"2024-02-28T11:40:55.937Z","2.1.1":"2024-02-28T11:54:25.852Z","2.1.2-be21771-202402281201.0":"2024-02-28T12:02:32.424Z","2.1.2-2badcf3-202402291544.0":"2024-02-29T15:45:53.585Z","2.1.2-6b1332f-202402291613.0":"2024-02-29T16:14:18.738Z","2.1.2-de527e0-202403040931.0":"2024-03-04T09:32:26.368Z","2.1.2-4ade4c3-202403041059.0":"2024-03-04T11:00:54.725Z","2.1.2-f389674-202403041206.0":"2024-03-04T12:07:12.445Z","2.1.2-114a8a5-202403051058.0":"2024-03-05T10:59:41.386Z","2.1.2-114a8a5-202403051102.0":"2024-03-05T11:03:45.693Z","2.1.2-826bd37-202403080957.0":"2024-03-08T09:58:51.665Z","2.1.2-826bd37-202403081000.0":"2024-03-08T10:01:28.063Z","2.1.2-d3eaf05-202403111131.0":"2024-03-11T11:32:26.555Z","2.1.2-d3eaf05-202403111508.0":"2024-03-11T15:10:07.155Z","2.1.2-a2674d9-202403111540.0":"2024-03-11T15:41:42.055Z","2.1.2-a2674d9-202403111542.0":"2024-03-11T15:43:09.565Z","2.1.2-a2674d9-202403111544.0":"2024-03-11T15:45:20.391Z","2.1.2-1b1180c-202403111551.0":"2024-03-11T15:53:09.748Z","2.1.2-bfd7cf5-202403111601.0":"2024-03-11T16:02:31.422Z","2.1.2-77cd320-202403111652.0":"2024-03-11T16:53:45.116Z","2.1.2-4fb3dee-202403120935.0":"2024-03-12T09:36:19.296Z","2.1.2-e5d8954-202403121029.0":"2024-03-12T10:30:40.786Z","2.1.2-4dd5cfa-202403121730.0":"2024-03-12T17:31:09.056Z","2.1.2-ed98388-202403131008.0":"2024-03-13T10:09:49.339Z","2.1.2-bf6bcee-202403131045.0":"2024-03-13T10:46:36.779Z","2.1.2-bf6bcee-202403131048.0":"2024-03-13T10:49:27.270Z","2.1.2-bf6bcee-202403131149.0":"2024-03-13T11:50:39.594Z","2.1.2-ac9b70b-202403131205.0":"2024-03-13T12:06:38.134Z","2.1.2-ac9b70b-202403131207.0":"2024-03-13T12:08:08.429Z","2.1.2-ac9b70b-202403131508.0":"2024-03-13T15:09:18.585Z","2.1.2-1b6e344-202403131545.0":"2024-03-13T15:46:24.821Z","2.1.2-c7251c2-202403131648.0":"2024-03-13T16:49:38.705Z","2.1.2-3603b03-202403141107.0":"2024-03-14T11:08:45.062Z","2.1.2-3603b03-202403141112.0":"2024-03-14T11:13:40.359Z","2.1.2-80231d6-202403141203.0":"2024-03-14T12:05:21.514Z","2.1.2-80231d6-202403141327.0":"2024-03-14T13:28:32.898Z","2.1.2-80231d6-202403141329.0":"2024-03-14T13:30:53.062Z","2.2.0":"2024-03-14T13:37:42.525Z","2.2.1-c33913f-202403141345.0":"2024-03-14T13:46:36.075Z","2.2.1-6204741-202403141618.0":"2024-03-14T16:19:45.716Z","2.2.1-e5d8b6c-202403151113.0":"2024-03-15T11:14:20.885Z","2.2.1-e5d8b6c-202403151700.0":"2024-03-15T17:01:40.815Z","2.2.1-5eefc87-202403162253.0":"2024-03-16T22:54:59.238Z","2.2.1-5eefc87-202403170754.0":"2024-03-17T07:55:35.487Z","2.2.1-9cecb0c-202403181026.0":"2024-03-18T10:27:40.304Z","2.2.1-bda9717-202403181107.0":"2024-03-18T11:09:01.563Z","2.2.1-5eea098-202403181125.0":"2024-03-18T11:26:35.165Z","2.2.1-835176f-202403191019.0":"2024-03-19T10:20:33.103Z","2.2.1-b5f8d11-202403191334.0":"2024-03-19T13:35:33.771Z","2.2.1-35ddb79-202403191420.0":"2024-03-19T14:21:19.257Z","2.2.1-35ddb79-202403191424.0":"2024-03-19T14:26:12.499Z","2.2.1-35ddb79-202403191730.0":"2024-03-19T17:31:22.358Z","2.2.1-35ddb79-202403191732.0":"2024-03-19T17:33:34.699Z","2.2.1-3150063-202403200900.0":"2024-03-20T09:01:45.661Z","2.2.1-c045c60-202403200921.0":"2024-03-20T09:22:21.979Z","2.2.1-c045c60-202403201007.0":"2024-03-20T10:08:47.729Z","2.2.1-c045c60-202403201048.0":"2024-03-20T10:49:31.323Z","2.2.1-c045c60-202403201103.0":"2024-03-20T11:04:14.871Z","2.2.1":"2024-03-20T14:00:23.767Z","2.2.2-897e78e-202403201407.0":"2024-03-20T14:08:50.036Z","2.2.2-6dc72f3-202403211114.0":"2024-03-21T11:15:23.010Z","2.2.2-3dcdec0-202403211933.0":"2024-03-21T19:34:42.223Z","2.2.2-56ef087-202403221055.0":"2024-03-22T10:56:10.872Z","2.2.2-7464dab-202403221205.0":"2024-03-22T12:07:01.187Z","2.2.2-7464dab-202403221209.0":"2024-03-22T12:10:56.678Z","2.2.2-a808d0f-202403221333.0":"2024-03-22T13:34:41.056Z","2.2.2-2c1c829-202403221353.0":"2024-03-22T13:54:46.905Z","2.2.2-b036130-202403251604.0":"2024-03-25T16:05:57.185Z","2.2.2-7536e5b-202403251621.0":"2024-03-25T16:22:15.694Z","2.2.2-7536e5b-202403251623.0":"2024-03-25T16:24:26.684Z","2.2.2-1b52bd1-202403251654.0":"2024-03-25T16:55:16.722Z","2.2.2-9b1d344-202403261011.0":"2024-03-26T10:12:02.058Z","2.2.2-58681bb-202403261100.0":"2024-03-26T11:02:10.953Z","2.2.2-c72a851-202403270931.0":"2024-03-27T09:33:02.239Z","2.2.2-76c47c6-202403281128.0":"2024-03-28T11:29:24.783Z","2.2.2-2075eed-202403281219.0":"2024-03-28T12:21:33.255Z","2.2.2-b9d70ad-202403281310.0":"2024-03-28T13:11:51.238Z","2.2.2-b9d70ad-202403301031.0":"2024-03-30T10:32:51.652Z","2.2.2-830cef9-202404020917.0":"2024-04-02T09:18:28.630Z","2.2.2-8e5d441-202404020959.0":"2024-04-02T10:00:44.102Z","2.2.2-842cf83-202404021322.0":"2024-04-02T13:23:48.835Z","2.2.2-6c7adc4-202404031053.0":"2024-04-03T10:54:16.211Z","2.2.2-6c7adc4-202404031057.0":"2024-04-03T10:58:05.806Z","2.2.2-9ed7eca-202404031206.0":"2024-04-03T12:07:39.003Z","2.2.2-b721986-202404031300.0":"2024-04-03T13:01:55.732Z","2.2.2-ae8e0b5-202404031617.0":"2024-04-03T16:18:57.488Z","2.2.2-780db72-202404041056.0":"2024-04-04T10:57:53.048Z","2.2.2-780db72-202404041109.0":"2024-04-04T11:10:05.935Z","2.2.2-d4e668b-202404041649.0":"2024-04-04T16:50:32.602Z","2.2.2-932ef94-202404042211.0":"2024-04-04T22:12:31.510Z","2.2.2-f0c1d99-202404051027.0":"2024-04-05T10:29:04.936Z","2.2.2-ae6b1a2-202404051242.0":"2024-04-05T12:43:15.887Z","2.2.2-ae6b1a2-202404051252.0":"2024-04-05T12:53:57.117Z","2.2.2-ae6b1a2-202404051258.0":"2024-04-05T12:59:16.855Z","2.2.2":"2024-04-05T13:24:00.930Z","2.2.3-ba6d261-202404051330.0":"2024-04-05T13:31:30.663Z","2.2.3-216d58a-202404081147.0":"2024-04-08T11:48:42.484Z","2.2.3-edaf959-202404081209.0":"2024-04-08T12:10:53.601Z","2.2.3-98693a5-202404081432.0":"2024-04-08T14:33:13.095Z","2.2.3-72e7ee2-202404081519.0":"2024-04-08T15:20:57.249Z","2.2.3-b53bbcf-202404090858.0":"2024-04-09T08:59:22.440Z","2.2.3-87e37b1-202404091253.0":"2024-04-09T12:54:39.946Z","2.2.3-87e37b1-202404091300.0":"2024-04-09T13:01:10.169Z","2.2.3-c904142-202404091430.0":"2024-04-09T14:31:15.244Z","2.2.3-332146d-202404091445.0":"2024-04-09T14:46:35.921Z","2.2.3-21e7ce4-202404091500.0":"2024-04-09T15:01:35.919Z","2.2.3-8a904ba-202404100840.0":"2024-04-10T08:41:30.046Z","2.2.3-72da25e-202404100901.0":"2024-04-10T09:02:52.278Z","2.2.3-9fe20a9-202404100953.0":"2024-04-10T09:54:20.468Z","2.2.3-b4554e6-202404101027.0":"2024-04-10T10:28:10.390Z","2.2.3-d89ac63-202404101526.0":"2024-04-10T15:27:12.567Z","2.2.3-b5326bd-202404101549.0":"2024-04-10T15:50:51.468Z","2.2.3-b5326bd-202404110846.0":"2024-04-11T08:48:11.342Z","2.2.3-b5326bd-202404110850.0":"2024-04-11T08:51:40.107Z","2.3.0":"2024-04-11T09:06:14.446Z","2.3.1-70f518f-202404110913.0":"2024-04-11T09:14:08.897Z","2.3.1-70f518f-202404120927.0":"2024-04-12T09:28:15.092Z","2.3.1-fe17ea7-202404151501.0":"2024-04-15T15:02:34.591Z","2.3.1-d9c3847-202404151530.0":"2024-04-15T15:31:24.795Z","2.3.1-04afcca-202404151556.0":"2024-04-15T15:57:33.065Z","2.3.1-31d8e59-202404151601.0":"2024-04-15T16:02:23.427Z","2.3.1-31d8e59-202404151608.0":"2024-04-15T16:09:07.947Z","2.3.1-d4a423a-202404151633.0":"2024-04-15T16:34:43.642Z","2.3.1-9464489-202404151703.0":"2024-04-15T17:04:46.172Z","2.3.1-b4fe7d1-202404160931.0":"2024-04-16T09:32:41.826Z","2.3.1-441bc23-202404161113.0":"2024-04-16T11:14:11.936Z","2.3.1-215cce9-202404161230.0":"2024-04-16T12:31:45.580Z","2.3.1-c0b279d-202404161300.0":"2024-04-16T13:01:58.427Z","2.3.1-e0916fa-202404171128.0":"2024-04-17T11:29:49.408Z","2.3.1-6b92d2d-202404171327.0":"2024-04-17T13:28:42.040Z","2.3.1-8264757-202404171539.0":"2024-04-17T15:41:13.202Z","2.3.1-accf764-202404180716.0":"2024-04-18T07:17:09.217Z","2.3.1-985a3c6-202404181027.0":"2024-04-18T10:28:35.073Z","2.3.1-985a3c6-202404181142.0":"2024-04-18T11:43:14.780Z","2.3.1-985a3c6-202404181432.0":"2024-04-18T14:33:33.257Z","2.3.1-acc930a-202404191315.0":"2024-04-19T13:16:22.048Z","2.3.1-0f95391-202404221618.0":"2024-04-22T16:19:47.160Z","2.3.1-e1696cf-202404221640.0":"2024-04-22T16:41:07.511Z","2.3.1-32ea137-202404230901.0":"2024-04-23T09:02:26.607Z","2.3.1-49f1aca-202404230921.0":"2024-04-23T09:22:58.838Z","2.3.1-da40d72-202404231021.0":"2024-04-23T10:22:55.248Z","2.3.1-2ca4eee-202404231056.0":"2024-04-23T10:57:54.487Z","2.3.1-f0d543d-202404231116.0":"2024-04-23T11:17:43.733Z","2.3.1-40ed80b-202404241044.0":"2024-04-24T10:45:39.040Z","2.3.1-b4c8ae1-202404241444.0":"2024-04-24T14:45:23.394Z","2.3.1-8e2b814-202404241603.0":"2024-04-24T16:04:55.669Z","2.3.1-2976bed-202404251031.0":"2024-04-25T10:32:36.486Z","2.3.1-25a5e52-202404251825.0":"2024-04-25T18:26:23.387Z","2.3.1-6ad9cca-202404252118.0":"2024-04-25T21:19:24.155Z","2.3.1-738d467-202404261419.0":"2024-04-26T14:20:56.086Z","2.3.1-5022efd-202404261429.0":"2024-04-26T14:30:57.737Z","2.3.1-5022efd-202404261433.0":"2024-04-26T14:34:47.859Z","2.3.1-87e8fa9-202404261601.0":"2024-04-26T16:03:00.344Z","2.3.1-87e8fa9-202404261625.0":"2024-04-26T16:27:02.926Z","2.3.1-64cd01e-202404291040.0":"2024-04-29T10:41:11.411Z","2.3.1-8c36a97-202404291537.0":"2024-04-29T15:39:03.679Z","2.3.1-ae612aa-202405011141.0":"2024-05-01T11:42:43.473Z","2.3.1-b7e13e5-202405011259.0":"2024-05-01T13:00:43.846Z","2.3.1-426379c-202405011415.0":"2024-05-01T14:16:28.895Z","2.3.1-0a0506c-202405011456.0":"2024-05-01T14:57:14.890Z","2.3.1-2182004-202405011513.0":"2024-05-01T15:15:24.261Z","2.3.1-2c2a7aa-202405011532.0":"2024-05-01T15:34:04.820Z","2.3.1-2c2a7aa-202405011538.0":"2024-05-01T15:39:40.824Z","2.3.1-561e3e0-202405021036.0":"2024-05-02T10:37:31.790Z","2.3.1-9844d59-202405021531.0":"2024-05-02T15:32:35.748Z","2.3.1-9844d59-202405021655.0":"2024-05-02T16:56:13.940Z","2.3.1-9844d59-202405030942.0":"2024-05-03T09:43:33.668Z","2.3.1-b34cf65-202405030956.0":"2024-05-03T09:57:16.017Z","2.3.1-b34cf65-202405031016.0":"2024-05-03T10:17:20.945Z","2.3.1-b34cf65-202405031024.0":"2024-05-03T10:25:09.876Z","2.3.1-8cd145d-202405031256.0":"2024-05-03T12:57:19.118Z","2.3.1-294c6d0-202405070845.0":"2024-05-07T08:46:30.666Z","2.3.1-519b77d-202405070927.0":"2024-05-07T09:29:07.777Z","2.3.1-69af6d8-202405070953.0":"2024-05-07T09:54:15.442Z","2.3.1-3cc710c-202405071114.0":"2024-05-07T11:15:27.994Z","2.3.1-2173621-202405071300.0":"2024-05-07T13:01:12.440Z","2.3.1-6887f75-202405071548.0":"2024-05-07T15:49:47.542Z","2.3.1-d260512-202405071630.0":"2024-05-07T16:31:09.966Z","2.3.1-71bb4dd-202405080902.0":"2024-05-08T09:03:20.020Z","2.3.1-1aa0b27-202405080931.0":"2024-05-08T09:33:02.488Z","2.3.1-fe2e18f-202405080949.0":"2024-05-08T09:50:19.618Z","2.3.1-9395ad5-202405081026.0":"2024-05-08T10:28:10.010Z","2.3.1-6c8efd2-202405081245.0":"2024-05-08T12:46:39.245Z","2.3.1-6c8efd2-202405090843.0":"2024-05-09T08:44:21.617Z","2.3.1-6c8efd2-202405090845.0":"2024-05-09T08:46:45.046Z","2.4.0":"2024-05-09T08:54:52.492Z","2.4.1-0057a95-202405090902.0":"2024-05-09T09:03:48.585Z","2.4.1-951664c-202405100858.0":"2024-05-10T08:59:47.987Z","2.4.1-fd7ad70-202405141111.0":"2024-05-14T11:12:40.851Z","2.4.1-c1c6c18-202405141254.0":"2024-05-14T12:56:00.892Z","2.4.1-470c42e-202405141332.0":"2024-05-14T13:33:15.414Z","2.4.1-d99d46c-202405141453.0":"2024-05-14T14:54:32.612Z","2.4.1-97b8114-202405150948.0":"2024-05-15T09:50:00.045Z","2.4.1-f4ac3cc-202405161353.0":"2024-05-16T13:54:48.684Z","2.4.1-357668f-202405161531.0":"2024-05-16T15:32:24.347Z","2.4.1-c63326a-202405161540.0":"2024-05-16T15:41:55.804Z","2.4.1-0aa6d7a-202405170739.0":"2024-05-17T07:40:40.697Z","2.4.1-ca5df48-202405170751.0":"2024-05-17T07:52:25.405Z","2.4.1-201392a-202405170811.0":"2024-05-17T08:12:16.765Z","2.4.1-6ffa0a7-202405170839.0":"2024-05-17T08:40:46.476Z","2.4.1-4108f95-202405170948.0":"2024-05-17T09:49:46.575Z","2.4.1-830d453-202405171049.0":"2024-05-17T10:50:59.533Z","2.4.1-bdebeb0-202405171105.0":"2024-05-17T11:06:51.915Z","2.4.1-6e4e0df-202405171219.0":"2024-05-17T12:20:22.405Z","2.4.1-50946bb-202405171319.0":"2024-05-17T13:20:39.897Z","2.4.1-3a94595-202405171653.0":"2024-05-17T16:54:57.412Z","2.4.1-2483051-202405210838.0":"2024-05-21T08:39:43.137Z","2.4.1-2884598-202405210932.0":"2024-05-21T09:34:05.976Z","2.4.1-28bf42f-202405211306.0":"2024-05-21T13:08:07.149Z","2.4.1-db49a3b-202405211452.0":"2024-05-21T14:54:01.173Z","2.4.1-db49a3b-202405211458.0":"2024-05-21T14:59:41.407Z","2.4.1-1728ec7-202405211642.0":"2024-05-21T16:43:33.874Z","2.4.1-f852927-202405211703.0":"2024-05-21T17:04:46.093Z","2.4.1-67b459b-202405220934.0":"2024-05-22T09:35:32.763Z","2.4.1-091181b-202405221024.0":"2024-05-22T10:25:54.897Z","2.4.1-fa56d6e-202405221031.0":"2024-05-22T10:32:24.344Z","2.4.1-850df1f-202405221033.0":"2024-05-22T10:34:31.853Z","2.4.1-7dea545-202405221049.0":"2024-05-22T10:50:06.303Z","2.4.1-67b31b2-202405221207.0":"2024-05-22T12:08:53.892Z","2.4.1-55d624f-202405221245.0":"2024-05-22T12:46:43.085Z","2.4.1-10f218b-202405221323.0":"2024-05-22T13:25:02.900Z","2.4.1-14dc853-202405221345.0":"2024-05-22T13:46:14.240Z","2.4.1-7a1a3c2-202405231437.0":"2024-05-23T14:38:40.063Z","2.4.1-7a1a3c2-202405240911.0":"2024-05-24T09:12:34.374Z","2.4.1-45b1a1c-202405241058.0":"2024-05-24T10:59:20.610Z","2.4.1-45b1a1c-202405241316.0":"2024-05-24T13:17:57.254Z","2.4.1-45b1a1c-202405241321.0":"2024-05-24T13:22:48.492Z","2.4.1-2f654bf-202405241416.0":"2024-05-24T14:17:24.614Z","2.4.1-2f654bf-202405241608.0":"2024-05-24T16:09:32.085Z","2.4.1-c202138-202405281101.0":"2024-05-28T11:02:40.718Z","2.4.1-c202138-202405281104.0":"2024-05-28T11:05:59.242Z","2.4.1-c202138-202405281107.0":"2024-05-28T11:08:32.026Z","2.4.1-b622261-202405281247.0":"2024-05-28T12:49:13.176Z","2.4.1-d319e0d-202405281335.0":"2024-05-28T13:36:21.888Z","2.4.1-d319e0d-202405281343.0":"2024-05-28T13:44:20.283Z","2.4.1-4e68064-202405281352.0":"2024-05-28T13:53:14.595Z","2.4.1-6434064-202405281420.0":"2024-05-28T14:21:51.318Z","2.4.1-1df27ef-202405290809.0":"2024-05-29T08:10:50.916Z","2.4.1-8bd6071-202405290924.0":"2024-05-29T09:25:53.582Z","2.4.1-23a7ac6-202405291131.0":"2024-05-29T11:32:49.212Z","2.4.1-88225a7-202405291221.0":"2024-05-29T12:22:23.747Z","2.4.1-f632239-202405291346.0":"2024-05-29T13:47:41.925Z","2.4.1-571484a-202405291455.0":"2024-05-29T14:56:54.004Z","2.4.1-eb63984-202405291608.0":"2024-05-29T16:10:12.088Z","2.4.1-c116779-202405291647.0":"2024-05-29T16:49:08.368Z","2.4.1-e18fdce-202405300739.0":"2024-05-30T07:40:30.765Z","2.4.1-4b8547d-202405300953.0":"2024-05-30T09:54:35.682Z","2.4.1-99ef588-202405301510.0":"2024-05-30T15:11:49.007Z","2.4.1-46a787e-202405310954.0":"2024-05-31T09:55:34.091Z","2.4.1-17bb165-202405311219.0":"2024-05-31T12:20:34.836Z","2.4.1-0d240d0-202405311509.0":"2024-05-31T15:11:02.547Z","2.4.1-3d7af2a-202405311536.0":"2024-05-31T15:37:25.118Z","2.4.1-3d7af2a-202406041312.0":"2024-06-04T13:14:01.307Z","2.4.1-3d7af2a-202406041325.0":"2024-06-04T13:26:14.471Z","2.4.1-3d7af2a-202406041413.0":"2024-06-04T14:14:46.513Z","2.4.1-3d7af2a-202406041415.0":"2024-06-04T14:16:28.982Z","2.4.1-3d7af2a-202406041416.0":"2024-06-04T14:17:58.395Z","2.4.1-0824659-202406041454.0":"2024-06-04T14:55:53.748Z","2.4.1-0824659-202406041500.0":"2024-06-04T15:01:51.215Z","2.4.1-0824659-202406041512.0":"2024-06-04T15:13:39.052Z","2.4.1-560f800-202406051119.0":"2024-06-05T11:20:22.371Z","2.4.1-ecc4ec6-202406051340.0":"2024-06-05T13:42:01.064Z","2.4.1-3b1910a-202406051528.0":"2024-06-05T15:30:04.323Z","2.4.1-b7548c5-202406051734.0":"2024-06-05T17:35:55.674Z","2.4.1-f822af2-202406060826.0":"2024-06-06T08:27:16.042Z","2.4.1-970154a-202406060852.0":"2024-06-06T08:54:01.672Z","2.4.1-970154a-202406060855.0":"2024-06-06T08:56:43.404Z","2.4.1-970154a-202406060930.0":"2024-06-06T09:31:45.750Z","2.4.1-970154a-202406060932.0":"2024-06-06T09:33:54.797Z","2.5.0":"2024-06-06T09:41:24.653Z","2.5.1-936d88b-202406060948.0":"2024-06-06T09:49:07.944Z","2.5.1-e6e5cd0-202406061105.0":"2024-06-06T11:06:34.788Z","2.5.1-9801e90-202406061436.0":"2024-06-06T14:37:54.027Z","2.5.1-b5eaf8c-202406061508.0":"2024-06-06T15:09:22.822Z","2.5.1-9a74682-202406070634.0":"2024-06-07T06:35:16.837Z","2.5.1-dbd6bc2-202406100834.0":"2024-06-10T08:35:52.196Z","2.5.1-599d735-202406101050.0":"2024-06-10T10:51:40.750Z","2.5.1-599d735-202406101203.0":"2024-06-10T12:04:56.874Z","2.5.1-17b60fd-202406101241.0":"2024-06-10T12:42:30.420Z","2.5.1-17b60fd-202406101512.0":"2024-06-10T15:13:23.274Z","2.5.1-e89b683-202406110855.0":"2024-06-11T08:56:52.837Z","2.5.1-9b4d2b5-202406110912.0":"2024-06-11T09:13:23.712Z","2.5.1-f7a994a-202406111101.0":"2024-06-11T11:02:30.928Z","2.5.1-f7a994a-202406111109.0":"2024-06-11T11:10:18.118Z","2.5.1-f7a994a-202406120904.0":"2024-06-12T09:05:51.618Z","2.5.1-f7a994a-202406120918.0":"2024-06-12T09:19:35.480Z","2.5.1-f7a994a-202406121025.0":"2024-06-12T10:26:13.594Z","2.5.1-2abd3a9-202406121035.0":"2024-06-12T10:36:20.139Z","2.5.1-69a5827-202406121037.0":"2024-06-12T10:38:25.592Z","2.5.1-c11abf5-202406130958.0":"2024-06-13T09:59:28.615Z","2.5.1-5c8dc7e-202406131039.0":"2024-06-13T10:41:02.834Z","2.5.1-d3e2602-202406131101.0":"2024-06-13T11:02:22.052Z","2.5.1-c48ccec-202406140851.0":"2024-06-14T08:52:41.189Z","2.5.1-c48ccec-202406141028.0":"2024-06-14T10:29:38.423Z","2.5.1-c48ccec-202406141044.0":"2024-06-14T10:45:15.856Z","2.5.1-c48ccec-202406141122.0":"2024-06-14T11:23:40.395Z","2.5.1-2503798-202406141345.0":"2024-06-14T13:46:26.183Z","2.5.1-2503798-202406141348.0":"2024-06-14T13:49:58.087Z","2.5.1-b9240d1-202406160915.0":"2024-06-16T09:16:36.494Z","2.5.1-b9240d1-202406161918.0":"2024-06-16T19:19:25.381Z","2.5.1-b9240d1-202406170824.0":"2024-06-17T08:25:30.581Z","2.5.1-b9240d1-202406170826.0":"2024-06-17T08:27:59.297Z","2.5.1-b9240d1-202406170828.0":"2024-06-17T08:29:21.078Z","2.5.1-1e18a86-202406170838.0":"2024-06-17T08:39:09.575Z","2.5.1-0e3e0b4-202406180830.0":"2024-06-18T08:31:20.913Z","2.5.1-0d5e6ec-202406190922.0":"2024-06-19T09:23:50.778Z","2.5.1-b47687c-202406190944.0":"2024-06-19T09:45:48.941Z","2.5.1-a04496a-202406191009.0":"2024-06-19T10:10:35.076Z","2.5.1-f81f4bd-202406191025.0":"2024-06-19T10:26:18.785Z","2.5.1-60e704a-202406200842.0":"2024-06-20T08:44:00.615Z","2.5.1-6fa45cb-202406201015.0":"2024-06-20T10:16:29.233Z","2.5.1-edf11c8-202406201518.0":"2024-06-20T15:19:39.134Z","2.5.1-f72eeea-202406211004.0":"2024-06-21T10:05:18.282Z","2.5.1-f72eeea-202406211039.0":"2024-06-21T10:40:37.888Z","2.5.1-94e85f9-202406211417.0":"2024-06-21T14:18:38.273Z","2.5.1-2be10f1-202406211622.0":"2024-06-21T16:23:28.091Z","2.5.1-bfbe907-202406211723.0":"2024-06-21T17:24:13.944Z","2.5.1-bfbe907-202406211725.0":"2024-06-21T17:26:08.954Z","2.5.1-a0ea7f0-202406231824.0":"2024-06-23T18:25:41.952Z","2.5.1-9454799-202406261347.0":"2024-06-26T13:48:19.823Z","2.5.1-df2b0f1-202406280804.0":"2024-06-28T08:05:11.970Z","2.5.1-df2b0f1-202406280842.0":"2024-06-28T08:43:49.955Z","2.5.1-4e56144-202406281047.0":"2024-06-28T10:48:21.909Z","2.5.1-357ecd6-202406281502.0":"2024-06-28T15:03:46.987Z","2.5.1-dfc4e5a-202407010909.0":"2024-07-01T09:10:28.117Z","2.5.1-42e8c15-202407011226.0":"2024-07-01T12:27:29.563Z","2.5.1-42e8c15-202407020856.0":"2024-07-02T08:57:47.695Z","2.5.1-c03fe4f-202407030954.0":"2024-07-03T09:55:21.534Z","2.5.1-c03fe4f-202407030959.0":"2024-07-03T10:00:45.731Z","2.5.1-72923d8-202407031217.0":"2024-07-03T12:18:17.256Z","2.5.1-2ee732c-202407031235.0":"2024-07-03T12:36:44.160Z","2.5.1-7afa1eb-202407031419.0":"2024-07-03T14:21:14.743Z","2.5.1-b4a2b6e-202407031534.0":"2024-07-03T15:35:27.810Z","2.5.1-698d94c-202407031546.0":"2024-07-03T15:47:41.139Z","2.5.1-698d94c-202407031613.0":"2024-07-03T16:14:51.459Z","2.5.1-698d94c-202407031620.0":"2024-07-03T16:21:48.537Z","2.5.1-a59a144-202407031654.0":"2024-07-03T16:55:25.219Z","2.5.1-a59a144-202407040814.0":"2024-07-04T08:16:11.957Z","2.5.1-c462ac1-202407040849.0":"2024-07-04T08:50:44.995Z","2.5.1-c462ac1-202407040908.0":"2024-07-04T09:09:56.572Z","2.5.1-e86adb9-202407041014.0":"2024-07-04T10:15:16.706Z","2.5.1-e86adb9-202407041024.0":"2024-07-04T10:26:00.663Z","2.5.1-e86adb9-202407041026.0":"2024-07-04T10:28:04.129Z","2.5.1-76812fb-202407041257.0":"2024-07-04T12:59:03.550Z","2.5.1-deaed55-202407041302.0":"2024-07-04T13:03:25.204Z","2.5.1-deaed55-202407041305.0":"2024-07-04T13:06:15.420Z","2.6.0":"2024-07-04T13:08:20.488Z","2.6.1-f8ced67-202407041315.0":"2024-07-04T13:16:54.812Z","2.6.1-6ce260b-202407051018.0":"2024-07-05T10:20:03.621Z","2.6.1-3cca0bf-202407051241.0":"2024-07-05T12:42:29.031Z","2.6.1-4c9b55e-202407051400.0":"2024-07-05T14:01:50.034Z","2.6.1-1e8ce36-202407051601.0":"2024-07-05T16:03:07.898Z","2.6.1-fe1a77e-202407060752.0":"2024-07-06T07:53:50.617Z","2.6.1":"2024-07-06T08:10:28.092Z","2.6.2-2d588f8-202407060818.0":"2024-07-06T08:19:15.351Z","2.6.2-b9d682f-202407081252.0":"2024-07-08T12:53:11.721Z","2.6.2-42f2656-202407081327.0":"2024-07-08T13:28:18.633Z","2.6.2-42f2656-202407081343.0":"2024-07-08T13:44:36.979Z","2.6.2-42f2656-202407081351.0":"2024-07-08T13:52:58.480Z","2.6.2-42f2656-202407081401.0":"2024-07-08T14:02:22.118Z","2.6.2-42f2656-202407081405.0":"2024-07-08T14:06:45.346Z","2.6.2-42f2656-202407081413.0":"2024-07-08T14:14:13.990Z","2.6.2-42f2656-202407081416.0":"2024-07-08T14:17:23.031Z","2.6.2-d4aade9-202407081454.0":"2024-07-08T14:55:40.282Z","2.6.2-d4aade9-202407081501.0":"2024-07-08T15:02:31.378Z","2.6.2-318734d-202407081539.0":"2024-07-08T15:40:24.389Z","2.6.2-318734d-202407081557.0":"2024-07-08T15:58:33.844Z","2.6.2-7492640-202407081624.0":"2024-07-08T16:25:48.313Z","2.6.2-5d91f5b-202407090819.0":"2024-07-09T08:20:49.377Z","2.6.2-7028ebf-202407090827.0":"2024-07-09T08:28:37.021Z","2.6.2-893e9d6-202407090901.0":"2024-07-09T09:02:11.628Z","2.6.2-b832636-202407091001.0":"2024-07-09T10:03:09.518Z","2.6.2-8718b1d-202407091136.0":"2024-07-09T11:37:12.218Z","2.6.2-2cbaeb8-202407091520.0":"2024-07-09T15:21:48.276Z","2.6.2-3dc892a-202407100821.0":"2024-07-10T08:22:18.688Z","2.6.2-3dc892a-202407100825.0":"2024-07-10T08:26:10.028Z","2.6.2-ec4247a-202407110909.0":"2024-07-11T09:10:21.292Z","2.6.2-ec4247a-202407110912.0":"2024-07-11T09:13:30.598Z","2.6.2-ed6cb31-202407111429.0":"2024-07-11T14:30:27.380Z","2.6.2-ed6cb31-202407111504.0":"2024-07-11T15:05:50.607Z","2.6.2-ed6cb31-202407111510.0":"2024-07-11T15:11:55.442Z","2.6.2-87cfe11-202407111657.0":"2024-07-11T16:58:07.809Z","2.6.2-b29c425-202407111804.0":"2024-07-11T18:05:45.751Z","2.6.2-2fb923c-202407111927.0":"2024-07-11T19:28:59.501Z","2.6.2-fc1a5dc-202407120919.0":"2024-07-12T09:20:48.581Z","2.6.2-539134f-202407121357.0":"2024-07-12T13:58:05.841Z","2.6.2-1e997c4-202407150752.0":"2024-07-15T07:53:35.136Z","2.6.2-10b7e1f-202407150959.0":"2024-07-15T10:00:39.888Z","2.6.2-10b7e1f-202407151008.0":"2024-07-15T10:09:16.445Z","2.6.2-10b7e1f-202407151014.0":"2024-07-15T10:16:02.929Z","2.6.2-10b7e1f-202407151304.0":"2024-07-15T13:05:33.625Z","2.6.2-01934d5-202407151652.0":"2024-07-15T16:53:06.281Z","2.6.2-01934d5-202407160721.0":"2024-07-16T07:22:19.679Z","2.6.2-01934d5-202407161045.0":"2024-07-16T10:46:15.841Z","2.6.2-01934d5-202407161310.0":"2024-07-16T13:11:57.331Z","2.6.2-01934d5-202407161342.0":"2024-07-16T13:43:11.474Z","2.6.2-070c435-202407170856.0":"2024-07-17T08:57:20.504Z","2.6.2-016eb09-202407170924.0":"2024-07-17T09:25:43.421Z","2.6.2-1465065-202407171104.0":"2024-07-17T11:05:39.247Z","2.6.2-2b59b88-202407171313.0":"2024-07-17T13:14:29.663Z","2.6.2-2b59b88-202407171320.0":"2024-07-17T13:21:51.845Z","2.6.2-9567425-202407171358.0":"2024-07-17T13:59:46.944Z","2.6.2-913b744-202407171447.0":"2024-07-17T14:49:10.142Z","2.6.2-5a3c176-202407171509.0":"2024-07-17T15:10:52.427Z","2.6.2-0a914ae-202407180838.0":"2024-07-18T08:39:18.505Z","2.6.2-34023c6-202407181109.0":"2024-07-18T11:10:39.134Z","2.6.2-fc4f09d-202407181135.0":"2024-07-18T11:36:59.437Z","2.6.2-cf145da-202407190959.0":"2024-07-19T10:00:41.741Z","2.6.2-cf145da-202407191002.0":"2024-07-19T10:03:25.242Z","2.6.2-abc5b7e-202407191039.0":"2024-07-19T10:40:29.625Z","2.6.2-3e503fe-202407191054.0":"2024-07-19T10:55:44.040Z","2.6.2-168eb19-202407191245.0":"2024-07-19T12:46:28.520Z","2.6.2-940a813-202407191302.0":"2024-07-19T13:03:33.360Z","2.6.2-da3a11e-202407220854.0":"2024-07-22T08:55:02.707Z","2.6.2-e1cc16f-202407221125.0":"2024-07-22T11:26:55.356Z","2.6.2-a934275-202407221426.0":"2024-07-22T14:27:44.646Z","2.6.2-4258384-202407231431.0":"2024-07-23T14:32:46.559Z","2.6.2-3f397c3-202407240911.0":"2024-07-24T09:13:11.780Z","2.6.2-0277dcd-202407241150.0":"2024-07-24T11:51:07.087Z","2.6.2-6ef2608-202407241308.0":"2024-07-24T13:09:29.817Z","2.6.2-ff45876-202407241436.0":"2024-07-24T14:38:06.664Z","2.6.2-577de23-202407250848.0":"2024-07-25T08:49:39.505Z","2.6.2-e066ed7-202407251019.0":"2024-07-25T10:20:10.904Z","2.6.2-21f5398-202407251150.0":"2024-07-25T11:51:46.709Z","2.6.2-0a16ddc-202407251224.0":"2024-07-25T12:25:30.530Z","2.6.2-2e4316a-202407251304.0":"2024-07-25T13:05:42.214Z","2.6.2-ec1687d-202407251416.0":"2024-07-25T14:17:32.442Z","2.6.2-ffeae89-202407251517.0":"2024-07-25T15:18:07.228Z","2.6.2-9e000e5-202407260814.0":"2024-07-26T08:15:24.235Z","2.6.2-9e000e5-202407260816.0":"2024-07-26T08:17:11.744Z","2.6.2-9e000e5-202407260822.0":"2024-07-26T08:23:19.532Z","2.6.2-9082b06-202407260844.0":"2024-07-26T08:45:29.403Z","2.6.2-223b408-202407260912.0":"2024-07-26T09:13:31.970Z","2.6.2-7a217ad-202407260955.0":"2024-07-26T09:56:50.509Z","2.6.2-7a217ad-202407261026.0":"2024-07-26T10:27:54.194Z","2.6.2-ddec296-202407261105.0":"2024-07-26T11:06:30.040Z","2.6.2-ddec296-202407261159.0":"2024-07-26T12:00:46.324Z","2.6.2-b112c80-202407261218.0":"2024-07-26T12:20:09.554Z","2.6.2-d2773bb-202407261327.0":"2024-07-26T13:28:39.854Z","2.6.2-47c6de7-202407261420.0":"2024-07-26T14:21:49.166Z","2.6.2-3baa362-202407261548.0":"2024-07-26T15:49:38.881Z","2.6.2-0d6d61d-202407291112.0":"2024-07-29T11:13:41.171Z","2.6.2-0ac9eba-202407291525.0":"2024-07-29T15:26:51.856Z","2.6.2-559c6b3-202407300918.0":"2024-07-30T09:19:30.232Z","2.6.2-628c562-202407301049.0":"2024-07-30T10:50:37.013Z","2.6.2-4f52ff4-202407301232.0":"2024-07-30T12:33:39.308Z","2.6.2-fa831ad-202407311825.0":"2024-07-31T18:26:38.684Z","2.6.2-fa831ad-202408010830.0":"2024-08-01T08:31:32.555Z","2.6.2-881fbea-202408010856.0":"2024-08-01T08:58:01.777Z","2.6.2-881fbea-202408010914.0":"2024-08-01T09:15:32.529Z","2.6.2-881fbea-202408010919.0":"2024-08-01T09:20:12.080Z","2.7.0":"2024-08-01T09:43:06.582Z","2.7.1-1d40342-202408010951.0":"2024-08-01T09:52:15.967Z","2.7.1-a49845c-202408011104.0":"2024-08-01T11:07:18.466Z","2.7.1-f18548a-202408020832.0":"2024-08-02T08:34:06.832Z","2.7.1-c547148-202408021046.0":"2024-08-02T10:48:02.992Z","2.7.1-19f6fe1-202408021258.0":"2024-08-02T12:59:28.592Z","2.7.1-19f6fe1-202408051434.0":"2024-08-05T14:35:31.185Z","2.7.1-adc278c-202408060910.0":"2024-08-06T09:11:53.239Z","2.7.1-339a4b0-202408061058.0":"2024-08-06T11:00:03.007Z","2.7.1-7d3e40a-202408061302.0":"2024-08-06T13:03:27.348Z","2.7.1-f9a4b86-202408061343.0":"2024-08-06T13:44:25.022Z","2.7.1-ee9653d-202408061442.0":"2024-08-06T14:43:09.305Z","2.7.1-932d4b8-202408061528.0":"2024-08-06T15:29:17.561Z","2.7.1-4e0aa9a-202408070844.0":"2024-08-07T08:45:15.925Z","2.7.1-4899db5-202408071101.0":"2024-08-07T11:02:40.692Z","2.7.1-cce4376-202408071344.0":"2024-08-07T13:45:51.668Z","2.7.1-ef94197-202408071416.0":"2024-08-07T14:17:37.775Z","2.7.1-cff3adf-202408080750.0":"2024-08-08T07:51:25.553Z","2.7.1-e3867ab-202408080948.0":"2024-08-08T09:49:43.157Z","2.7.1-552a608-202408081008.0":"2024-08-08T10:09:17.535Z","2.7.1-9787935-202408081238.0":"2024-08-08T12:39:19.035Z","2.7.1-524b963-202408091317.0":"2024-08-09T13:18:08.650Z","2.7.1-bc9d6d4-202408091318.0":"2024-08-09T13:19:25.764Z","2.7.1-bc9d6d4-202408091325.0":"2024-08-09T13:26:33.916Z","2.7.1-99ac40e-202408091341.0":"2024-08-09T13:42:10.767Z","2.7.1-bb8f0a3-202408121032.0":"2024-08-12T10:33:12.505Z","2.7.1-acaaaff-202408121641.0":"2024-08-12T16:42:54.908Z","2.7.1-4daf879-202408130932.0":"2024-08-13T09:33:10.347Z","2.7.1-4daf879-202408140933.0":"2024-08-14T09:34:12.402Z","2.7.1-1818cf0-202408140936.0":"2024-08-14T09:37:26.316Z","2.7.1-1818cf0-202408140946.0":"2024-08-14T09:47:08.608Z","2.7.1-dfac073-202408161315.0":"2024-08-16T13:16:34.277Z","2.7.1-dd070d7-202408161355.0":"2024-08-16T13:56:16.319Z","2.7.1-782c37a-202408191020.0":"2024-08-19T10:21:18.264Z","2.7.1-782c37a-202408230937.0":"2024-08-23T09:38:40.974Z","2.7.1-ec7b0fe-202408231552.0":"2024-08-23T15:53:48.095Z","2.7.1-53be495-202408231555.0":"2024-08-23T15:56:06.827Z","2.7.1-8f23297-202408231610.0":"2024-08-23T16:11:13.954Z","2.7.1-87e8be6-202408231627.0":"2024-08-23T16:29:03.869Z","2.7.1-87e8be6-202408231636.0":"2024-08-23T16:37:08.849Z","2.7.1-1d1f9ae-202408260907.0":"2024-08-26T09:08:21.641Z","2.7.1-572e808-202408261026.0":"2024-08-26T10:27:12.364Z","2.7.1-7cbaa77-202408271346.0":"2024-08-27T13:47:13.428Z","2.7.1-10116ef-202408280845.0":"2024-08-28T08:46:17.885Z","2.7.1-75766c3-202408280902.0":"2024-08-28T09:03:53.753Z","2.7.1-8c97fec-202408281010.0":"2024-08-28T10:11:16.462Z","2.7.1-8c97fec-202408281042.0":"2024-08-28T10:43:17.483Z","2.7.1-648d717-202408281355.0":"2024-08-28T13:56:13.799Z","2.7.1-648d717-202408281640.0":"2024-08-28T16:42:05.798Z","2.7.1-648d717-202408290830.0":"2024-08-29T08:31:12.068Z","2.7.1-648d717-202408290831.0":"2024-08-29T08:32:54.116Z","2.7.1-cb2ec53-202408290906.0":"2024-08-29T09:07:37.967Z","2.7.1-cb2ec53-202408290915.0":"2024-08-29T09:16:26.937Z","2.7.1-7dd573e-202408290941.0":"2024-08-29T09:42:46.233Z","2.7.1-7dd573e-202408290946.0":"2024-08-29T09:47:05.891Z","2.7.1-7dd573e-202408290950.0":"2024-08-29T09:51:10.069Z","2.7.1-7dd573e-202408290955.0":"2024-08-29T09:56:45.140Z","2.8.0":"2024-08-29T10:00:14.230Z","2.8.1-7dc1a29-202408291014.0":"2024-08-29T10:15:48.772Z","2.8.1-5978f11-202408291908.0":"2024-08-29T19:09:14.901Z","2.8.1-80830aa-202408300849.0":"2024-08-30T08:50:52.612Z","2.8.1-771cd39-202408301158.0":"2024-08-30T11:59:35.582Z","2.8.1-ccd5b75-202408301706.0":"2024-08-30T17:08:03.264Z","2.8.1-744be8d-202409011023.0":"2024-09-01T10:25:04.624Z","2.8.1-579559e-202409011608.0":"2024-09-01T16:09:51.551Z","2.8.1-a35c084-202409021235.0":"2024-09-02T12:36:32.241Z","2.8.1-a35c084-202409021244.0":"2024-09-02T12:45:39.504Z","2.8.1-a35c084-202409021258.0":"2024-09-02T12:59:26.804Z","2.8.1-a35c084-202409021300.0":"2024-09-02T13:02:01.247Z","2.8.1-b207277-202409021349.0":"2024-09-02T13:50:32.706Z","2.8.1-dfff26a-202409021428.0":"2024-09-02T14:29:51.850Z","2.8.1-dfff26a-202409021542.0":"2024-09-02T15:43:18.616Z","2.8.1-dfff26a-202409021639.0":"2024-09-02T16:40:52.890Z","2.8.1-ebd2f59-202409021645.0":"2024-09-02T16:46:22.602Z","2.8.1-ebd2f59-202409021648.0":"2024-09-02T16:50:03.622Z","2.8.1-ebd2f59-202409021650.0":"2024-09-02T16:51:31.161Z","2.8.1-ebd2f59-202409021709.0":"2024-09-02T17:10:18.044Z","2.8.1-f1c73aa-202409021732.0":"2024-09-02T17:34:29.513Z","2.8.1-288dc73-202409030956.0":"2024-09-03T09:57:25.508Z","2.8.1-00f8a6e-202409040831.0":"2024-09-04T08:32:15.621Z","2.8.1-168b95c-202409051247.0":"2024-09-05T12:48:56.322Z","2.8.1-0d75159-202409051526.0":"2024-09-05T15:27:19.616Z","2.8.1-5428dd1-202409060907.0":"2024-09-06T09:08:34.192Z","2.8.1-dff90f4-202409061103.0":"2024-09-06T11:04:22.192Z","2.8.1-9138b7e-202409061134.0":"2024-09-06T11:35:59.555Z","2.8.1-d2c80ee-202409061458.0":"2024-09-06T14:59:15.731Z","2.8.1-33308ad-202409090858.0":"2024-09-09T08:59:35.324Z","2.8.1-33308ad-202409091312.0":"2024-09-09T13:13:22.115Z","2.8.1-33308ad-202409091314.0":"2024-09-09T13:15:22.454Z","2.8.1-7d8b779-202409091738.0":"2024-09-09T17:39:59.192Z","2.8.1-7d8b779-202409091741.0":"2024-09-09T17:42:27.082Z","2.8.1-7d8b779-202409100639.0":"2024-09-10T06:40:21.477Z","2.8.1-6e3cad8-202409100942.0":"2024-09-10T09:43:38.749Z","2.8.1-6545b1b-202409110906.0":"2024-09-11T09:07:17.673Z","2.8.1-6545b1b-202409110915.0":"2024-09-11T09:16:49.529Z","2.8.1-65b8ea3-202409130916.0":"2024-09-13T09:17:57.755Z","2.8.1-e6d89c6-202409141135.0":"2024-09-14T11:36:49.309Z","2.8.1-90dc872-202409150848.0":"2024-09-15T08:49:05.461Z","2.8.1-90dc872-202409160626.0":"2024-09-16T06:27:18.121Z","2.8.1-64c25bd-202409161552.0":"2024-09-16T15:53:21.722Z","2.8.1-3b7a80b-202409170930.0":"2024-09-17T09:31:58.726Z","2.8.1-6a1f73e-202409170955.0":"2024-09-17T09:56:18.126Z","2.8.1-6a1f73e-202409171252.0":"2024-09-17T12:54:05.709Z","2.8.1-34ece2f-202409171320.0":"2024-09-17T13:21:05.669Z","2.8.1-89c270b-202409171427.0":"2024-09-17T14:28:29.800Z","2.8.1-2830e92-202409171757.0":"2024-09-17T17:58:29.891Z","2.8.1-dd04734-202409180957.0":"2024-09-18T09:58:51.859Z","2.8.1-4618bec-202409181348.0":"2024-09-18T13:49:37.394Z","2.8.1-4618bec-202409181355.0":"2024-09-18T13:56:35.321Z","2.8.1-9504108-202409181459.0":"2024-09-18T15:01:02.269Z","2.8.1-9504108-202409181510.0":"2024-09-18T15:12:05.079Z","2.8.1-9504108-202409181521.0":"2024-09-18T15:23:00.825Z","2.8.1-e25d5ed-202409191014.0":"2024-09-19T10:15:58.602Z","2.8.1-e25d5ed-202409191018.0":"2024-09-19T10:19:09.868Z","2.8.1-eff63b4-202409191032.0":"2024-09-19T10:33:06.083Z","2.8.1-eff63b4-202409191041.0":"2024-09-19T10:42:07.855Z","2.8.1-19d959e-202409191126.0":"2024-09-19T11:27:26.594Z","2.8.1-19d959e-202409191203.0":"2024-09-19T12:04:16.566Z","2.8.1-417df50-202409191626.0":"2024-09-19T16:27:31.592Z","2.8.1-5e468c4-202409201202.0":"2024-09-20T12:03:32.892Z","2.8.1-31e884b-202409201507.0":"2024-09-20T15:08:26.261Z","2.8.1-4e1f5ec-202409201700.0":"2024-09-20T17:01:38.644Z","2.8.1-4e1f5ec-202409211739.0":"2024-09-21T17:40:20.658Z","2.8.1-4e1f5ec-202409230631.0":"2024-09-23T06:32:22.315Z","2.8.1-45c992a-202409231010.0":"2024-09-23T10:11:38.469Z","2.8.1-452a16a-202409231142.0":"2024-09-23T11:43:45.239Z","2.8.1-76ba3ed-202409231229.0":"2024-09-23T12:30:16.894Z","2.8.1-5979e15-202409231405.0":"2024-09-23T14:07:08.762Z","2.8.1-5979e15-202409231427.0":"2024-09-23T14:28:22.538Z","2.8.1-5979e15-202409231429.0":"2024-09-23T14:30:48.582Z","2.8.1-5979e15-202409231502.0":"2024-09-23T15:03:26.670Z","2.8.1-56c64bb-202409231516.0":"2024-09-23T15:17:42.517Z","2.8.1-56c64bb-202409231725.0":"2024-09-23T17:26:19.228Z","2.8.1-f450630-202409231730.0":"2024-09-23T17:31:46.082Z","2.8.1-f450630-202409231943.0":"2024-09-23T19:44:23.956Z","2.8.1-53f3d00-202409240826.0":"2024-09-24T08:28:03.595Z","2.8.1-fd45104-202409240851.0":"2024-09-24T08:52:42.009Z","2.8.1-cf47f97-202409240941.0":"2024-09-24T09:42:36.939Z","2.8.1-12c65ef-202409241552.0":"2024-09-24T15:53:29.361Z","2.8.1-8c1241f-202409241739.0":"2024-09-24T17:40:26.229Z","2.8.1-538ae57-202409250856.0":"2024-09-25T08:57:17.726Z","2.8.1-0ac5c51-202409250905.0":"2024-09-25T09:06:29.928Z","2.8.1-ea58fc2-202409251508.0":"2024-09-25T15:09:24.549Z","2.8.1-ea58fc2-202409260917.0":"2024-09-26T09:18:42.807Z","2.8.1-ea58fc2-202409260928.0":"2024-09-26T09:29:43.529Z","2.9.0":"2024-09-26T09:48:51.054Z","2.9.1-4353c82-202409260959.0":"2024-09-26T10:00:18.196Z","2.9.1-477b887-202409270911.0":"2024-09-27T09:12:22.494Z","2.9.1-d3dd548-202409270932.0":"2024-09-27T09:33:55.735Z","2.9.1-afadb01-202409271224.0":"2024-09-27T12:26:09.446Z","2.9.1-503d19a-202409271259.0":"2024-09-27T13:00:49.294Z","2.9.1-71f6b3e-202409271342.0":"2024-09-27T13:43:10.097Z","2.9.1-9c86060-202409271446.0":"2024-09-27T14:47:28.983Z","2.9.1-03a42dc-202409271736.0":"2024-09-27T17:38:03.027Z","2.9.1-d3e74b4-202409300921.0":"2024-09-30T09:22:28.007Z","2.9.1-99cd72d-202409301106.0":"2024-09-30T11:07:22.652Z","2.9.1-329d681-202409301126.0":"2024-09-30T11:28:00.192Z","2.9.1-3171bfb-202409301313.0":"2024-09-30T13:14:21.676Z","2.9.1-70911b6-202409301358.0":"2024-09-30T14:00:10.850Z","2.9.1-a17ef21-202409301709.0":"2024-09-30T17:10:39.887Z","2.9.1-b6bb8ef-202409301740.0":"2024-09-30T17:41:48.712Z","2.9.1-a1cc1c5-202410010925.0":"2024-10-01T09:26:50.359Z","2.9.1-f40f811-202410010949.0":"2024-10-01T09:51:03.384Z","2.9.1-61e8751-202410022046.0":"2024-10-02T20:47:48.766Z","2.9.1-ddf41f6-202410041158.0":"2024-10-04T11:59:15.615Z","2.9.1-85bbe09-202410041448.0":"2024-10-04T14:49:53.131Z","2.9.1-49214c9-202410041608.0":"2024-10-04T16:09:06.891Z","2.9.1-6168cc5-202410071248.0":"2024-10-07T12:49:25.946Z","2.9.1-ac9c834-202410071513.0":"2024-10-07T15:14:51.278Z","2.9.1-ac9c834-202410072009.0":"2024-10-07T20:10:45.440Z","2.9.1-8acfed2-202410081222.0":"2024-10-08T12:23:07.811Z","2.9.1-e8ed5c3-202410092040.0":"2024-10-09T20:41:45.862Z","2.9.1-2ca9a02-202410092126.0":"2024-10-09T21:27:32.084Z","2.9.1-8cf9231-202410100839.0":"2024-10-10T08:40:41.419Z","2.9.1-8cf9231-202410101249.0":"2024-10-10T12:51:06.038Z","2.9.1-8cf9231-202410101252.0":"2024-10-10T12:53:28.656Z","2.9.1-8cf9231-202410101254.0":"2024-10-10T12:55:10.020Z","2.9.1-8cf9231-202410101255.0":"2024-10-10T12:56:48.174Z","2.9.1-8cf9231-202410101259.0":"2024-10-10T13:00:59.935Z","2.9.1-48ca06b-202410101436.0":"2024-10-10T14:38:06.759Z","2.9.1-091eeaa-202410101610.0":"2024-10-10T16:11:37.473Z","2.9.1-e121a48-202410141325.0":"2024-10-14T13:26:46.021Z","2.9.1-49321fc-202410141356.0":"2024-10-14T13:58:09.401Z","2.9.1-49321fc-202410141525.0":"2024-10-14T15:26:52.460Z","2.9.1-232eb7c-202410141558.0":"2024-10-14T15:59:48.429Z","2.9.1-4912acb-202410160910.0":"2024-10-16T09:11:25.532Z","2.9.1-0084315-202410161047.0":"2024-10-16T10:48:39.032Z","2.9.1-471194f-202410161552.0":"2024-10-16T15:53:10.601Z","2.9.1-712c411-202410181347.0":"2024-10-18T13:48:49.341Z","2.9.1-712c411-202410210625.0":"2024-10-21T06:26:10.482Z","2.9.1-46411ba-202410210921.0":"2024-10-21T09:22:39.553Z","2.9.1-d7cb7a3-202410210934.0":"2024-10-21T09:35:20.430Z","2.9.1-eb4d998-202410211037.0":"2024-10-21T10:39:06.648Z","2.9.1-eb4d998-202410211152.0":"2024-10-21T11:54:07.074Z","2.9.1-eb4d998-202410211154.0":"2024-10-21T11:55:28.847Z","2.9.1-210bb21-202410211406.0":"2024-10-21T14:07:44.111Z","2.9.1-5a01c3b-202410220907.0":"2024-10-22T09:08:44.065Z","2.9.1-607e2eb-202410220940.0":"2024-10-22T09:41:16.562Z","2.9.1-607e2eb-202410220947.0":"2024-10-22T09:48:18.816Z","2.9.1-48a8c0f-202410221011.0":"2024-10-22T10:12:51.815Z","2.9.1-659f18c-202410221041.0":"2024-10-22T10:42:19.902Z","2.9.1-a63c3cb-202410221110.0":"2024-10-22T11:12:08.224Z","2.9.1-2ac81cf-202410221200.0":"2024-10-22T12:02:03.676Z","2.9.1-d61857b-202410221354.0":"2024-10-22T13:55:43.157Z","2.9.1-a1dcf84-202410221430.0":"2024-10-22T14:31:43.973Z","2.9.1-c1b46c6-202410222024.0":"2024-10-22T20:25:45.432Z","2.9.1-9f6fc28-202410230857.0":"2024-10-23T08:58:09.583Z","2.9.1-f52c2cc-202410240758.0":"2024-10-24T07:59:33.425Z","2.9.1-aea67e9-202410240847.0":"2024-10-24T08:48:44.669Z","2.9.1-aea67e9-202410240854.0":"2024-10-24T08:55:49.271Z","2.9.1-aea67e9-202410240919.0":"2024-10-24T09:20:47.582Z","2.9.1-3a3d590-202410240951.0":"2024-10-24T09:52:26.667Z","2.10.0":"2024-10-24T10:01:17.350Z","2.10.1-bea512f-202410241005.0":"2024-10-24T10:07:03.814Z","2.10.1-bea512f-202410241009.0":"2024-10-24T10:10:16.823Z","2.10.1-179e4d8-202410241347.0":"2024-10-24T13:48:44.526Z","2.10.1-d59b3fa-202410241356.0":"2024-10-24T13:57:13.319Z","2.10.1-49caad0-202410251026.0":"2024-10-25T10:27:22.965Z","2.10.1-2e86083-202410251039.0":"2024-10-25T10:41:05.647Z","2.10.1-3f48e3f-202410251425.0":"2024-10-25T14:26:27.692Z","2.10.1-887a0a0-202410290833.0":"2024-10-29T08:34:39.137Z","2.10.1-bf8a395-202410290938.0":"2024-10-29T09:39:13.863Z","2.10.1-1c49da4-202410291358.0":"2024-10-29T14:00:06.323Z","2.10.1-790f476-202410300944.0":"2024-10-30T09:45:47.929Z","2.10.1-1fc01fe-202410301100.0":"2024-10-30T11:01:41.393Z","2.10.1-f87e25b-202410301807.0":"2024-10-30T18:09:03.409Z","2.10.1-81a0b6d-202410311117.0":"2024-10-31T11:18:11.738Z","2.10.1-53bd98f-202410311306.0":"2024-10-31T13:07:59.749Z","2.10.1-5b509c8-202410311609.0":"2024-10-31T16:10:23.092Z","2.10.1-9af3aad-202411010952.0":"2024-11-01T09:53:16.985Z","2.10.1-7c83bf6-202411011040.0":"2024-11-01T10:41:52.707Z","2.10.1-7c83bf6-202411011048.0":"2024-11-01T10:49:35.902Z","2.10.1-7c83bf6-202411011050.0":"2024-11-01T10:52:06.299Z","2.10.1-53b25a8-202411011128.0":"2024-11-01T11:29:21.323Z","2.10.1-9b8fffc-202411011431.0":"2024-11-01T14:32:37.385Z","2.10.1-bacc9de-202411011738.0":"2024-11-01T17:40:05.417Z","2.10.1-bacc9de-202411041328.0":"2024-11-04T13:29:45.138Z","2.10.1-bacc9de-202411041331.0":"2024-11-04T13:32:29.371Z","2.10.1-9a222d7-202411041413.0":"2024-11-04T14:15:09.807Z","2.10.1-9a222d7-202411041506.0":"2024-11-04T15:07:16.633Z","2.10.1-1836ec2-202411041558.0":"2024-11-04T15:59:34.727Z","2.10.1-1836ec2-202411051036.0":"2024-11-05T10:37:40.626Z","2.10.1-019af80-202411051401.0":"2024-11-05T14:02:26.940Z","2.10.1-77865ff-202411061356.0":"2024-11-06T13:57:39.162Z","2.10.1-334f787-202411061512.0":"2024-11-06T15:13:35.151Z","2.10.1-605166b-202411061712.0":"2024-11-06T17:13:36.071Z","2.10.1-605166b-202411061714.0":"2024-11-06T17:15:38.373Z","2.10.1-8b24d64-202411081101.0":"2024-11-08T11:02:25.235Z","2.10.1-ddbc002-202411111358.0":"2024-11-11T13:59:25.105Z","2.10.1-ddbc002-202411111408.0":"2024-11-11T14:10:17.843Z","2.10.1-cb64b73-202411111535.0":"2024-11-11T15:36:46.644Z","2.10.1-ed3a4a1-202411111633.0":"2024-11-11T16:35:13.702Z","2.10.1-9e7b1e4-202411121031.0":"2024-11-12T10:33:13.951Z","2.10.1-073d514-202411131017.0":"2024-11-13T10:18:43.093Z","2.10.1-0b4c35f-202411131356.0":"2024-11-13T13:57:38.957Z","2.10.1-58a1c56-202411141557.0":"2024-11-14T15:58:26.568Z","2.10.1-5278a37-202411141734.0":"2024-11-14T17:36:12.485Z","2.10.1-e173733-202411141825.0":"2024-11-14T18:26:56.884Z","2.10.1-2fc508e-202411151024.0":"2024-11-15T10:26:08.811Z","2.10.1-9c1babb-202411151055.0":"2024-11-15T10:56:36.046Z","2.10.1-becdc3e-202411181413.0":"2024-11-18T14:14:59.648Z","2.10.1-76c061e-202411191028.0":"2024-11-19T10:29:47.809Z","2.10.1-76c061e-202411191035.0":"2024-11-19T10:36:34.849Z","2.10.1-ccb0563-202411191148.0":"2024-11-19T11:49:22.987Z","2.10.1-650d303-202411200946.0":"2024-11-20T09:47:25.526Z","2.10.1-5475a81-202411201052.0":"2024-11-20T10:53:20.536Z","2.10.1-8d89832-202411201408.0":"2024-11-20T14:09:54.008Z","2.10.1-8d89832-202411201516.0":"2024-11-20T15:17:59.217Z","2.10.1-bb77f60-202411201545.0":"2024-11-20T15:46:35.428Z","2.10.1-4e32fe8-202411201718.0":"2024-11-20T17:20:14.272Z","2.10.1-8ea4910-202411201757.0":"2024-11-20T17:59:03.760Z","2.10.1-ca00928-202411201811.0":"2024-11-20T18:13:01.096Z","2.10.1-9222adb-202411210756.0":"2024-11-21T07:57:40.159Z","2.10.1-35924ed-202411211014.0":"2024-11-21T10:15:56.265Z","2.10.1-35924ed-202411211018.0":"2024-11-21T10:20:50.444Z","2.11.0":"2024-11-21T11:37:58.026Z","2.11.1-eee84bc-202411211149.0":"2024-11-21T11:51:03.685Z","2.11.1-4902e4f-202411211407.0":"2024-11-21T14:09:07.057Z","2.11.1-43277d8-202411211550.0":"2024-11-21T15:52:11.271Z","2.11.1-58be955-202411251132.0":"2024-11-25T11:33:58.994Z","2.11.1-4ab0fb2-202411251456.0":"2024-11-25T14:57:55.267Z","2.11.1-f299fd4-202411280925.0":"2024-11-28T09:26:31.118Z","2.11.1-c88e070-202411281142.0":"2024-11-28T11:43:40.782Z","2.11.1-511acde-202411281213.0":"2024-11-28T12:14:47.081Z","2.11.1-645a2c7-202411291554.0":"2024-11-29T15:55:24.619Z","2.11.1-fa4f8c4-202412021250.0":"2024-12-02T12:51:19.518Z","2.11.1-499b7fd-202412021615.0":"2024-12-02T16:16:55.511Z","2.11.1-7eebf0f-202412021708.0":"2024-12-02T17:09:46.257Z","2.11.1-5b7a813-202412030925.0":"2024-12-03T09:27:21.727Z","2.11.1-12e82ee-202412031002.0":"2024-12-03T10:04:05.586Z","2.11.1-12e82ee-202412031011.0":"2024-12-03T10:12:42.062Z","2.11.1-ac51a56-202412031101.0":"2024-12-03T11:02:38.137Z","2.11.1-5ee7616-202412031448.0":"2024-12-03T14:50:13.683Z","2.11.1-cd97da9-202412031640.0":"2024-12-03T16:42:02.327Z","2.11.1-f77d1d9-202412040856.0":"2024-12-04T08:57:59.519Z","2.11.1-80a6de9-202412051155.0":"2024-12-05T11:56:30.965Z","2.11.1-e13231e-202412051356.0":"2024-12-05T13:57:48.144Z","2.11.1-e13231e-202412051445.0":"2024-12-05T14:47:10.334Z","2.11.1-6f5148b-202412060847.0":"2024-12-06T08:48:44.807Z","2.11.1-9bb28ab-202412061220.0":"2024-12-06T12:21:49.166Z","2.11.1-a8478da-202412061319.0":"2024-12-06T13:20:39.803Z","2.11.1-a8478da-202412061323.0":"2024-12-06T13:25:03.760Z","2.11.1-b545283-202412091750.0":"2024-12-09T17:51:21.536Z","2.11.1-56e68ce-202412091937.0":"2024-12-09T19:38:35.188Z","2.11.1-56e68ce-202412092127.0":"2024-12-09T21:28:43.175Z","2.11.1-922ebbb-202412101605.0":"2024-12-10T16:06:26.513Z","2.11.1-0445a24-202412111456.0":"2024-12-11T14:58:09.186Z","2.11.1-0445a24-202412121106.0":"2024-12-12T11:07:49.207Z","2.11.1-1f241e3-202412121114.0":"2024-12-12T11:15:27.526Z","2.11.1-1f241e3-202412121123.0":"2024-12-12T11:25:09.850Z","2.11.1-d325765-202412130942.0":"2024-12-13T09:43:43.743Z","2.11.1-d325765-202412131017.0":"2024-12-13T10:18:45.444Z","2.11.1-529c85c-202412131403.0":"2024-12-13T14:05:00.839Z","2.11.1-6bdabe5-202412131423.0":"2024-12-13T14:24:48.421Z","2.11.1-d636c16-202412131520.0":"2024-12-13T15:21:46.646Z","2.11.1-4884866-202412131626.0":"2024-12-13T16:28:07.316Z","2.11.1-bdf5dae-202412160951.0":"2024-12-16T09:52:59.188Z","2.11.1-bdf5dae-202412161054.0":"2024-12-16T10:55:20.853Z","2.11.1-bdf5dae-202412161708.0":"2024-12-16T17:09:41.882Z","2.11.1-2c8fea7-202412171109.0":"2024-12-17T11:11:10.162Z","2.11.1-be3af14-202412171222.0":"2024-12-17T12:24:17.103Z","2.11.1-181b34e-202412171313.0":"2024-12-17T13:14:52.361Z","2.11.1-775c19f-202412171525.0":"2024-12-17T15:26:29.266Z","2.11.1-33ac8f7-202412181005.0":"2024-12-18T10:07:09.646Z","2.11.1-0eb0082-202412181252.0":"2024-12-18T12:54:17.396Z","2.11.1-3a30552-202412181320.0":"2024-12-18T13:21:47.377Z","2.11.1-3a30552-202412181409.0":"2024-12-18T14:11:15.088Z","2.11.1-3a30552-202412181741.0":"2024-12-18T17:42:36.680Z","2.11.1-3a30552-202412191021.0":"2024-12-19T10:22:37.495Z","2.11.1-3a30552-202412191026.0":"2024-12-19T10:27:23.162Z","2.11.1-17b0467-202412191028.0":"2024-12-19T10:29:38.330Z","2.11.1-17b0467-202412191032.0":"2024-12-19T10:34:02.319Z","2.11.1-937a83b-202412191040.0":"2024-12-19T10:41:23.655Z","2.11.1-937a83b-202412191050.0":"2024-12-19T10:51:28.021Z","2.12.1-acb38e7-202412191103.0":"2024-12-19T11:05:15.155Z","2.12.0":"2024-12-19T11:05:29.016Z","2.12.1-acb38e7-202412191116.0":"2024-12-19T11:17:52.919Z","2.12.1-449189a-202412191228.0":"2024-12-19T12:29:42.473Z","2.12.1-cf9bfbe-202412191258.0":"2024-12-19T12:59:35.259Z","2.12.1-d29e97d-202412201611.0":"2024-12-20T16:12:24.702Z","2.12.1-d29e97d-202412201614.0":"2024-12-20T16:16:11.297Z","2.12.1-aa77197-202412231719.0":"2024-12-23T17:20:54.024Z","2.12.1-bfd9fa3-202412240944.0":"2024-12-24T09:46:06.348Z","2.12.1-69a00e9-202412241013.0":"2024-12-24T10:14:29.500Z","2.12.1-6d814ed-202501021224.0":"2025-01-02T12:26:11.264Z","2.12.1-19a0a08-202501031234.0":"2025-01-03T12:35:47.668Z","2.12.1-19a0a08-202501031238.0":"2025-01-03T12:39:51.878Z","2.12.1-b9795ee-202501031602.0":"2025-01-03T16:04:16.626Z","2.12.1-605d471-202501031633.0":"2025-01-03T16:35:06.070Z","2.12.1-e36db74-202501031744.0":"2025-01-03T17:45:38.087Z","2.12.1-ea96922-202501071001.0":"2025-01-07T10:02:57.748Z","2.12.1-4f77403-202501071209.0":"2025-01-07T12:10:43.912Z","2.12.1-24999ba-202501080946.0":"2025-01-08T09:47:28.211Z","2.12.1-540dd70-202501081015.0":"2025-01-08T10:16:26.590Z","2.12.1-e84426f-202501081137.0":"2025-01-08T11:38:49.394Z","2.12.1-a54c833-202501081320.0":"2025-01-08T13:21:25.461Z","2.12.1-c0e2da7-202501081726.0":"2025-01-08T17:28:08.485Z","2.12.1-3c9ec14-202501091553.0":"2025-01-09T15:55:16.808Z","2.12.1-3c9ec14-202501091559.0":"2025-01-09T16:00:42.585Z","2.12.1-9c75a03-202501101108.0":"2025-01-10T11:09:38.886Z","2.12.1-9c75a03-202501101508.0":"2025-01-10T15:09:42.994Z","2.12.1-ad8ffa7-202501131825.0":"2025-01-13T18:26:55.993Z","2.12.1-ff70a8a-202501141038.0":"2025-01-14T10:39:42.261Z","2.12.1-3bfcb8b-202501141620.0":"2025-01-14T16:21:53.108Z","2.12.1-e511833-202501150939.0":"2025-01-15T09:40:23.009Z","2.12.1-6927cc6-202501151501.0":"2025-01-15T15:02:41.984Z","2.12.1-5b66f52-202501151732.0":"2025-01-15T17:34:10.319Z","2.12.1-5b66f52-202501151745.0":"2025-01-15T17:46:35.614Z","2.12.1-a08ba1b-202501151810.0":"2025-01-15T18:11:58.636Z","2.12.1-a08ba1b-202501161013.0":"2025-01-16T10:15:07.823Z","2.13.0":"2025-01-16T10:21:00.665Z","2.13.1-f808a3e-202501161033.0":"2025-01-16T10:34:42.106Z","2.13.1-e1e344c-202501161137.0":"2025-01-16T11:38:53.067Z","2.13.1-46cdfcc-202501161427.0":"2025-01-16T14:28:42.498Z","2.13.1-cf4655b-202501171439.0":"2025-01-17T14:41:08.580Z","2.13.1-58a1b53-202501171441.0":"2025-01-17T14:42:51.509Z","2.13.1-58a1b53-202501171455.0":"2025-01-17T14:56:47.719Z","2.13.1":"2025-01-17T15:11:15.395Z","2.13.2-efc15ce-202501171523.0":"2025-01-17T15:24:52.598Z","2.13.2-b85e9fd-202501201155.0":"2025-01-20T11:56:35.446Z","2.13.2-136de9a-202501221324.0":"2025-01-22T13:25:57.143Z","2.13.2-06bf604-202501221346.0":"2025-01-22T13:47:24.824Z","2.13.2-ac7ce53-202501221539.0":"2025-01-22T15:40:40.515Z","2.13.2-4c47024-202501241350.0":"2025-01-24T13:51:25.483Z","2.13.2-4528ec2-202501301136.0":"2025-01-30T11:38:17.058Z","2.13.2-1065b5d-202501311821.0":"2025-01-31T18:22:20.030Z","2.13.2-faa4e0b-202502041314.0":"2025-02-04T13:15:40.010Z","2.13.2-f39d095-202502050939.0":"2025-02-05T09:41:08.948Z","2.13.2-f39d095-202502071052.0":"2025-02-07T10:54:20.217Z","2.13.2-f39d095-202502071436.0":"2025-02-07T14:37:25.722Z","2.13.2-5776a61-202502071552.0":"2025-02-07T15:53:43.365Z","2.13.2-66f12f7-202502111555.0":"2025-02-11T15:57:02.723Z","2.13.2-a9815a6-202502121033.0":"2025-02-12T10:34:54.129Z","2.13.2-49de417-202502121105.0":"2025-02-12T11:06:41.761Z","2.13.2-49de417-202502121120.0":"2025-02-12T11:22:23.199Z","2.13.2-49de417-202502121131.0":"2025-02-12T11:32:30.057Z","2.13.2-d648d03-202502121145.0":"2025-02-12T11:46:42.755Z","2.13.2-d648d03-202502121159.0":"2025-02-12T12:01:13.331Z","2.13.2-d648d03-202502121212.0":"2025-02-12T12:14:09.987Z","2.13.2-c9264cf-202502121628.0":"2025-02-12T16:29:46.613Z","2.13.2-c9264cf-202502121640.0":"2025-02-12T16:42:09.444Z","2.13.2-40231ab-202502121712.0":"2025-02-12T17:13:35.473Z","2.13.2-dcad2fb-202502131013.0":"2025-02-13T10:15:16.660Z","2.13.2-dcad2fb-202502131020.0":"2025-02-13T10:21:18.970Z","2.13.2-dcad2fb-202502131024.0":"2025-02-13T10:26:01.509Z","2.13.2-dcad2fb-202502131028.0":"2025-02-13T10:29:34.333Z","2.14.0":"2025-02-13T10:30:45.390Z","2.14.1-8f57297-202502131043.0":"2025-02-13T10:45:03.483Z","2.14.1-71b2bab-202502131844.0":"2025-02-13T18:46:08.323Z","2.14.1-71b2bab-202502140942.0":"2025-02-14T09:44:18.182Z","2.14.1-38f4315-202502141016.0":"2025-02-14T10:17:46.908Z","2.14.1-7af1913-202502141052.0":"2025-02-14T10:53:54.774Z","2.14.1-aa681c6-202502141407.0":"2025-02-14T14:08:31.421Z","2.14.1-1d4d8d0-202502141435.0":"2025-02-14T14:36:27.124Z","2.14.1-0ad08ba-202502141512.0":"2025-02-14T15:14:07.510Z","2.14.1-9b74872-202502141520.0":"2025-02-14T15:21:47.514Z","2.14.1-9b74872-202502141534.0":"2025-02-14T15:35:51.146Z","2.14.1-9b74872-202502141633.0":"2025-02-14T16:34:36.314Z","2.14.1-a417129-202502141707.0":"2025-02-14T17:08:47.650Z","2.14.1-a417129-202502170956.0":"2025-02-17T09:57:41.457Z","2.14.1":"2025-02-17T10:07:29.925Z","2.14.2-7aedd40-202502171019.0":"2025-02-17T10:20:55.556Z","2.14.2-56d3c52-202502181029.0":"2025-02-18T10:30:48.573Z","2.14.2-dae75c2-202502181049.0":"2025-02-18T10:50:32.431Z","2.14.2-19e79b2-202502181407.0":"2025-02-18T14:08:34.067Z","2.14.2-91aeafb-202502181416.0":"2025-02-18T14:17:31.537Z","2.14.2-91aeafb-202502181430.0":"2025-02-18T14:31:51.175Z","2.14.2-ebe91bb-202502181448.0":"2025-02-18T14:50:06.010Z","2.14.2-ebe91bb-202502181641.0":"2025-02-18T16:42:29.539Z","2.14.2-ebe91bb-202502200859.0":"2025-02-20T09:01:09.987Z","2.14.2-71709cf-202502201617.0":"2025-02-20T16:18:29.340Z","2.14.2-57340d9-202502201759.0":"2025-02-20T18:00:37.859Z","2.14.2-a576f48-202502211117.0":"2025-02-21T11:18:31.574Z","2.14.2-d4a29de-202502211439.0":"2025-02-21T14:40:23.078Z","2.14.2-decd2d5-202502241205.0":"2025-02-24T12:06:30.128Z","2.14.2-594d8e8-202502251534.0":"2025-02-25T15:35:28.468Z","2.14.2-1f6cc95-202502261446.0":"2025-02-26T14:47:36.529Z","2.14.2-64a383b-202502261529.0":"2025-02-26T15:30:50.431Z","2.14.2-b313006-202502261736.0":"2025-02-26T17:37:25.708Z","2.14.2-b313006-202502261751.0":"2025-02-26T17:52:41.961Z","2.14.2-e56d874-202502271024.0":"2025-02-27T10:25:49.547Z","2.14.2-10bd1de-202502271419.0":"2025-02-27T14:21:03.443Z","2.14.2-be856da-202502271800.0":"2025-02-27T18:01:56.465Z","2.14.2-9cd0d77-202502280959.0":"2025-02-28T10:00:57.065Z","2.14.2-5c68830-202502281342.0":"2025-02-28T13:43:44.887Z","2.14.2-cb52a6f-202502281448.0":"2025-02-28T14:50:00.239Z","2.14.2-cb52a6f-202502281502.0":"2025-02-28T15:04:02.816Z","2.14.2-bc74615-202502281635.0":"2025-02-28T16:36:43.130Z","2.14.2-5bc5c7d-202503030954.0":"2025-03-03T09:55:48.751Z","2.14.2-5bc5c7d-202503031008.0":"2025-03-03T10:10:14.446Z","2.14.2-1f17823-202503031130.0":"2025-03-03T11:32:05.368Z","2.14.2-9b9c37a-202503031403.0":"2025-03-03T14:04:54.477Z","2.14.2-e54e01d-202503031514.0":"2025-03-03T15:16:14.438Z","2.14.2-0acaa77-202503031608.0":"2025-03-03T16:10:14.052Z","2.14.2-e30700a-202503031630.0":"2025-03-03T16:32:22.832Z","2.14.2-d84f9ad-202503031742.0":"2025-03-03T17:43:34.712Z","2.14.2-d84f9ad-202503031756.0":"2025-03-03T17:57:40.905Z","2.14.2-a1c270a-202503041025.0":"2025-03-04T10:27:13.897Z","2.14.2-a1c270a-202503041040.0":"2025-03-04T10:41:20.990Z","2.14.2-f416cd7-202503041330.0":"2025-03-04T13:32:06.271Z","2.14.2-50079c3-202503041438.0":"2025-03-04T14:40:05.624Z","2.14.2-44ed805-202503041504.0":"2025-03-04T15:05:38.342Z","2.14.2-a3544f3-202503041622.0":"2025-03-04T16:24:28.220Z","2.14.2-d3e6532-202503050936.0":"2025-03-05T09:38:08.680Z","2.14.2-d3e6532-202503050950.0":"2025-03-05T09:51:55.435Z","2.14.2-08d10c3-202503051220.0":"2025-03-05T12:22:14.709Z","2.14.2-113d52a-202503051418.0":"2025-03-05T14:19:43.973Z","2.14.2-67e910c-202503051550.0":"2025-03-05T15:51:53.509Z","2.14.2-67e910c-202503051814.0":"2025-03-05T18:16:14.774Z","2.14.2-baf636f-202503061110.0":"2025-03-06T11:11:44.796Z","2.14.2-b82c745-202503061302.0":"2025-03-06T13:03:30.388Z","2.14.2-c627c91-202503061540.0":"2025-03-06T15:41:44.363Z","2.14.2-e142fd8-202503101102.0":"2025-03-10T11:03:41.748Z","2.14.2-e142fd8-202503101117.0":"2025-03-10T11:18:24.734Z","2.14.2-c8d6486-202503101840.0":"2025-03-10T18:41:57.089Z","2.14.2-36ac327-202503111435.0":"2025-03-11T14:37:18.264Z","2.14.2-7ad0389-202503111634.0":"2025-03-11T16:35:50.246Z","2.14.2-7465ef4-202503111735.0":"2025-03-11T17:36:27.956Z","2.14.2-898bc5f-202503121603.0":"2025-03-12T16:05:02.420Z","2.14.2-c77aa0e-202503121644.0":"2025-03-12T16:46:13.496Z","2.14.2-1b4e347-202503121718.0":"2025-03-12T17:19:47.577Z","2.14.2-321cdbc-202503131000.0":"2025-03-13T10:01:29.310Z","2.14.2-321cdbc-202503131015.0":"2025-03-13T10:16:56.174Z","2.14.2-321cdbc-202503131047.0":"2025-03-13T10:48:54.560Z","2.14.2-321cdbc-202503131049.0":"2025-03-13T10:50:42.700Z","2.15.0":"2025-03-13T10:59:54.341Z","2.15.1-8a896c4-202503131111.0":"2025-03-13T11:13:02.082Z","2.15.1-1614c07-202503140956.0":"2025-03-14T09:57:21.963Z","2.15.1-b058eed-202503141636.0":"2025-03-14T16:38:10.976Z","2.15.1-85445ed-202503141639.0":"2025-03-14T16:40:21.536Z","2.15.1-c28515d-202503141640.0":"2025-03-14T16:42:05.110Z","2.15.1-c28515d-202503141655.0":"2025-03-14T16:56:36.214Z","2.15.1-d4eba00-202503141744.0":"2025-03-14T17:46:06.940Z","2.15.1-4fb0353-202503171027.0":"2025-03-17T10:29:09.268Z","2.15.1-dccf68a-202503171240.0":"2025-03-17T12:42:02.228Z","2.15.1-3943d0d-202503181115.0":"2025-03-18T11:17:13.324Z","2.15.1-d1aa795-202503190922.0":"2025-03-19T09:23:30.284Z","2.15.1-e8cea56-202503241447.0":"2025-03-24T14:48:29.639Z","2.15.1-d6a4062-202503250937.0":"2025-03-25T09:38:28.005Z","2.15.1-d6a4062-202503250947.0":"2025-03-25T09:48:28.178Z","2.15.1-d6a4062-202503251002.0":"2025-03-25T10:04:16.845Z","2.15.1-d6a4062-202503251011.0":"2025-03-25T10:12:48.277Z","2.15.1-e238560-202503251044.0":"2025-03-25T10:46:10.102Z","2.15.1-2bbc3af-202503251137.0":"2025-03-25T11:38:46.926Z","2.15.1-96b20c5-202503251243.0":"2025-03-25T12:44:27.981Z","2.15.1-96b20c5-202503251257.0":"2025-03-25T12:58:44.122Z","2.15.1-96b20c5-202503251615.0":"2025-03-25T16:17:21.254Z","2.15.1-614128b-202503251735.0":"2025-03-25T17:36:44.307Z","2.15.1-05b06a3-202503281434.0":"2025-03-28T14:36:05.316Z","2.15.1-05b06a3-202503281451.0":"2025-03-28T14:53:24.616Z","2.15.1-c1b0f74-202503310858.0":"2025-03-31T09:00:28.318Z","2.15.1-199c824-202504021154.0":"2025-04-02T11:55:52.119Z","2.15.1-a5aa9be-202504021211.0":"2025-04-02T12:12:54.217Z","2.15.1-a5aa9be-202504021228.0":"2025-04-02T12:29:30.872Z","2.15.1-a5aa9be-202504021311.0":"2025-04-02T13:13:20.348Z","2.15.1-a5aa9be-202504021315.0":"2025-04-02T13:16:24.697Z","2.15.1-00dcc74-202504021400.0":"2025-04-02T14:01:49.174Z","2.15.1-0b3e912-202504021408.0":"2025-04-02T14:10:06.956Z","2.15.1-0b3e912-202504021423.0":"2025-04-02T14:25:16.677Z","2.15.1-fdb3151-202504021603.0":"2025-04-02T16:05:11.571Z","2.15.1-ffe93f1-202504021621.0":"2025-04-02T16:22:37.836Z","2.15.1-bd18f4d-202504031046.0":"2025-04-03T10:48:02.000Z","2.15.1-3883ff2-202504031344.0":"2025-04-03T13:45:43.526Z","2.15.1-125bdac-202504031412.0":"2025-04-03T14:13:45.268Z","2.15.1-ac61ac2-202504031440.0":"2025-04-03T14:42:08.504Z","2.15.1-ac61ac2-202504040811.0":"2025-04-04T08:12:59.101Z","2.15.1-5202224-202504040837.0":"2025-04-04T08:39:19.665Z","2.15.1-5202224-202504040852.0":"2025-04-04T08:54:21.335Z","2.15.1-5202224-202504040905.0":"2025-04-04T09:06:46.395Z","2.15.1-3d2c388-202504040947.0":"2025-04-04T09:48:39.055Z","2.15.1-3d2c388-202504041026.0":"2025-04-04T10:28:01.971Z","2.15.1-43d694f-202504041321.0":"2025-04-04T13:22:38.259Z","2.15.1-43d694f-202504041533.0":"2025-04-04T15:34:58.751Z","2.15.1-43d694f-202504041540.0":"2025-04-04T15:42:12.757Z","2.15.1-7b4a17b-202504041615.0":"2025-04-04T16:16:29.417Z","2.15.1-38bd0ee-202504041630.0":"2025-04-04T16:32:14.838Z","2.15.1-aa8462b-202504041653.0":"2025-04-04T16:54:46.545Z","2.15.1-bdca7c7-202504041819.0":"2025-04-04T18:20:48.573Z","2.15.1-00f475f-202504071404.0":"2025-04-07T14:06:21.991Z","2.15.1-1f6b33b-202504081441.0":"2025-04-08T14:43:01.715Z","2.15.1-1607252-202504090858.0":"2025-04-09T08:59:33.414Z","2.15.1-cafcc47-202504091045.0":"2025-04-09T10:46:53.017Z","2.15.1-61941db-202504091214.0":"2025-04-09T12:16:12.840Z","2.15.1-61941db-202504091229.0":"2025-04-09T12:31:24.507Z","2.15.1-c18ac15-202504091329.0":"2025-04-09T13:30:39.614Z","2.15.1-e58f361-202504091611.0":"2025-04-09T16:13:15.333Z","2.15.1-e58f361-202504100916.0":"2025-04-10T09:18:13.298Z","2.16.0":"2025-04-10T09:24:07.621Z","2.16.1-e842c4c-202504100937.0":"2025-04-10T09:38:38.848Z","2.16.1-63fcdcb-202504101659.0":"2025-04-10T17:00:56.044Z","2.16.1-63fcdcb-202504140625.0":"2025-04-14T06:27:16.863Z","2.16.1-f19e905-202504141046.0":"2025-04-14T10:47:44.105Z","2.16.1-f19e905-202504141229.0":"2025-04-14T12:30:55.709Z","2.16.1-daf1eb4-202504141658.0":"2025-04-14T17:00:12.346Z","2.16.1-daf1eb4-202504150619.0":"2025-04-15T06:20:57.020Z","2.16.1-e959f76-202504150957.0":"2025-04-15T09:58:45.257Z","2.16.1-e959f76-202504151012.0":"2025-04-15T10:14:00.567Z","2.16.1-1141a98-202504161330.0":"2025-04-16T13:32:00.906Z","2.16.1-5758b8e-202504170945.0":"2025-04-17T09:47:18.571Z","2.16.1-3c6cd1d-202504171101.0":"2025-04-17T11:03:20.065Z","2.16.1-6c5d4e8-202504171217.0":"2025-04-17T12:18:56.722Z","2.16.1-f288fd5-202504171528.0":"2025-04-17T15:29:40.557Z","2.16.1-b3caa00-202504171620.0":"2025-04-17T16:22:10.006Z","2.16.1-fd4b836-202504171739.0":"2025-04-17T17:40:28.207Z","2.16.1-55c3b3c-202504250915.0":"2025-04-25T09:16:56.098Z","2.16.1-7320ed4-202504251028.0":"2025-04-25T10:29:27.385Z","2.16.1-3988717-202504251449.0":"2025-04-25T14:50:53.748Z","2.16.1-3988717-202504251503.0":"2025-04-25T15:05:06.794Z","2.16.1-bcb1c22-202504261014.0":"2025-04-26T10:16:22.670Z","2.16.1-cb4d14f-202504281028.0":"2025-04-28T10:30:15.006Z","2.16.1-b37825f-202504291109.0":"2025-04-29T11:10:44.020Z","2.16.1-9487d5a-202504291217.0":"2025-04-29T12:19:16.460Z","2.16.1-dedfb30-202504291259.0":"2025-04-29T13:01:04.813Z","2.16.1-8156389-202504291428.0":"2025-04-29T14:29:47.394Z","2.16.1-fabf434-202504291700.0":"2025-04-29T17:02:21.705Z","2.16.1-15daebf-202504300954.0":"2025-04-30T09:56:23.723Z","2.16.1-0278af5-202504301240.0":"2025-04-30T12:41:57.703Z","2.16.1-e28c657-202504301535.0":"2025-04-30T15:36:45.747Z","2.16.1-e28c657-202504301542.0":"2025-04-30T15:43:43.309Z","2.16.1-e0fb3f0-202505012028.0":"2025-05-01T20:29:52.532Z","2.16.1-9823482-202505020926.0":"2025-05-02T09:28:04.806Z","2.16.1-379c584-202505021027.0":"2025-05-02T10:29:29.528Z","2.16.1-1f7b3b9-202505021522.0":"2025-05-02T15:23:57.319Z","2.16.1-1f7b3b9-202505021537.0":"2025-05-02T15:39:22.465Z","2.16.1-20890e6-202505050909.0":"2025-05-05T09:10:55.150Z","2.16.1-20890e6-202505051646.0":"2025-05-05T16:47:49.880Z","2.16.1-0fefeff-202505061135.0":"2025-05-06T11:36:48.793Z","2.16.1-9613086-202505061318.0":"2025-05-06T13:20:12.446Z","2.16.1-abb6a8e-202505071316.0":"2025-05-07T13:17:44.430Z","2.16.1-96cc5a8-202505071355.0":"2025-05-07T13:57:29.410Z","2.16.1-96cc5a8-202505071411.0":"2025-05-07T14:13:15.865Z","2.16.1-96cc5a8-202505071429.0":"2025-05-07T14:32:06.006Z","2.16.1-1334bf3-202505071729.0":"2025-05-07T17:30:34.846Z","2.16.1-1334bf3-202505071744.0":"2025-05-07T17:46:03.828Z","2.16.1-cef6c30-202505080840.0":"2025-05-08T08:41:36.520Z","2.16.1-29d8ee2-202505080908.0":"2025-05-08T09:10:10.847Z","2.16.1-29d8ee2-202505080923.0":"2025-05-08T09:25:27.720Z","2.16.1-29d8ee2-202505080938.0":"2025-05-08T09:39:36.119Z","2.17.0":"2025-05-08T09:43:50.093Z","2.17.1-999a684-202505080957.0":"2025-05-08T09:59:30.585Z","2.17.1-7c5a323-202505081622.0":"2025-05-08T16:23:53.864Z","2.17.1-ce4a392-202505121317.0":"2025-05-12T13:19:02.155Z","2.17.1-a2281a2-202505121527.0":"2025-05-12T15:29:14.396Z","2.17.1-acbe939-202505132003.0":"2025-05-13T20:04:42.015Z","2.17.1-86bef11-202505140827.0":"2025-05-14T08:29:05.134Z","2.17.1-e223b71-202505140923.0":"2025-05-14T09:25:21.554Z","2.17.1-1a05ddc-202505141014.0":"2025-05-14T10:15:36.744Z","2.17.1-5451f37-202505271334.0":"2025-05-27T13:36:18.584Z","2.17.1-5451f37-202505271337.0":"2025-05-27T13:38:51.536Z","2.17.1-70ad837-202505281556.0":"2025-05-28T15:58:10.472Z","2.17.1-70ad837-202505281612.0":"2025-05-28T16:13:39.832Z","2.17.1-9f25974-202505291602.0":"2025-05-29T16:04:05.000Z","2.17.1-d98afa6-202505291619.0":"2025-05-29T16:21:16.255Z","2.17.1-d98afa6-202505301316.0":"2025-05-30T13:17:45.844Z","2.17.1-4dd2f3d-202505301529.0":"2025-05-30T15:31:07.823Z","2.17.1-aa44f7f-202506020944.0":"2025-06-02T09:46:14.356Z","2.17.1-dd399fd-202506021049.0":"2025-06-02T10:51:03.659Z","2.17.1-6dcc6d2-202506030936.0":"2025-06-03T09:38:29.931Z","2.17.1-396cb0b-202506031003.0":"2025-06-03T10:04:56.064Z","2.17.1-396cb0b-202506031018.0":"2025-06-03T10:20:10.250Z","2.17.1-54763fd-202506031222.0":"2025-06-03T12:24:12.753Z","2.17.1-54763fd-202506031236.0":"2025-06-03T12:37:57.049Z","2.17.1-b123e32-202506031313.0":"2025-06-03T13:14:50.168Z","2.17.1-a56a8e7-202506040934.0":"2025-06-04T09:35:49.042Z","2.17.1-a56a8e7-202506040950.0":"2025-06-04T09:51:58.695Z","2.17.1-72a8a56-202506041202.0":"2025-06-04T12:04:00.228Z","2.17.1-23ba907-202506041519.0":"2025-06-04T15:21:29.923Z","2.17.1-409d3c3-202506041522.0":"2025-06-04T15:24:09.974Z","2.17.1-409d3c3-202506041537.0":"2025-06-04T15:39:01.331Z","2.17.1-6fb33f2-202506050834.0":"2025-06-05T08:35:50.233Z","2.17.1-6fb33f2-202506050904.0":"2025-06-05T09:06:25.598Z","2.17.1-5e0d888-202506051027.0":"2025-06-05T10:28:42.287Z","2.17.1-5e0d888-202506051042.0":"2025-06-05T10:43:55.286Z","2.18.0":"2025-06-05T10:49:28.820Z","2.18.1-e0c2b79-202506051047.0":"2025-06-05T10:49:31.390Z","2.18.1-e0c2b79-202506051103.0":"2025-06-05T11:04:45.208Z","2.18.1-a3bdfab-202506060709.0":"2025-06-06T07:10:50.838Z","2.18.1-008b3f2-202506060917.0":"2025-06-06T09:19:33.463Z","2.18.1-ec2ac60-202506060945.0":"2025-06-06T09:46:37.628Z","2.18.1-ec2ac60-202506061022.0":"2025-06-06T10:23:51.473Z","2.18.1-ec2ac60-202506061025.0":"2025-06-06T10:27:14.011Z","2.18.1-1d9a79b-202506101553.0":"2025-06-10T15:54:33.623Z","2.18.1-5706184-202506101816.0":"2025-06-10T18:18:23.648Z","2.18.1-72c5f2b-202506111614.0":"2025-06-11T16:16:28.034Z","2.18.1-72c5f2b-202506111912.0":"2025-06-11T19:14:12.070Z","2.18.1-72c5f2b-202506111917.0":"2025-06-11T19:19:38.801Z","2.18.1-3983ad0-202506121008.0":"2025-06-12T10:10:00.768Z","2.18.1-3983ad0-202506121250.0":"2025-06-12T12:51:59.267Z","2.18.1-3983ad0-202506121515.0":"2025-06-12T15:17:06.430Z","2.18.1-3983ad0-202506121537.0":"2025-06-12T15:38:51.512Z","2.18.1-e255489-202506131320.0":"2025-06-13T13:22:15.166Z","2.18.1-e255489-202506131431.0":"2025-06-13T14:33:28.805Z","2.18.1-e255489-202506131702.0":"2025-06-13T17:03:39.181Z","2.18.1-e255489-202506131706.0":"2025-06-13T17:07:38.979Z","2.18.1-347de6f-202506170937.0":"2025-06-17T09:38:44.912Z","2.18.1-347de6f-202506171457.0":"2025-06-17T14:59:18.994Z","2.18.1-347de6f-202506180950.0":"2025-06-18T09:52:23.983Z","2.18.1-9d0a50b-202506181110.0":"2025-06-18T11:11:38.714Z","2.18.1-10cbb56-202506190807.0":"2025-06-19T08:09:02.957Z","2.18.1-16e71ed-202506191241.0":"2025-06-19T12:43:09.511Z","2.18.1-16e71ed-202506191257.0":"2025-06-19T12:59:15.176Z","2.18.1-ba8ec09-202506191400.0":"2025-06-19T14:02:16.800Z","2.18.1-40cab79-202506200900.0":"2025-06-20T09:02:23.103Z","2.18.1-f054ad2-202506201159.0":"2025-06-20T12:00:56.707Z","2.18.1-88317ef-202506201256.0":"2025-06-20T12:58:00.828Z","2.18.1-88317ef-202506201312.0":"2025-06-20T13:13:36.571Z","2.18.1-2f810ed-202506201449.0":"2025-06-20T14:50:54.752Z","2.18.1-2f810ed-202506201504.0":"2025-06-20T15:06:18.125Z","2.18.1-529bc75-202506231151.0":"2025-06-23T11:52:59.885Z","2.18.1-529bc75-202506231206.0":"2025-06-23T12:08:27.743Z","2.18.1-1fb6fd2-202506231535.0":"2025-06-23T15:36:56.841Z","2.18.1-1fb6fd2-202506231550.0":"2025-06-23T15:51:54.765Z","2.18.1-88d9f69-202506241031.0":"2025-06-24T10:32:59.823Z","2.18.1-88d9f69-202506241237.0":"2025-06-24T12:38:57.543Z","2.18.1-1ac2dc2-202506241441.0":"2025-06-24T14:43:13.343Z","2.18.1-53ae606-202506251041.0":"2025-06-25T10:42:43.786Z","2.18.1-704a989-202506251339.0":"2025-06-25T13:41:36.221Z","2.18.1-704a989-202506251401.0":"2025-06-25T14:03:40.150Z","2.18.1-80b5cc9-202506251512.0":"2025-06-25T15:14:40.401Z","2.18.1-5386e1f-202506261422.0":"2025-06-26T14:24:06.809Z","2.18.1-c99d360-202506271129.0":"2025-06-27T11:31:24.435Z","2.18.1-b59737f-202506271308.0":"2025-06-27T13:09:45.970Z","2.18.1-33f154e-202506271335.0":"2025-06-27T13:37:34.028Z","2.18.1-33f154e-202506271716.0":"2025-06-27T17:18:35.534Z","2.18.1-33f154e-202506300806.0":"2025-06-30T08:08:09.305Z","2.18.1-a7acf45-202506301034.0":"2025-06-30T10:36:03.383Z","2.18.1-a7acf45-202506301633.0":"2025-06-30T16:35:11.460Z","2.18.1-a7acf45-202506301750.0":"2025-06-30T17:52:09.658Z","2.18.1-dc874d6-202507010823.0":"2025-07-01T08:24:44.700Z","2.18.1-4763ebf-202507011154.0":"2025-07-01T11:55:58.642Z","2.18.1-8dd7cc2-202507011502.0":"2025-07-01T15:04:34.366Z","2.18.1-76ea8d5-202507011534.0":"2025-07-01T15:35:56.555Z","2.18.1-76ea8d5-202507011550.0":"2025-07-01T15:52:31.444Z","2.18.1-8a06b12-202507011620.0":"2025-07-01T16:21:51.144Z","2.18.1-c75359c-202507011642.0":"2025-07-01T16:44:44.084Z","2.18.1-ebbc205-202507011650.0":"2025-07-01T16:51:46.148Z","2.18.1-ebbc205-202507011706.0":"2025-07-01T17:07:43.647Z","2.18.1-ebbc205-202507011823.0":"2025-07-01T18:24:46.161Z","2.18.1-e929575-202507021108.0":"2025-07-02T11:09:45.562Z","2.18.1-e929575-202507021123.0":"2025-07-02T11:24:46.500Z","2.18.1-0e17ac5-202507021138.0":"2025-07-02T11:40:19.161Z","2.18.1-959d1c6-202507021406.0":"2025-07-02T14:08:27.864Z","2.18.1-9566fa3-202507021656.0":"2025-07-02T16:58:11.943Z","2.18.1-12ebd7c-202507030810.0":"2025-07-03T08:12:30.041Z","2.18.1-1cac58b-202507030846.0":"2025-07-03T08:48:27.598Z","2.18.1-1cac58b-202507030850.0":"2025-07-03T08:51:50.988Z","2.18.1-a48a3a8-202507030906.0":"2025-07-03T09:08:09.584Z","2.18.1-a48a3a8-202507030921.0":"2025-07-03T09:22:37.974Z","2.18.1-a48a3a8-202507030928.0":"2025-07-03T09:29:38.973Z","2.18.1-a48a3a8-202507030930.0":"2025-07-03T09:31:38.790Z","2.19.0":"2025-07-03T09:39:12.896Z","2.19.1-0c0aa4d-202507030937.0":"2025-07-03T09:39:21.203Z","2.19.1-0c0aa4d-202507030952.0":"2025-07-03T09:54:24.487Z","2.19.1-2da1f10-202507071027.0":"2025-07-07T10:29:49.380Z","2.19.1-b4c748b-202507071200.0":"2025-07-07T12:01:54.495Z","2.19.1-b4c748b-202507071211.0":"2025-07-07T12:13:03.752Z","2.19.1-18e2c9f-202507071246.0":"2025-07-07T12:47:56.188Z","2.19.1-a968be4-202507071430.0":"2025-07-07T14:32:23.278Z","2.19.1-a968be4-202507071745.0":"2025-07-07T17:47:25.081Z","2.19.1-7e8624b-202507081429.0":"2025-07-08T14:31:14.350Z","2.19.1-d737ea0-202507091532.0":"2025-07-09T15:33:33.360Z","2.19.1-684f605-202507101141.0":"2025-07-10T11:43:31.128Z","2.19.1-67f7b41-202507141023.0":"2025-07-14T10:25:17.003Z","2.19.1-67f7b41-202507141039.0":"2025-07-14T10:40:42.967Z","2.19.1-0059cec-202507150823.0":"2025-07-15T08:25:34.204Z","2.19.1-0059cec-202507160927.0":"2025-07-16T09:28:39.321Z","2.19.1-da6430f-202507170933.0":"2025-07-17T09:35:17.051Z","2.19.1-d959b29-202507171013.0":"2025-07-17T10:15:01.971Z","2.19.1-8d62aa5-202507171231.0":"2025-07-17T12:32:48.837Z","2.19.1-8d62aa5-202507171244.0":"2025-07-17T12:46:08.894Z","2.19.1-ac01cfa-202507180942.0":"2025-07-18T09:44:03.427Z","2.19.1-ac01cfa-202507180948.0":"2025-07-18T09:50:19.067Z","2.19.1-ac01cfa-202507181014.0":"2025-07-18T10:16:07.005Z","2.19.1-ac01cfa-202507181017.0":"2025-07-18T10:19:12.249Z","2.19.1-46c6716-202507181322.0":"2025-07-18T13:23:58.285Z","2.19.1-63cc75a-202507181626.0":"2025-07-18T16:27:37.425Z","2.19.1-b7cd3cd-202507211033.0":"2025-07-21T10:34:37.457Z","2.19.1-92be94b-202507211332.0":"2025-07-21T13:33:43.860Z","2.19.1-92be94b-202507211347.0":"2025-07-21T13:49:50.566Z","2.19.1-9e5ec7b-202507211443.0":"2025-07-21T14:45:39.070Z","2.19.1-9e5ec7b-202507220827.0":"2025-07-22T08:29:31.807Z","2.19.1-b862ed8-202507220955.0":"2025-07-22T09:56:59.665Z","2.19.1-4227159-202507221408.0":"2025-07-22T14:10:19.539Z","2.19.1":"2025-07-22T14:13:49.144Z","2.19.2-a71f9a0-202507221412.0":"2025-07-22T14:14:05.264Z","2.19.2-a71f9a0-202507221428.0":"2025-07-22T14:29:50.403Z","2.19.2-0f50305-202507230926.0":"2025-07-23T09:28:19.845Z","2.19.2-dd13f66-202507230947.0":"2025-07-23T09:48:49.141Z","2.19.2-2fc0ddb-202507231456.0":"2025-07-23T14:58:13.635Z","2.19.2-8009370-202507231624.0":"2025-07-23T16:26:29.262Z","2.19.2-8009370-202507240837.0":"2025-07-24T08:38:45.443Z","2.19.2-cc3363e-202507251515.0":"2025-07-25T15:17:28.858Z","2.19.2-cc82aec-202507251548.0":"2025-07-25T15:50:20.190Z","2.19.2-c39bc50-202507280952.0":"2025-07-28T09:54:15.855Z","2.19.2-904798b-202507281142.0":"2025-07-28T11:43:51.253Z","2.19.2-c82d238-202507281357.0":"2025-07-28T13:58:58.352Z","2.19.2-c82d238-202507281411.0":"2025-07-28T14:12:45.827Z","2.19.2-93f53dd-202507281458.0":"2025-07-28T15:00:04.662Z","2.19.2-4e491a8-202507281620.0":"2025-07-28T16:22:34.146Z","2.19.2-3b064d3-202507281742.0":"2025-07-28T17:43:58.918Z","2.19.2-31d6502-202507281957.0":"2025-07-28T19:59:28.259Z","2.19.2-7bf95e4-202507291112.0":"2025-07-29T11:14:07.818Z","2.19.2-7bf95e4-202507291128.0":"2025-07-29T11:29:42.197Z","2.19.2-1286819-202507291315.0":"2025-07-29T13:16:48.762Z","2.19.2-f3b48af-202507300816.0":"2025-07-30T08:18:21.990Z","2.19.2-a8a5191-202507300853.0":"2025-07-30T08:55:12.753Z","2.19.2-2f79d75-202507300859.0":"2025-07-30T09:01:09.360Z","2.19.2-2f79d75-202507300915.0":"2025-07-30T09:16:49.517Z","2.19.2-da3add9-202507300929.0":"2025-07-30T09:31:16.045Z","2.19.2-da3add9-202507300944.0":"2025-07-30T09:46:17.616Z","2.19.2-da3add9-202507301024.0":"2025-07-30T10:26:01.339Z","2.19.2-da3add9-202507301243.0":"2025-07-30T12:45:03.060Z","2.19.2-06f9c4a-202507301513.0":"2025-07-30T15:15:00.820Z","2.19.2-06f9c4a-202507301526.0":"2025-07-30T15:27:44.551Z","2.19.2-06f9c4a-202507301543.0":"2025-07-30T15:45:09.070Z","2.19.2-06f9c4a-202507301554.0":"2025-07-30T15:55:34.931Z","2.19.2-0971d5b-202507310704.0":"2025-07-31T07:06:18.107Z","2.19.2-0971d5b-202507310720.0":"2025-07-31T07:21:58.086Z","2.19.2-6a59980-202507310848.0":"2025-07-31T08:50:07.549Z","2.19.2-6a59980-202507310851.0":"2025-07-31T08:53:23.202Z","2.19.2-6a59980-202507310853.0":"2025-07-31T08:55:33.518Z","2.19.2-6a59980-202507310922.0":"2025-07-31T09:23:55.592Z","2.19.2-b36f434-202507310928.0":"2025-07-31T09:29:51.538Z","2.19.2-b36f434-202507310943.0":"2025-07-31T09:45:24.171Z","2.20.0":"2025-07-31T09:53:12.540Z","2.20.1-5b45562-202507311002.0":"2025-07-31T10:04:15.203Z","2.20.1-5b45562-202507311231.0":"2025-07-31T12:32:41.281Z","2.20.1-5b45562-202507311235.0":"2025-07-31T12:36:44.049Z","2.20.1-55c639b-202507311306.0":"2025-07-31T13:07:52.775Z","2.20.1-a175185-202508011032.0":"2025-08-01T10:34:01.926Z","2.20.1-3c84376-202508011332.0":"2025-08-01T13:34:18.876Z","2.20.1-98a10bc-202508011415.0":"2025-08-01T14:17:18.202Z","2.20.1-8066506-202508011456.0":"2025-08-01T14:58:24.312Z","2.20.1-5202ed0-202508041029.0":"2025-08-04T10:30:51.738Z","2.20.1-75887e5-202508070739.0":"2025-08-07T07:41:20.101Z","2.20.1-75887e5-202508070753.0":"2025-08-07T07:55:18.728Z","2.20.1-8099eda-202508081519.0":"2025-08-08T15:20:33.018Z","2.20.1-8099eda-202508081534.0":"2025-08-08T15:36:20.873Z","2.20.1-7849fb0-202508081605.0":"2025-08-08T16:07:24.375Z","2.20.1-7849fb0-202508111009.0":"2025-08-11T10:11:20.987Z","2.20.1-e4dba78-202508111038.0":"2025-08-11T10:39:39.519Z","2.20.1-6eb28c6-202508111707.0":"2025-08-11T17:09:05.317Z","2.20.1-6eb28c6-202508120831.0":"2025-08-12T08:32:32.286Z","2.20.1-655f93e-202508120839.0":"2025-08-12T08:41:01.591Z","2.20.1-655f93e-202508120845.0":"2025-08-12T08:47:25.801Z","2.20.1-036a461-202508121036.0":"2025-08-12T10:37:53.534Z","2.20.1-f0e2f33-202508121103.0":"2025-08-12T11:05:11.040Z","2.20.1-781b512-202508131028.0":"2025-08-13T10:29:55.300Z","2.20.1-2448555-202508141311.0":"2025-08-14T13:13:19.184Z","2.20.1-2448555-202508141327.0":"2025-08-14T13:29:13.287Z","2.20.1-dcaa76b-202508151240.0":"2025-08-15T12:42:24.365Z","2.20.1-cf47841-202508151701.0":"2025-08-15T17:03:27.294Z","2.20.1-cf47841-202508180854.0":"2025-08-18T08:56:34.379Z","2.20.1-7b9e3fd-202508180935.0":"2025-08-18T09:36:47.098Z","2.20.1-7b9e3fd-202508180950.0":"2025-08-18T09:51:38.144Z","2.20.1-cc936e6-202508181030.0":"2025-08-18T10:31:48.862Z","2.20.1-cc936e6-202508190631.0":"2025-08-19T06:33:27.774Z","2.20.1-0f7b91c-202508190932.0":"2025-08-19T09:34:31.648Z","2.20.1-2b294a0-202508191006.0":"2025-08-19T10:07:50.338Z","2.20.1-06c5245-202508191045.0":"2025-08-19T10:46:46.780Z","2.20.1-ce50c29-202508192000.0":"2025-08-19T20:02:37.574Z","2.20.1-0b2024a-202508211607.0":"2025-08-21T16:09:10.948Z","2.20.1-dbe6360-202508221526.0":"2025-08-22T15:27:48.671Z","2.20.1-5bdfff8-202508260938.0":"2025-08-26T09:40:00.291Z","2.20.1-3b616b1-202508261021.0":"2025-08-26T10:23:06.938Z","2.20.1-3b616b1-202508261035.0":"2025-08-26T10:36:47.783Z","2.20.1-85614fe-202508261423.0":"2025-08-26T14:25:35.241Z","2.20.1-85614fe-202508270930.0":"2025-08-27T09:31:56.359Z","2.20.1-222a7d0-202508271306.0":"2025-08-27T13:08:14.569Z","2.20.1-222a7d0-202508271322.0":"2025-08-27T13:24:12.417Z","2.20.1-0a50a04-202508271642.0":"2025-08-27T16:44:21.486Z","2.20.1-1b95a8d-202508280832.0":"2025-08-28T08:34:14.774Z","2.20.1-1b95a8d-202508280851.0":"2025-08-28T08:52:40.892Z","2.20.1-1b95a8d-202508280915.0":"2025-08-28T09:17:24.635Z","2.20.1-1b95a8d-202508280928.0":"2025-08-28T09:30:37.935Z","2.20.1-1b95a8d-202508280933.0":"2025-08-28T09:34:53.340Z","2.21.1-74995fc-202508280946.0":"2025-08-28T09:47:54.661Z","2.21.0":"2025-08-28T09:48:09.845Z","2.21.1-74995fc-202508281002.0":"2025-08-28T10:03:56.515Z","2.21.1-74995fc-202508281121.0":"2025-08-28T11:23:21.322Z","2.21.1-74995fc-202508281145.0":"2025-08-28T11:46:56.542Z","2.21.1-74995fc-202508281157.0":"2025-08-28T11:58:40.178Z","2.21.1-74995fc-202508281158.0":"2025-08-28T12:00:31.659Z","2.21.1":"2025-08-28T12:07:29.620Z","2.21.2-1c2137a-202508281221.0":"2025-08-28T12:23:23.889Z","2.21.2-318892b-202508291018.0":"2025-08-29T10:20:26.859Z","2.21.2-6fe4d6d-202508291507.0":"2025-08-29T15:09:52.765Z","2.21.2-6fe4d6d-202509010918.0":"2025-09-01T09:19:48.206Z","2.21.2-fccb7b2-202509040916.0":"2025-09-04T09:17:47.914Z","2.21.2-fccb7b2-202509041432.0":"2025-09-04T14:33:44.985Z","2.21.2-4b1bccf-202509041502.0":"2025-09-04T15:04:08.209Z","2.21.2-f8d1394-202509051153.0":"2025-09-05T11:55:15.141Z","2.21.2-f8d1394-202509051331.0":"2025-09-05T13:33:27.383Z","2.21.2-f8d1394-202509051342.0":"2025-09-05T13:44:20.241Z","2.21.2-51a783b-202509080758.0":"2025-09-08T08:00:18.299Z","2.21.2-c501a90-202509081118.0":"2025-09-08T11:20:23.749Z","2.21.2-7d4e041-202509081306.0":"2025-09-08T13:08:21.645Z","2.21.2-7d4e041-202509081323.0":"2025-09-08T13:25:10.465Z","2.21.2-53c3bd2-202509081421.0":"2025-09-08T14:23:31.191Z","2.21.2-2577346-202509082050.0":"2025-09-08T20:51:58.870Z","2.21.2-0ac0bd2-202509090854.0":"2025-09-09T08:56:17.839Z","2.21.2-070bd7e-202509091645.0":"2025-09-09T16:47:29.613Z","2.21.2-070bd7e-202509091734.0":"2025-09-09T17:36:32.527Z","2.21.2-070bd7e-202509100833.0":"2025-09-10T08:35:34.257Z","2.21.2":"2025-09-10T08:40:33.906Z","2.21.3-20001f3-202509100854.0":"2025-09-10T08:56:08.933Z","2.21.3-379c3fd-202509101328.0":"2025-09-10T13:30:20.730Z","2.21.3-16abcfa-202509110742.0":"2025-09-11T07:43:47.255Z","2.21.3-16abcfa-202509110757.0":"2025-09-11T07:59:09.484Z","2.21.3-9c5771c-202509111356.0":"2025-09-11T13:58:01.138Z","2.21.3-33800f4-202509120900.0":"2025-09-12T09:01:48.680Z","2.21.3-33800f4-202509150741.0":"2025-09-15T07:43:03.582Z","2.21.3-5cbc9a0-202509151100.0":"2025-09-15T11:02:02.090Z","2.21.3-5cbc9a0-202509151342.0":"2025-09-15T13:44:43.351Z","2.21.3-5cbc9a0-202509151352.0":"2025-09-15T13:54:09.582Z","2.21.3-5cbc9a0-202509160529.0":"2025-09-16T05:31:17.310Z","2.21.3-0a557bb-202509160927.0":"2025-09-16T09:29:35.855Z","2.21.3-0a557bb-202509161024.0":"2025-09-16T10:26:11.262Z","2.21.3-8907175-202509161053.0":"2025-09-16T10:54:47.113Z","2.21.3-904b9c6-202509170801.0":"2025-09-17T08:03:20.784Z","2.21.3-989eae8-202509190923.0":"2025-09-19T09:24:44.108Z","2.21.3-93a2df7-202509191511.0":"2025-09-19T15:12:44.671Z","2.21.3-93a2df7-202509220523.0":"2025-09-22T05:25:12.086Z","2.21.3-93a2df7-202509220856.0":"2025-09-22T08:58:37.961Z","2.21.3-beb462c-202509221051.0":"2025-09-22T10:54:45.504Z","2.21.3-beb462c-202509221215.0":"2025-09-22T12:16:58.195Z","2.21.3-beb462c-202509221217.0":"2025-09-22T12:19:23.824Z","2.21.3-1407081-202509221351.0":"2025-09-22T13:53:31.738Z","2.21.3-1407081-202509221419.0":"2025-09-22T14:21:11.632Z","2.21.3-ceb8765-202509230520.0":"2025-09-23T05:22:36.024Z","2.21.3-62564ff-202509250930.0":"2025-09-25T09:32:16.128Z","2.21.3-62564ff-202509250944.0":"2025-09-25T09:45:47.851Z","2.21.3-62564ff-202509250948.0":"2025-09-25T09:50:53.800Z","2.21.3-62564ff-202509250951.0":"2025-09-25T09:53:19.554Z","2.22.0":"2025-09-25T09:58:19.841Z","2.22.1-d6410be-202509251013.0":"2025-09-25T10:14:52.647Z","2.22.1-c5c726d-202509260955.0":"2025-09-26T09:56:57.464Z","2.22.1-24d60c3-202509261032.0":"2025-09-26T10:34:40.515Z","2.22.1-24d60c3-202509261048.0":"2025-09-26T10:50:34.159Z","2.22.1-4e745e4-202509290622.0":"2025-09-29T06:24:05.292Z","2.22.1-35a5708-202509290915.0":"2025-09-29T09:17:35.818Z","2.22.1-35a5708-202509291349.0":"2025-09-29T13:50:45.737Z","2.22.1-2ba3929-202509291724.0":"2025-09-29T17:26:36.122Z","2.22.1-1432fd0-202509300801.0":"2025-09-30T08:03:09.803Z","2.22.1-1432fd0-202509300818.0":"2025-09-30T08:19:46.716Z","2.22.1-e0f5220-202510011131.0":"2025-10-01T11:32:44.312Z","2.22.1-2248673-202510011202.0":"2025-10-01T12:03:55.575Z","2.22.1-a03f01a-202510071255.0":"2025-10-07T12:57:09.476Z","2.22.1-4d412ea-202510080931.0":"2025-10-08T09:32:50.509Z","2.22.1-b8e2af2-202510081105.0":"2025-10-08T11:07:26.779Z","2.22.1-f3680d8-202510081450.0":"2025-10-08T14:52:18.853Z","2.22.1-f3680d8-202510081510.0":"2025-10-08T15:12:38.049Z","2.22.1-8b1f95c-202510100812.0":"2025-10-10T08:14:29.550Z","2.22.1-b1021e3-202510100815.0":"2025-10-10T08:16:49.985Z","2.22.1-b1021e3-202510100835.0":"2025-10-10T08:37:32.017Z","2.22.1-6bec3e2-202510101003.0":"2025-10-10T10:05:36.246Z","2.22.1-6fff9bf-202510140813.0":"2025-10-14T08:15:18.474Z","2.22.1-6fff9bf-202510141216.0":"2025-10-14T12:18:05.085Z","2.22.1-6fff9bf-202510141225.0":"2025-10-14T12:26:46.070Z","2.22.1":"2025-10-14T12:36:02.953Z","2.22.2-abd054c-202510141239.0":"2025-10-14T12:40:49.872Z","2.22.2-abd054c-202510141258.0":"2025-10-14T13:00:08.243Z","2.22.2-9bc8ebc-202510161008.0":"2025-10-16T10:09:52.050Z","2.22.2-f5a397c-202510161035.0":"2025-10-16T10:37:18.081Z","2.22.2-f5a397c-202510161055.0":"2025-10-16T10:57:22.050Z","2.22.2-550189c-202510171024.0":"2025-10-17T10:25:55.677Z","2.22.2-9cfa66d-202510201315.0":"2025-10-20T13:17:41.928Z","2.22.2-9cfa66d-202510201318.0":"2025-10-20T13:20:30.521Z","2.22.2-e124181-202510201707.0":"2025-10-20T17:08:51.437Z","2.22.2-0ea75f5-202510210922.0":"2025-10-21T09:24:24.954Z","2.22.2-0ea75f5-202510211107.0":"2025-10-21T11:08:55.191Z","2.22.2-5e2d5e5-202510211225.0":"2025-10-21T12:27:18.433Z","2.22.2-889d875-202510211305.0":"2025-10-21T13:06:53.258Z","2.22.2-329adac-202510211417.0":"2025-10-21T14:19:04.563Z","2.22.2-1b13a0b-202510211518.0":"2025-10-21T15:20:01.488Z","2.22.2-1b13a0b-202510211539.0":"2025-10-21T15:40:44.637Z","2.22.2-1b13a0b-202510221045.0":"2025-10-22T10:47:06.945Z","2.22.2-1b13a0b-202510221122.0":"2025-10-22T11:23:59.924Z","2.22.2-0680b99-202510221548.0":"2025-10-22T15:50:21.612Z","2.22.2-0680b99-202510221648.0":"2025-10-22T16:50:14.798Z","2.22.2-0680b99-202510230818.0":"2025-10-23T08:20:08.852Z","2.22.2-b918914-202510230849.0":"2025-10-23T08:50:45.003Z","2.22.2-b918914-202510230905.0":"2025-10-23T09:06:56.760Z","2.22.2-b918914-202510230929.0":"2025-10-23T09:30:46.423Z","2.22.2-97e9b59-202510230935.0":"2025-10-23T09:37:26.501Z","2.22.2-97e9b59-202510230942.0":"2025-10-23T09:43:44.498Z","2.22.2-97e9b59-202510230946.0":"2025-10-23T09:47:47.050Z","2.23.0":"2025-10-23T10:29:31.347Z","2.23.1-a51f3ce-202510231046.0":"2025-10-23T10:48:15.548Z","2.23.1-8132588-202510241134.0":"2025-10-24T11:36:44.053Z","2.23.1-83b336a-202510241214.0":"2025-10-24T12:16:19.494Z","2.23.1-83b336a-202510270720.0":"2025-10-27T07:22:30.019Z","2.23.1-83b336a-202510271033.0":"2025-10-27T10:35:44.105Z","2.23.1-83b336a-202510271036.0":"2025-10-27T10:38:17.627Z","2.23.1":"2025-10-27T10:44:39.917Z","2.23.2-57029a6-202510271102.0":"2025-10-27T11:04:28.119Z","2.23.2-5ab091f-202510271150.0":"2025-10-27T11:52:10.474Z","2.23.2-5ab091f-202510271328.0":"2025-10-27T13:30:28.671Z","2.23.2-de93ca2-202510280701.0":"2025-10-28T07:03:21.352Z","2.23.2-ab86c13-202510280911.0":"2025-10-28T09:13:18.205Z","2.23.2-ab86c13-202510280930.0":"2025-10-28T09:32:20.733Z","2.23.2-b1993d9-202510281046.0":"2025-10-28T10:47:51.547Z","2.23.2-b1993d9-202510281105.0":"2025-10-28T11:06:51.720Z","2.23.2-3409cf0-202510281150.0":"2025-10-28T11:52:36.299Z","2.23.2-3409cf0-202510281644.0":"2025-10-28T16:46:18.993Z","2.23.2-d593989-202510281705.0":"2025-10-28T17:07:39.533Z","2.23.2-3bb09e5-202510291150.0":"2025-10-29T11:52:30.581Z","2.23.2-adfcf5f-202510291630.0":"2025-10-29T16:31:45.083Z","2.23.2-597c467-202510301354.0":"2025-10-30T13:55:50.849Z","2.23.2-597c467-202510301413.0":"2025-10-30T14:15:28.628Z","2.23.2-1a82d83-202510310952.0":"2025-10-31T09:54:31.379Z","2.23.2-22aed33-202510311502.0":"2025-10-31T15:04:08.189Z","2.23.2-22aed33-202510311600.0":"2025-10-31T16:02:26.765Z","2.23.2-a5b4e61-202511031442.0":"2025-11-03T14:43:47.911Z","2.23.2-b06203a-202511041039.0":"2025-11-04T10:41:42.509Z","2.23.2-786b4d9-202511041136.0":"2025-11-04T11:38:17.715Z","2.23.2-d09a022-202511051005.0":"2025-11-05T10:07:10.481Z","2.23.2-f2eb59e-202511051100.0":"2025-11-05T11:02:07.630Z","2.23.2-c049bff-202511051356.0":"2025-11-05T13:57:41.787Z","2.23.2-12fe7cd-202511051413.0":"2025-11-05T14:14:45.117Z","2.23.2-12fe7cd-202511051642.0":"2025-11-05T16:44:28.288Z","2.23.2-12fe7cd-202511051718.0":"2025-11-05T17:20:27.094Z","2.23.2-9d27c93-202511060920.0":"2025-11-06T09:22:58.778Z","2.23.2-c0322db-202511071508.0":"2025-11-07T15:09:39.418Z","2.23.2-5f6c3b6-202511100952.0":"2025-11-10T09:54:23.574Z","2.23.2-937c237-202511111033.0":"2025-11-11T10:35:01.592Z","2.23.2-4fed9f2-202511111634.0":"2025-11-11T16:35:54.762Z","2.23.2-f6a8857-202511121007.0":"2025-11-12T10:09:11.208Z","2.23.2-ad29e83-202511131630.0":"2025-11-13T16:32:08.564Z","2.23.2-2ffc036-202511141244.0":"2025-11-14T12:45:45.325Z","2.23.2-936ac49-202511141344.0":"2025-11-14T13:45:49.567Z","2.23.2-936ac49-202511170924.0":"2025-11-17T09:26:24.811Z","2.23.2-936ac49-202511170928.0":"2025-11-17T09:29:44.217Z","2.23.2-194045e-202511171102.0":"2025-11-17T11:04:24.129Z","2.23.2-2ec399c-202511171119.0":"2025-11-17T11:21:32.063Z","2.23.2-9e911c8-202511171412.0":"2025-11-17T14:14:21.712Z","2.23.2-9e911c8-202511180859.0":"2025-11-18T09:01:21.113Z","2.23.2-68b3f49-202511190846.0":"2025-11-19T08:48:04.442Z","2.23.2-68b3f49-202511191116.0":"2025-11-19T11:17:37.746Z","2.23.2-bf53442-202511200906.0":"2025-11-20T09:07:58.073Z","2.23.2-70c6207-202511200951.0":"2025-11-20T09:53:25.981Z","2.23.2-70c6207-202511201006.0":"2025-11-20T10:08:16.066Z","2.23.2-70c6207-202511201025.0":"2025-11-20T10:26:37.655Z","2.23.2-2392eff-202511201043.0":"2025-11-20T10:45:10.072Z","2.23.2-2392eff-202511201049.0":"2025-11-20T10:51:04.285Z","2.24.0":"2025-11-20T11:00:51.076Z","2.24.1-a7a93a2-202511201110.0":"2025-11-20T11:12:18.550Z","2.24.1-a7a93a2-202511201122.0":"2025-11-20T11:24:27.646Z","2.24.1-2910a11-202511201533.0":"2025-11-20T15:34:52.565Z","2.24.1-81dc1e1-202511201703.0":"2025-11-20T17:05:25.391Z","2.24.1-bf0357f-202511201749.0":"2025-11-20T17:50:51.291Z","2.24.1-6755d2c-202511211141.0":"2025-11-21T11:42:54.406Z","2.24.1-6755d2c-202511211433.0":"2025-11-21T14:34:46.945Z","2.24.1":"2025-11-21T14:39:01.513Z","2.24.2-375f5e6-202511211451.0":"2025-11-21T14:53:23.737Z","2.24.2-375f5e6-202511240929.0":"2025-11-24T09:30:46.984Z","2.24.2-375f5e6-202511240933.0":"2025-11-24T09:35:28.214Z","2.24.2-375f5e6-202511241301.0":"2025-11-24T13:03:27.952Z","2.24.2-375f5e6-202511241304.0":"2025-11-24T13:06:41.375Z","2.24.2-1aa2112-202511242053.0":"2025-11-24T20:55:08.025Z","2.24.2-c4ff5c6-202511261038.0":"2025-11-26T10:40:19.293Z","2.24.2-c4ff5c6-202511261056.0":"2025-11-26T10:58:02.652Z","2.24.2":"2025-11-26T11:06:47.012Z","2.24.3-e802dc8-202511261118.0":"2025-11-26T11:20:13.925Z","2.24.3-cdf4bb1-202511281326.0":"2025-11-28T13:28:31.134Z","2.24.4-d900534-202511281345.0":"2025-11-28T13:47:30.367Z","2.24.3":"2025-11-28T13:47:36.040Z","2.24.4-d900534-202511281400.0":"2025-11-28T14:02:06.609Z","2.24.4-69dfdfa-202511281459.0":"2025-11-28T15:00:49.964Z","2.24.4-69dfdfa-202511281509.0":"2025-11-28T15:10:45.207Z","2.24.4-7e40d9c-202512011015.0":"2025-12-01T10:16:58.265Z","2.24.4-7e40d9c-202512011121.0":"2025-12-01T11:23:24.499Z","2.24.4":"2025-12-01T11:31:01.997Z","2.24.5-6c377f5-202512011144.0":"2025-12-01T11:45:42.030Z","2.24.5-a78f696-202512021002.0":"2025-12-02T10:03:45.482Z","2.24.5-a78f696-202512021006.0":"2025-12-02T10:07:56.172Z","2.24.5-a78f696-202512021008.0":"2025-12-02T10:10:08.535Z","2.24.5-a78f696-202512021108.0":"2025-12-02T11:10:03.114Z","2.24.5-a78f696-202512021111.0":"2025-12-02T11:12:47.659Z","2.24.5-a78f696-202512021115.0":"2025-12-02T11:17:28.423Z","2.24.5-74672f6-202512021546.0":"2025-12-02T15:48:26.082Z","2.24.5-fb58b06-202512021933.0":"2025-12-02T19:35:15.386Z","2.24.5-fb58b06-202512031034.0":"2025-12-03T10:36:29.508Z","2.24.5-fb58b06-202512031037.0":"2025-12-03T10:38:46.879Z","2.24.5-62f4345-202512031146.0":"2025-12-03T11:47:46.417Z","2.24.5-39390b9-202512031428.0":"2025-12-03T14:30:32.088Z","2.24.5-39390b9-202512041112.0":"2025-12-04T11:13:38.257Z","2.24.5-e2635c2-202512041355.0":"2025-12-04T13:57:35.541Z","2.24.5-e2635c2-202512041359.0":"2025-12-04T14:00:39.210Z","2.24.5-905d07b-202512041554.0":"2025-12-04T15:56:02.309Z","2.24.5-b3f80ca-202512041751.0":"2025-12-04T17:53:09.798Z","2.24.5-d11e22f-202512051025.0":"2025-12-05T10:27:22.427Z","2.24.5-d51c8a8-202512051102.0":"2025-12-05T11:04:23.802Z","2.24.5-6825599-202512080753.0":"2025-12-08T07:55:22.082Z","2.24.5-04d9032-202512080956.0":"2025-12-08T09:57:47.527Z","2.24.5-04d9032-202512081031.0":"2025-12-08T10:32:48.081Z","2.24.5-04d9032-202512081150.0":"2025-12-08T11:52:10.831Z","2.24.5-04d9032-202512081220.0":"2025-12-08T12:21:56.501Z","2.24.5-04d9032-202512081223.0":"2025-12-08T12:25:33.144Z","2.24.5-04d9032-202512081421.0":"2025-12-08T14:22:54.867Z","2.24.5-04d9032-202512081423.0":"2025-12-08T14:24:50.847Z","2.24.5-4fdbb14-202512082048.0":"2025-12-08T20:50:10.657Z","2.24.5-4fdbb14-202512082050.0":"2025-12-08T20:52:10.328Z","2.24.5-a12070c-202512091016.0":"2025-12-09T10:17:39.469Z","2.24.5-a12070c-202512091030.0":"2025-12-09T10:31:48.346Z","2.24.5-a12070c-202512091137.0":"2025-12-09T11:39:10.969Z","2.24.5-a12070c-202512091139.0":"2025-12-09T11:41:38.544Z","2.24.5":"2025-12-09T11:47:49.951Z","2.24.6-6c1d813-202512091449.0":"2025-12-09T14:51:11.227Z","2.24.6-6c1d813-202512091641.0":"2025-12-09T16:43:35.497Z","2.24.6-6c1d813-202512091721.0":"2025-12-09T17:23:06.237Z","2.24.6-6c1d813-202512091729.0":"2025-12-09T17:30:50.269Z","2.24.6-f69e838-202512101035.0":"2025-12-10T10:37:04.002Z","2.24.6-b7bcd6a-202512101123.0":"2025-12-10T11:24:42.958Z","2.24.6-cd0ae48-202512101205.0":"2025-12-10T12:06:47.127Z","2.24.6-cd0ae48-202512101558.0":"2025-12-10T16:00:26.735Z","2.24.6-8a2b596-202512111643.0":"2025-12-11T16:45:18.070Z","2.24.6-3646f53-202512150753.0":"2025-12-15T07:54:56.277Z","2.24.6-3646f53-202512151055.0":"2025-12-15T10:57:32.424Z","2.24.6-36a21d0-202512151255.0":"2025-12-15T12:57:33.463Z","2.24.6-36a21d0-202512151308.0":"2025-12-15T13:10:10.922Z","2.24.6-b359044-202512151613.0":"2025-12-15T16:15:09.284Z","2.24.6-b359044-202512160906.0":"2025-12-16T09:08:18.834Z","2.24.6-687c618-202512161040.0":"2025-12-16T10:41:54.858Z","2.24.6-687c618-202512161055.0":"2025-12-16T10:56:47.603Z","2.24.6-e5ead6f-202512171123.0":"2025-12-17T11:25:39.267Z","2.24.6-afbe42e-202512171144.0":"2025-12-17T11:46:01.126Z","2.24.6-a3674bd-202512171204.0":"2025-12-17T12:06:02.966Z","2.24.6-a5c94aa-202512180935.0":"2025-12-18T09:36:35.104Z","2.24.6-08a6c63-202512180936.0":"2025-12-18T09:38:28.689Z","2.24.6-0ba1917-202512180944.0":"2025-12-18T09:46:36.301Z","2.24.6-0ba1917-202512180959.0":"2025-12-18T10:01:24.287Z","2.24.6-0ba1917-202512181008.0":"2025-12-18T10:09:58.612Z","2.24.6-0ba1917-202512181016.0":"2025-12-18T10:17:46.350Z","2.24.6-0ba1917-202512181035.0":"2025-12-18T10:37:39.392Z","2.24.6-0ba1917-202512181052.0":"2025-12-18T10:54:26.754Z","2.24.6-0ba1917-202512181054.0":"2025-12-18T10:56:19.805Z","2.24.6-0ba1917-202512181101.0":"2025-12-18T11:03:32.334Z","2.25.0":"2025-12-18T11:10:24.678Z","2.25.1-428ed67-202512182130.0":"2025-12-18T21:31:49.425Z","2.25.1-428ed67-202512191114.0":"2025-12-19T11:16:21.984Z","2.25.1-428ed67-202512220913.0":"2025-12-22T09:14:51.025Z","2.25.1-428ed67-202512221601.0":"2025-12-22T16:03:05.156Z","2.25.1-428ed67-202512221836.0":"2025-12-22T18:38:20.952Z","2.25.1-3ffd5c2-202512231017.0":"2025-12-23T10:18:59.047Z","2.25.1-3ffd5c2-202512231019.0":"2025-12-23T10:20:53.605Z","2.25.1-0a77892-202512291157.0":"2025-12-29T11:59:33.786Z","2.25.1-81d2f84-202512291249.0":"2025-12-29T12:51:39.029Z","2.25.1-8e6d4dc-202512291548.0":"2025-12-29T15:50:30.961Z","2.25.1-5d6c972-202512291644.0":"2025-12-29T16:46:29.581Z","2.25.1-5d6c972-202512301454.0":"2025-12-30T14:56:30.219Z","2.25.1-5d6c972-202512301717.0":"2025-12-30T17:18:52.295Z","2.25.1-5d6c972-202512301832.0":"2025-12-30T18:34:26.366Z","2.25.1-c60ca80-202601011950.0":"2026-01-01T19:51:58.441Z","2.25.1-c60ca80-202601050932.0":"2026-01-05T09:33:58.057Z","2.25.1-c60ca80-202601051112.0":"2026-01-05T11:13:41.430Z","2.25.1-c60ca80-202601051115.0":"2026-01-05T11:17:02.411Z","2.25.1-c60ca80-202601051157.0":"2026-01-05T11:58:43.102Z","2.25.1-c60ca80-202601051213.0":"2026-01-05T12:15:34.719Z","2.25.1-c60ca80-202601051312.0":"2026-01-05T13:14:07.981Z","2.25.1-4f67f68-202601061000.0":"2026-01-06T10:02:32.370Z","2.25.1-01cfe8a-202601080945.0":"2026-01-08T09:47:00.980Z","2.25.1-bff39e1-202601091534.0":"2026-01-09T15:36:32.931Z","2.25.1-bff39e1-202601120756.0":"2026-01-12T07:58:00.677Z","2.25.1-bff39e1-202601121521.0":"2026-01-12T15:23:17.731Z","2.25.1-bff39e1-202601121526.0":"2026-01-12T15:28:36.574Z","2.25.1-e3d6d74-202601121707.0":"2026-01-12T17:09:20.229Z","2.25.1-4f7f7dd-202601130749.0":"2026-01-13T07:51:01.435Z","2.25.1-4f7f7dd-202601130751.0":"2026-01-13T07:53:09.928Z","2.25.1-6fcab5c-202601131631.0":"2026-01-13T16:33:08.792Z","2.25.1-d280b78-202601141007.0":"2026-01-14T10:09:00.958Z","2.25.1-d280b78-202601141112.0":"2026-01-14T11:14:23.662Z","2.25.1-043f2cb-202601141127.0":"2026-01-14T11:28:58.948Z","2.25.1-4c50142-202601141132.0":"2026-01-14T11:34:04.931Z","2.25.1-4c50142-202601141147.0":"2026-01-14T11:49:18.989Z","2.25.1-4c50142-202601141233.0":"2026-01-14T12:34:43.306Z","2.25.1-1dd3e4c-202601141445.0":"2026-01-14T14:46:50.023Z","2.25.1-7081520-202601141500.0":"2026-01-14T15:01:47.381Z","2.25.1-7081520-202601141505.0":"2026-01-14T15:07:35.634Z","2.25.1-7081520-202601141515.0":"2026-01-14T15:17:12.642Z","2.25.1-df4206a-202601141537.0":"2026-01-14T15:39:27.555Z","2.25.1-df4206a-202601141540.0":"2026-01-14T15:42:36.924Z","2.25.1-1cbeb2f-202601141651.0":"2026-01-14T16:53:09.915Z","2.25.1-ff69e98-202601141725.0":"2026-01-14T17:26:42.432Z","2.25.1-3791bd7-202601141821.0":"2026-01-14T18:23:09.624Z","2.25.1-1a6fbba-202601142023.0":"2026-01-14T20:24:51.200Z","2.25.1-1a6fbba-202601150953.0":"2026-01-15T09:55:30.379Z","2.25.1-ab0c06c-202601151041.0":"2026-01-15T10:43:00.274Z","2.25.1-ab0c06c-202601151045.0":"2026-01-15T10:46:43.594Z","2.25.1-ab0c06c-202601151055.0":"2026-01-15T10:57:06.159Z","2.26.0":"2026-01-15T11:06:12.145Z","2.26.1-877555b-202601151119.0":"2026-01-15T11:21:07.378Z","2.26.1-6b2a871-202601151631.0":"2026-01-15T16:33:07.635Z","2.26.1-6b2a871-202601190656.0":"2026-01-19T06:57:51.861Z","2.26.1-6b2a871-202601191435.0":"2026-01-19T14:37:09.657Z","2.26.1-6b2a871-202601191446.0":"2026-01-19T14:48:16.032Z","2.26.1-6b2a871-202601191600.0":"2026-01-19T16:02:37.210Z","2.26.1-6b2a871-202601192006.0":"2026-01-19T20:08:16.544Z","2.26.1-f3a4212-202601200805.0":"2026-01-20T08:07:19.894Z","2.26.1-f3a4212-202601221341.0":"2026-01-22T13:42:38.741Z","2.26.1-786a993-202601221510.0":"2026-01-22T15:12:07.469Z","2.26.1-a0bfa33-202601230818.0":"2026-01-23T08:19:37.809Z","2.26.1-a0bfa33-202601230834.0":"2026-01-23T08:35:48.114Z","2.26.1-debae34-202601231611.0":"2026-01-23T16:13:00.203Z","2.26.1-b1cff0e-202601231820.0":"2026-01-23T18:22:21.198Z","2.26.1-b1cff0e-202601231835.0":"2026-01-23T18:37:21.757Z","2.26.1-b1cff0e-202601241143.0":"2026-01-24T11:44:59.579Z","2.26.1-b1cff0e-202601260754.0":"2026-01-26T07:56:00.938Z","2.26.1-b1cff0e-202601261100.0":"2026-01-26T11:01:58.483Z","2.26.1-b1cff0e-202601261104.0":"2026-01-26T11:06:39.318Z","2.26.1-b1cff0e-202601261119.0":"2026-01-26T11:21:16.143Z","2.26.1-b1cff0e-202601261137.0":"2026-01-26T11:39:26.914Z","2.26.1-b1cff0e-202601261147.0":"2026-01-26T11:49:01.584Z","2.26.1-db66821-202601261159.0":"2026-01-26T12:01:18.680Z","2.26.1-db66821-202601261323.0":"2026-01-26T13:24:37.982Z","2.26.1-db66821-202601261325.0":"2026-01-26T13:26:40.763Z","2.26.1-e851323-202601261528.0":"2026-01-26T15:30:30.329Z","2.26.1-e851323-202601261538.0":"2026-01-26T15:40:29.511Z","2.26.1-e851323-202601261613.0":"2026-01-26T16:14:45.244Z","2.26.1-e851323-202601261623.0":"2026-01-26T16:24:40.863Z","2.26.1-e851323-202601261629.0":"2026-01-26T16:31:09.245Z","2.26.1-e851323-202601261641.0":"2026-01-26T16:43:18.090Z","2.26.1-f115459-202601270830.0":"2026-01-27T08:31:41.508Z","2.26.1-f115459-202601271126.0":"2026-01-27T11:28:16.991Z","2.26.1-f115459-202601271206.0":"2026-01-27T12:08:35.391Z","2.26.1-f115459-202601271500.0":"2026-01-27T15:01:59.921Z","2.26.1-f115459-202601271510.0":"2026-01-27T15:12:53.481Z","2.26.1":"2026-01-27T15:53:10.687Z","2.26.2-c3fd0c6-202601271628.0":"2026-01-27T16:29:52.415Z","2.26.2-c3fd0c6-202601271715.0":"2026-01-27T17:17:19.800Z","2.26.2-4354050-202601280950.0":"2026-01-28T09:52:35.191Z","2.26.2-3018a61-202601280958.0":"2026-01-28T09:59:55.073Z","2.26.2-4bef29b-202601281431.0":"2026-01-28T14:33:17.359Z","2.26.2-4bef29b-202601282126.0":"2026-01-28T21:27:45.955Z","2.26.2-1fbb1cc-202601291307.0":"2026-01-29T13:09:16.180Z","2.26.2-2ea0263-202601301052.0":"2026-01-30T10:54:27.607Z","2.26.2-7b033e1-202601301121.0":"2026-01-30T11:23:39.749Z","2.26.2-7b033e1-202601301151.0":"2026-01-30T11:53:21.960Z","2.26.2-7b033e1-202601301155.0":"2026-01-30T11:57:06.715Z","2.26.2-6cf8629-202601301225.0":"2026-01-30T12:26:54.082Z","2.26.2-d333c23-202601301422.0":"2026-01-30T14:24:41.660Z","2.26.2-4164996-202601301714.0":"2026-01-30T17:16:03.797Z","2.26.2-c5410a0-202601301742.0":"2026-01-30T17:44:18.803Z","2.26.2-baa804d-202602021408.0":"2026-02-02T14:10:02.624Z","2.26.2-baa804d-202602021410.0":"2026-02-02T14:12:17.501Z","2.26.2-e25beb5-202602031029.0":"2026-02-03T10:31:37.455Z","2.26.2":"2026-02-03T10:36:43.938Z","2.26.3-9b9c17a-202602031049.0":"2026-02-03T10:51:21.466Z","2.26.3-9b9c17a-202602031102.0":"2026-02-03T11:04:20.669Z","2.26.3-3adbd93-202602031138.0":"2026-02-03T11:39:51.479Z","2.26.3-3adbd93-202602031412.0":"2026-02-03T14:14:20.344Z","2.26.3-67afc3b-202602041709.0":"2026-02-04T17:11:01.171Z","2.26.3-0612860-202602050945.0":"2026-02-05T09:47:48.610Z","2.26.3-b467299-202602051213.0":"2026-02-05T12:14:57.254Z","2.26.3-b467299-202602051226.0":"2026-02-05T12:28:29.025Z","2.26.3-5b664d8-202602051242.0":"2026-02-05T12:44:12.801Z","2.26.3-7ed08a3-202602051507.0":"2026-02-05T15:09:24.752Z","2.26.3-7ed08a3-202602051519.0":"2026-02-05T15:21:36.591Z","2.26.3-4341675-202602051559.0":"2026-02-05T16:01:20.068Z","2.26.3-49957b6-202602061416.0":"2026-02-06T14:18:42.967Z","2.26.3-e788779-202602061843.0":"2026-02-06T18:45:24.742Z","2.26.3-e788779-202602090640.0":"2026-02-09T06:42:23.130Z","2.26.3-c5d47e2-202602090933.0":"2026-02-09T09:34:53.103Z","2.26.3-cd8d1ab-202602091205.0":"2026-02-09T12:07:32.780Z","2.26.3-3f36079-202602091809.0":"2026-02-09T18:11:02.818Z","2.26.3-a4afe51-202602091816.0":"2026-02-09T18:18:24.529Z","2.26.3-a4afe51-202602100626.0":"2026-02-10T06:28:40.060Z","2.26.3-b9f128f-202602100657.0":"2026-02-10T06:59:10.077Z","2.26.3-b9f128f-202602100659.0":"2026-02-10T07:01:06.107Z","2.26.3-c909cfa-202602100950.0":"2026-02-10T09:51:42.091Z","2.26.3-caa8232-202602101019.0":"2026-02-10T10:21:26.185Z","2.26.3-ba2ffcc-202602101120.0":"2026-02-10T11:22:01.130Z","2.26.3-d45bbf7-202602101413.0":"2026-02-10T14:14:45.918Z","2.26.3-6f2187f-202602101518.0":"2026-02-10T15:20:31.991Z","2.26.3-6f2187f-202602101633.0":"2026-02-10T16:35:01.286Z","2.26.3-6f2187f-202602101646.0":"2026-02-10T16:48:26.165Z","2.26.3-6f2187f-202602101653.0":"2026-02-10T16:55:19.179Z","2.26.3-6f2187f-202602111004.0":"2026-02-11T10:05:51.983Z","2.26.3-5965cc9-202602111039.0":"2026-02-11T10:41:37.701Z","2.26.3-a4e7894-202602111405.0":"2026-02-11T14:07:34.371Z","2.26.3-a4e7894-202602121013.0":"2026-02-12T10:15:22.140Z","2.26.3-ec858ae-202602121028.0":"2026-02-12T10:29:56.264Z","2.26.3-ec858ae-202602121036.0":"2026-02-12T10:37:43.142Z","2.26.3-3caaf56-202602121050.0":"2026-02-12T10:52:23.671Z","2.26.3-3caaf56-202602121100.0":"2026-02-12T11:01:52.077Z","2.26.3-3caaf56-202602121105.0":"2026-02-12T11:07:11.612Z","2.26.3-3caaf56-202602121115.0":"2026-02-12T11:16:43.243Z","2.26.3-864dab1-202602121119.0":"2026-02-12T11:21:54.334Z","2.27.0":"2026-02-12T11:26:55.360Z","2.27.1-0d338c1-202602121125.0":"2026-02-12T11:26:59.460Z","2.27.1-0d338c1-202602121141.0":"2026-02-12T11:42:48.240Z","2.27.1-e93f39f-202602121338.0":"2026-02-12T13:40:25.222Z","2.27.1-4b418dc-202602121530.0":"2026-02-12T15:32:39.628Z","2.27.1-79c9fd9-202602131509.0":"2026-02-13T15:10:54.758Z","2.27.1-7989b5e-202602160658.0":"2026-02-16T07:00:03.765Z","2.27.1-7989b5e-202602160706.0":"2026-02-16T07:08:30.409Z","2.27.1-7989b5e-202602161111.0":"2026-02-16T11:12:45.133Z","2.27.1-7989b5e-202602161135.0":"2026-02-16T11:36:57.641Z","2.27.1-7989b5e-202602161148.0":"2026-02-16T11:50:31.823Z","2.27.1-392a993-202602161154.0":"2026-02-16T11:56:07.649Z","2.27.1-392a993-202602161156.0":"2026-02-16T11:58:24.243Z","2.27.1-392a993-202602161201.0":"2026-02-16T12:02:46.815Z","2.27.1-392a993-202602161206.0":"2026-02-16T12:08:10.719Z","2.27.1-392a993-202602161322.0":"2026-02-16T13:24:00.725Z","2.27.1-392a993-202602161456.0":"2026-02-16T14:57:51.033Z","2.27.1-4949d70-202602181301.0":"2026-02-18T13:03:37.291Z","2.27.1-a3417f3-202602181504.0":"2026-02-18T15:06:07.539Z","2.27.1-ec96996-202602181543.0":"2026-02-18T15:45:15.821Z","2.27.1-ec96996-202602181558.0":"2026-02-18T16:00:50.188Z","2.27.1-ec96996-202602190706.0":"2026-02-19T07:08:12.251Z","2.27.1-ec96996-202602190735.0":"2026-02-19T07:37:13.906Z","2.27.1-ec96996-202602190925.0":"2026-02-19T09:27:26.662Z","2.27.1-ec96996-202602190931.0":"2026-02-19T09:33:36.703Z","2.27.1-ec96996-202602190935.0":"2026-02-19T09:37:04.754Z","2.27.1-ec96996-202602190937.0":"2026-02-19T09:39:21.762Z","2.27.1-6a2bf39-202602191028.0":"2026-02-19T10:30:01.784Z","2.27.1-93ad7ee-202602201550.0":"2026-02-20T15:52:23.798Z","2.27.1-dd54f52-202602251838.0":"2026-02-25T18:40:41.863Z","2.27.1-dd54f52-202602261119.0":"2026-02-26T11:21:08.519Z","2.27.1-512ec7a-202602261648.0":"2026-02-26T16:50:24.140Z","2.27.1-512ec7a-202602261702.0":"2026-02-26T17:04:37.092Z","2.27.1-512ec7a-202602261710.0":"2026-02-26T17:12:08.941Z","2.27.1-512ec7a-202602261712.0":"2026-02-26T17:14:36.524Z","2.27.1-512ec7a-202602261715.0":"2026-02-26T17:17:48.249Z","2.27.1-512ec7a-202602261718.0":"2026-02-26T17:20:16.029Z","2.27.1-512ec7a-202602261724.0":"2026-02-26T17:26:33.729Z","2.27.1-512ec7a-202602270832.0":"2026-02-27T08:34:28.422Z","2.27.1-512ec7a-202602270836.0":"2026-02-27T08:38:27.732Z","2.27.1-512ec7a-202602270839.0":"2026-02-27T08:40:57.563Z","2.27.1-512ec7a-202602270842.0":"2026-02-27T08:44:07.759Z","2.27.1-be1b2ab-202602270918.0":"2026-02-27T09:22:27.965Z","2.27.1-5b6b2c9-202602270935.0":"2026-02-27T09:37:30.889Z","2.27.1-89bd194-202602271006.0":"2026-02-27T10:08:12.166Z","2.27.1-89bd194-202602271044.0":"2026-02-27T10:45:50.551Z","2.27.1":"2026-02-27T10:56:09.355Z","2.27.2-28bdb44-202602271106.0":"2026-02-27T11:07:42.616Z","2.27.2-37d3bda-202602271657.0":"2026-02-27T16:59:28.687Z","2.27.2-37d3bda-202603020624.0":"2026-03-02T06:25:52.056Z","2.27.2-37d3bda-202603021321.0":"2026-03-02T13:23:41.028Z","2.27.2-37d3bda-202603021329.0":"2026-03-02T13:31:26.864Z","2.27.2-37d3bda-202603021333.0":"2026-03-02T13:35:11.815Z","2.27.2-37d3bda-202603021344.0":"2026-03-02T13:46:19.893Z","2.27.2-37d3bda-202603021347.0":"2026-03-02T13:48:56.156Z","2.27.2-37d3bda-202603021605.0":"2026-03-02T16:06:52.996Z","2.27.2-85e3a09-202603031220.0":"2026-03-03T12:22:43.805Z","2.27.2-85e3a09-202603031410.0":"2026-03-03T14:12:09.635Z","2.27.2-d958009-202603031429.0":"2026-03-03T14:30:50.571Z","2.27.2-80b80f7-202603040927.0":"2026-03-04T09:29:10.677Z","2.27.2-f279512-202603041230.0":"2026-03-04T12:31:52.448Z","2.27.2-262a406-202603042036.0":"2026-03-04T20:38:54.683Z","2.27.2-d66318c-202603050811.0":"2026-03-05T08:13:38.219Z","2.27.2-5a6825f-202603051104.0":"2026-03-05T11:05:50.919Z","2.27.2-43dfb76-202603051351.0":"2026-03-05T13:53:18.238Z","2.27.2-acf04b8-202603051559.0":"2026-03-05T16:00:48.403Z","2.27.2-5ab6e21-202603051745.0":"2026-03-05T17:47:53.139Z","2.27.2-5ab6e21-202603051807.0":"2026-03-05T18:09:26.748Z","2.27.2-5ab6e21-202603051812.0":"2026-03-05T18:13:45.895Z","2.27.2-5ab6e21-202603052157.0":"2026-03-05T21:59:06.745Z","2.27.2-83bcae4-202603052200.0":"2026-03-05T22:02:07.565Z","2.27.2-83bcae4-202603052209.0":"2026-03-05T22:11:39.505Z","2.27.2-83bcae4-202603052215.0":"2026-03-05T22:17:11.351Z","2.27.2-177fc53-202603060629.0":"2026-03-06T06:31:33.142Z","2.27.2-177fc53-202603060631.0":"2026-03-06T06:33:37.474Z","2.27.2-9216c01-202603060925.0":"2026-03-06T09:27:15.292Z","2.27.2-9216c01-202603060939.0":"2026-03-06T09:40:40.603Z","2.27.2-9216c01-202603061036.0":"2026-03-06T10:37:51.339Z","2.27.2-c8dedce-202603061540.0":"2026-03-06T15:42:23.241Z","2.27.2-c8dedce-202603091032.0":"2026-03-09T10:34:11.814Z","2.27.2-c8dedce-202603091140.0":"2026-03-09T11:41:58.905Z","2.27.2-c8dedce-202603091146.0":"2026-03-09T11:48:04.949Z","2.27.2-c8dedce-202603091154.0":"2026-03-09T11:56:39.635Z","2.27.2-c8dedce-202603091205.0":"2026-03-09T12:06:56.607Z","2.27.2-c8dedce-202603091214.0":"2026-03-09T12:16:23.383Z","2.27.2-c8dedce-202603091218.0":"2026-03-09T12:19:52.094Z","2.27.2-c8dedce-202603091300.0":"2026-03-09T13:02:28.358Z","2.27.2-c8dedce-202603091311.0":"2026-03-09T13:13:23.288Z","2.27.2-fcfbdcc-202603101033.0":"2026-03-10T10:35:11.518Z","2.27.2-784ded5-202603101128.0":"2026-03-10T11:29:44.999Z","2.27.2-6508364-202603101148.0":"2026-03-10T11:50:17.088Z","2.27.2-acf3666-202603101542.0":"2026-03-10T15:44:39.709Z","2.27.2-acf3666-202603101805.0":"2026-03-10T18:07:04.894Z","2.27.2-acf3666-202603110645.0":"2026-03-11T06:46:52.318Z","2.27.2-b0b5cdb-202603110925.0":"2026-03-11T09:27:30.872Z","2.27.2-b0b5cdb-202603110929.0":"2026-03-11T09:31:19.524Z","2.27.2-b0b5cdb-202603110945.0":"2026-03-11T09:47:31.357Z","2.27.2-28b9c33-202603111049.0":"2026-03-11T10:51:15.664Z","2.27.2-01b0ac2-202603111141.0":"2026-03-11T11:43:31.221Z","2.27.2-fd66ea6-202603111535.0":"2026-03-11T15:37:24.600Z","2.27.2-b8b483e-202603120959.0":"2026-03-12T10:01:23.881Z","2.27.2-b8b483e-202603121029.0":"2026-03-12T10:31:06.186Z","2.28.0":"2026-03-12T10:43:27.420Z","2.28.1-f8a4655-202603121056.0":"2026-03-12T10:58:07.132Z","2.28.1-f8a4655-202603121627.0":"2026-03-12T16:29:18.096Z","2.28.1-f8a4655-202603131026.0":"2026-03-13T10:28:14.019Z","2.28.1-f8a4655-202603131028.0":"2026-03-13T10:30:30.604Z","2.28.1-1627d9d-202603131335.0":"2026-03-13T13:37:15.084Z","2.28.1-1627d9d-202603131342.0":"2026-03-13T13:44:07.243Z","2.28.1-1627d9d-202603131350.0":"2026-03-13T13:52:31.166Z","2.28.1-1627d9d-202603131355.0":"2026-03-13T13:57:07.896Z","2.28.1-1627d9d-202603131553.0":"2026-03-13T15:55:32.947Z","2.28.1-3c3b2fc-202603131602.0":"2026-03-13T16:03:47.385Z","2.28.1-263cbca-202603141959.0":"2026-03-14T20:01:31.116Z","2.28.1-dca5302-202603170935.0":"2026-03-17T09:37:11.982Z","2.28.1-afe6a74-202603171047.0":"2026-03-17T10:49:09.814Z","2.28.1-e7f08d6-202603171355.0":"2026-03-17T13:57:24.566Z","2.28.1-8ba182d-202603171515.0":"2026-03-17T15:17:04.311Z","2.28.1-35df20a-202603171534.0":"2026-03-17T15:36:21.905Z","2.28.1-2f51062-202603181137.0":"2026-03-18T11:38:47.039Z","2.28.1-b8758ac-202603181556.0":"2026-03-18T15:58:42.412Z","2.28.1-1a05eda-202603181618.0":"2026-03-18T16:20:07.130Z","2.28.1-f4ecf2f-202603190924.0":"2026-03-19T09:26:33.512Z","2.28.1-4766cca-202603191743.0":"2026-03-19T17:45:00.890Z","2.28.1-7823186-202603200944.0":"2026-03-20T09:46:21.419Z","2.28.1-27cb9b9-202603201421.0":"2026-03-20T14:22:45.685Z","2.28.1-ae02fe1-202603201630.0":"2026-03-20T16:32:42.005Z","2.28.1-5ff8364-202603231021.0":"2026-03-23T10:23:12.397Z","2.28.1-5ff8364-202603231024.0":"2026-03-23T10:26:37.933Z","2.28.1-5ff8364-202603231029.0":"2026-03-23T10:31:11.419Z","2.28.1-5ff8364-202603231035.0":"2026-03-23T10:37:24.056Z","2.28.1-40c9b63-202603231122.0":"2026-03-23T11:23:58.436Z","2.28.1-e5c0b09-202603231153.0":"2026-03-23T11:55:18.210Z","2.28.1-cbe1fea-202603241525.0":"2026-03-24T15:27:21.517Z","2.28.1-cbe1fea-202603241532.0":"2026-03-24T15:33:43.902Z","2.28.1-9e8c0fc-202603241634.0":"2026-03-24T16:36:23.268Z","2.28.1-9e8c0fc-202603250938.0":"2026-03-25T09:39:52.773Z","2.28.1-9e8c0fc-202603250946.0":"2026-03-25T09:48:31.123Z","2.28.1-9e8c0fc-202603250949.0":"2026-03-25T09:50:36.795Z","2.28.1-9e8c0fc-202603251425.0":"2026-03-25T14:27:25.987Z","2.28.1-9e8c0fc-202603251429.0":"2026-03-25T14:30:49.931Z","2.28.2-1b61939-202603251548.0":"2026-03-25T15:50:45.615Z","2.28.1":"2026-03-25T16:15:20.863Z","2.28.2-b14a552-202603251642.0":"2026-03-25T16:44:03.860Z","2.28.2-b14a552-202603251658.0":"2026-03-25T17:00:16.302Z","2.28.2-039de9a-202603260945.0":"2026-03-26T09:47:34.622Z","2.28.2-039de9a-202603261051.0":"2026-03-26T10:53:35.554Z","2.28.2-039de9a-202603261100.0":"2026-03-26T11:01:49.270Z","2.28.2-872d5df-202603261104.0":"2026-03-26T11:06:29.438Z","2.28.2-872d5df-202603261111.0":"2026-03-26T11:13:18.382Z","2.28.2-872d5df-202603261121.0":"2026-03-26T11:22:59.407Z","2.28.2-872d5df-202603261201.0":"2026-03-26T12:02:36.935Z","2.28.2-872d5df-202603261258.0":"2026-03-26T13:00:13.767Z","2.28.2-872d5df-202603261300.0":"2026-03-26T13:02:38.183Z","2.28.2-872d5df-202603261303.0":"2026-03-26T13:04:52.221Z","2.28.2-2dd64ae-202603271430.0":"2026-03-27T14:32:36.469Z","2.28.2-9276ea3-202603271539.0":"2026-03-27T15:41:41.689Z","2.28.2-23305c1-202603271739.0":"2026-03-27T17:41:29.541Z","2.28.2-5e6557e-202603280932.0":"2026-03-28T09:33:58.426Z","2.28.2-5636fb4-202603281111.0":"2026-03-28T11:13:28.589Z","2.28.2-268112c-202603300839.0":"2026-03-30T08:41:12.350Z","2.28.2-268112c-202603300841.0":"2026-03-30T08:43:27.936Z","2.28.2-268112c-202603300843.0":"2026-03-30T08:45:36.087Z","2.28.2-268112c-202603300856.0":"2026-03-30T08:57:53.036Z","2.28.2-07d9e5e-202603300918.0":"2026-03-30T09:20:04.365Z","2.28.2-a9a2c86-202603301047.0":"2026-03-30T10:49:11.167Z","2.28.2-b9d9992-202603311140.0":"2026-03-31T11:42:10.700Z","2.28.2-849757a-202603311319.0":"2026-03-31T13:21:31.666Z","2.28.2-849757a-202603311326.0":"2026-03-31T13:28:34.872Z","2.28.2-849757a-202603311335.0":"2026-03-31T13:37:20.008Z","2.28.2-849757a-202603311342.0":"2026-03-31T13:43:43.453Z","2.28.2-849757a-202603311351.0":"2026-03-31T13:52:51.652Z","2.28.2-e5ae31f-202603311454.0":"2026-03-31T14:56:23.146Z","2.28.2-6f3fef9-202603311513.0":"2026-03-31T15:15:02.160Z","2.28.2-6077f84-202604010818.0":"2026-04-01T08:20:44.737Z","2.28.2-c8c9ce5-202604010903.0":"2026-04-01T09:05:24.651Z","2.28.2-c8c9ce5-202604010907.0":"2026-04-01T09:09:03.549Z","2.28.2-cea41b4-202604011153.0":"2026-04-01T11:55:26.893Z","2.28.2-f4a24b0-202604011259.0":"2026-04-01T13:01:29.870Z","2.28.2-4b52948-202604011328.0":"2026-04-01T13:30:35.813Z","2.28.2-4b52948-202604011339.0":"2026-04-01T13:40:44.983Z","2.28.2-d2df691-202604020854.0":"2026-04-02T08:56:22.611Z","2.28.2-a30c57f-202604070826.0":"2026-04-07T08:28:32.416Z","2.28.2-2f4ad13-202604070944.0":"2026-04-07T09:46:00.187Z","2.28.2-62c9cf5-202604071230.0":"2026-04-07T12:32:34.808Z","2.28.2-bbf781b-202604071346.0":"2026-04-07T13:48:08.876Z","2.28.2-4d08436-202604071401.0":"2026-04-07T14:03:37.723Z","2.28.2-4d08436-202604071532.0":"2026-04-07T15:34:10.473Z","2.28.2-75a6fd8-202604071654.0":"2026-04-07T16:55:59.036Z","2.28.2-75a6fd8-202604080824.0":"2026-04-08T08:26:41.299Z","2.28.2-29826e5-202604080832.0":"2026-04-08T08:34:27.767Z","2.28.2-29826e5-202604080835.0":"2026-04-08T08:36:54.701Z","2.28.2-df3ee49-202604080913.0":"2026-04-08T09:15:23.567Z","2.28.2-df3ee49-202604081024.0":"2026-04-08T10:26:16.068Z","2.28.2-73d584f-202604081314.0":"2026-04-08T13:16:23.758Z","2.28.2-6f63430-202604081351.0":"2026-04-08T13:53:37.415Z","2.28.2-937ded6-202604081623.0":"2026-04-08T16:25:04.717Z","2.28.2-937ded6-202604081641.0":"2026-04-08T16:43:05.696Z","2.28.2-ce31d5a-202604081653.0":"2026-04-08T16:55:36.310Z","2.28.2-ce31d5a-202604081738.0":"2026-04-08T17:39:55.522Z","2.28.2-6d49bcb-202604081907.0":"2026-04-08T19:09:06.806Z","2.28.2-6d49bcb-202604090720.0":"2026-04-09T07:21:55.715Z","2.28.2-5c50206-202604090742.0":"2026-04-09T07:44:28.850Z","2.28.2-2dd3a7a-202604090838.0":"2026-04-09T08:40:34.638Z","2.28.2-fff41da-202604090844.0":"2026-04-09T08:46:18.655Z","2.28.2-fff41da-202604090910.0":"2026-04-09T09:12:14.114Z","2.28.2-fff41da-202604090914.0":"2026-04-09T09:16:25.251Z","2.28.2-46230b5-202604090933.0":"2026-04-09T09:35:18.263Z","2.29.0":"2026-04-09T09:45:57.559Z","2.29.1-2911d05-202604090957.0":"2026-04-09T09:59:32.048Z","2.29.1-8c0c195-202604091240.0":"2026-04-09T12:42:18.804Z","2.29.1-8c0c195-202604091357.0":"2026-04-09T13:58:44.114Z","2.29.1-8c0c195-202604091400.0":"2026-04-09T14:01:59.752Z","2.29.1":"2026-04-09T14:10:03.377Z","2.29.2-c543f32-202604101717.0":"2026-04-10T17:19:04.670Z","2.29.2-73b0745-202604130928.0":"2026-04-13T09:29:50.019Z","2.29.2-a8aff64-202604141100.0":"2026-04-14T11:02:05.986Z","2.29.2-531d622-202604141315.0":"2026-04-14T13:17:45.339Z","2.29.2-531d622-202604141343.0":"2026-04-14T13:45:03.852Z","2.29.2-c9047fd-202604141531.0":"2026-04-14T15:33:26.147Z","2.29.2-c9047fd-202604141540.0":"2026-04-14T15:41:50.583Z","2.29.2-c9047fd-202604150826.0":"2026-04-15T08:27:47.857Z","2.29.2-c9047fd-202604150901.0":"2026-04-15T09:02:47.070Z","2.29.2-c9047fd-202604150905.0":"2026-04-15T09:06:57.140Z","2.29.2-c9047fd-202604150940.0":"2026-04-15T09:42:12.972Z","2.29.2-c9047fd-202604150942.0":"2026-04-15T09:44:45.996Z","2.29.2-c9047fd-202604151048.0":"2026-04-15T10:49:52.993Z","2.29.2-c9047fd-202604151050.0":"2026-04-15T10:52:27.752Z","2.29.2-c9047fd-202604151423.0":"2026-04-15T14:25:22.175Z","2.29.2-c9047fd-202604151441.0":"2026-04-15T14:43:41.488Z","2.29.2-c9047fd-202604151516.0":"2026-04-15T15:18:28.807Z","2.29.2-c9047fd-202604151542.0":"2026-04-15T15:43:56.089Z","2.29.2-7fc8fdf-202604160855.0":"2026-04-16T08:57:28.020Z","2.29.2-7fc8fdf-202604160909.0":"2026-04-16T09:11:43.441Z","2.29.2-7fc8fdf-202604161027.0":"2026-04-16T10:29:07.812Z","2.29.2-7fc8fdf-202604161101.0":"2026-04-16T11:02:56.353Z","2.29.2-7fc8fdf-202604161427.0":"2026-04-16T14:28:48.420Z","2.29.2-7fc8fdf-202604161432.0":"2026-04-16T14:34:03.272Z","2.29.2-7fc8fdf-202604170832.0":"2026-04-17T08:34:09.025Z","2.29.2-7fc8fdf-202604170838.0":"2026-04-17T08:39:58.152Z","2.29.2-13940f1-202604170906.0":"2026-04-17T09:08:34.600Z","2.29.2-13940f1-202604170909.0":"2026-04-17T09:11:38.128Z","2.29.2-13940f1-202604170915.0":"2026-04-17T09:16:56.938Z","2.29.2-13940f1-202604170918.0":"2026-04-17T09:19:51.883Z","2.29.2-de4b678-202604170925.0":"2026-04-17T09:26:52.200Z","2.29.2-de4b678-202604170951.0":"2026-04-17T09:53:41.784Z","2.29.2-dedf07a-202604171015.0":"2026-04-17T10:17:19.179Z","2.29.2-a308e18-202604171336.0":"2026-04-17T13:38:07.081Z","2.29.2-2a014a3-202604171427.0":"2026-04-17T14:29:25.696Z","2.29.2-2a014a3-202604201135.0":"2026-04-20T11:37:40.506Z","2.29.2-e8217f9-202604201247.0":"2026-04-20T12:48:44.975Z","2.29.2-3e7a2d6-202604201334.0":"2026-04-20T13:35:52.152Z","2.29.2-3e7a2d6-202604201344.0":"2026-04-20T13:46:34.013Z","2.29.2-6ef753f-202604201608.0":"2026-04-20T16:10:03.279Z","2.29.2-6ef753f-202604201622.0":"2026-04-20T16:23:51.886Z","2.29.2-6ef753f-202604201624.0":"2026-04-20T16:26:28.728Z","2.29.2-6ef753f-202604201637.0":"2026-04-20T16:38:51.143Z","2.29.2-6ef753f-202604201947.0":"2026-04-20T19:48:58.291Z","2.29.2-6ef753f-202604210529.0":"2026-04-21T05:31:28.062Z","2.29.2-6ef753f-202604210532.0":"2026-04-21T05:34:10.726Z","2.29.2-4a0b173-202604211026.0":"2026-04-21T10:28:14.305Z","2.29.2-4a0b173-202604211105.0":"2026-04-21T11:06:43.887Z","2.29.2-5d011ef-202604221428.0":"2026-04-22T14:29:38.394Z","2.29.2-5d011ef-202604221637.0":"2026-04-22T16:39:12.893Z","2.29.2-2b3a0ec-202604221843.0":"2026-04-22T18:45:19.797Z","2.29.2-2b3a0ec-202604230517.0":"2026-04-23T05:19:36.590Z","2.29.2-6961d4a-202604241507.0":"2026-04-24T15:09:42.224Z","2.29.2-d254faf-202604270835.0":"2026-04-27T08:37:21.649Z","2.29.2-3c01a38-202604270853.0":"2026-04-27T08:54:54.992Z","2.29.2-3c01a38-202604270911.0":"2026-04-27T09:13:26.934Z","2.29.2-011c66e-202604271824.0":"2026-04-27T18:26:18.295Z","2.29.2-65ec918-202604280946.0":"2026-04-28T09:48:39.716Z","2.29.2-d53e1dd-202604291045.0":"2026-04-29T10:47:30.423Z","2.29.2-424fbb5-202604291712.0":"2026-04-29T17:14:21.458Z","2.29.2-848eeb0-202604291734.0":"2026-04-29T17:35:46.887Z","2.29.2-1888d81-202604291750.0":"2026-04-29T17:52:26.390Z","2.29.2-1888d81-202604291804.0":"2026-04-29T18:05:50.775Z","2.29.2-1888d81-202604291806.0":"2026-04-29T18:08:10.142Z","2.29.2-1888d81-202604300826.0":"2026-04-30T08:27:57.573Z","2.29.2-1888d81-202604300848.0":"2026-04-30T08:50:33.693Z","2.29.2-1888d81-202604300901.0":"2026-04-30T09:02:50.210Z","2.29.2-666263a-202604300925.0":"2026-04-30T09:26:49.171Z","2.29.2-75cd225-202604301219.0":"2026-04-30T12:21:08.271Z","2.29.2-5782e39-202604301445.0":"2026-04-30T14:47:11.388Z","2.29.2-a9428bd-202604301559.0":"2026-04-30T16:01:10.346Z","2.29.2-a9428bd-202604301637.0":"2026-04-30T16:39:40.650Z","2.29.2-a9428bd-202604302044.0":"2026-04-30T20:45:58.745Z","2.29.2-c3a7fcb-202604302103.0":"2026-04-30T21:04:40.846Z","2.29.2-cabf53f-202605011254.0":"2026-05-01T12:55:51.459Z","2.29.2-462b88a-202605011424.0":"2026-05-01T14:26:01.657Z","2.29.2-462b88a-202605011534.0":"2026-05-01T15:36:38.720Z","2.29.2-8fabb21-202605041148.0":"2026-05-04T11:50:31.717Z","2.29.2-0b1b0ab-202605050616.0":"2026-05-05T06:17:50.126Z","2.29.2-53f4bd6-202605051244.0":"2026-05-05T12:46:23.338Z","2.29.2-53f4bd6-202605051252.0":"2026-05-05T12:54:25.520Z","2.29.2-3d00ca4-202605051300.0":"2026-05-05T13:02:44.130Z","2.29.2-3d00ca4-202605051304.0":"2026-05-05T13:05:48.820Z","2.29.2-3d00ca4-202605051319.0":"2026-05-05T13:21:23.320Z","2.29.2-1b7c2f3-202605051351.0":"2026-05-05T13:53:21.367Z","2.29.2-92c75fd-202605051409.0":"2026-05-05T14:11:20.991Z","2.29.2-92c75fd-202605051414.0":"2026-05-05T14:16:17.812Z","2.29.2-92c75fd-202605051428.0":"2026-05-05T14:30:17.412Z","2.29.2-7cae936-202605051439.0":"2026-05-05T14:41:27.568Z","2.29.2-7cae936-202605051455.0":"2026-05-05T14:56:45.862Z","2.29.2-9954e63-202605051530.0":"2026-05-05T15:32:32.955Z","2.29.2-6932570-202605051544.0":"2026-05-05T15:46:22.589Z","2.29.2-6932570-202605051559.0":"2026-05-05T16:01:42.421Z","2.29.2-9c9214e-202605051725.0":"2026-05-05T17:27:20.068Z","2.29.2-c3c8f6f-202605061119.0":"2026-05-06T11:20:44.996Z","2.29.2-341af46-202605061320.0":"2026-05-06T13:21:42.250Z","2.29.2-341af46-202605061344.0":"2026-05-06T13:46:38.597Z","2.29.2-341af46-202605061406.0":"2026-05-06T14:07:56.870Z","2.29.2-f2665ec-202605061426.0":"2026-05-06T14:28:06.182Z","2.29.2-f2665ec-202605061446.0":"2026-05-06T14:48:38.347Z","2.29.2-a962b58-202605061514.0":"2026-05-06T15:16:31.989Z","2.29.2-1b0e926-202605061540.0":"2026-05-06T15:42:01.481Z","2.29.2-0149767-202605061619.0":"2026-05-06T16:21:22.187Z","2.29.2-0149767-202605061637.0":"2026-05-06T16:39:04.452Z","2.29.2-4bf26c6-202605061721.0":"2026-05-06T17:22:47.641Z","2.29.2-4bf26c6-202605070540.0":"2026-05-07T05:42:23.315Z","2.29.2-d01c9cd-202605070647.0":"2026-05-07T06:49:01.323Z","2.29.2-d01c9cd-202605070847.0":"2026-05-07T08:49:10.559Z","2.29.2-d01c9cd-202605070851.0":"2026-05-07T08:52:48.744Z","2.29.2-d01c9cd-202605070855.0":"2026-05-07T08:57:18.416Z","2.29.2-d01c9cd-202605070859.0":"2026-05-07T09:00:39.609Z","2.29.2-d01c9cd-202605070901.0":"2026-05-07T09:03:09.046Z","2.29.2-d01c9cd-202605070904.0":"2026-05-07T09:05:52.113Z","2.29.2-d01c9cd-202605070906.0":"2026-05-07T09:08:26.739Z","2.29.2-be93ec7-202605070927.0":"2026-05-07T09:29:22.829Z","2.29.2-c513f3f-202605070931.0":"2026-05-07T09:33:22.457Z","2.29.2-17744ad-202605071012.0":"2026-05-07T10:13:59.924Z","2.29.2-17744ad-202605071050.0":"2026-05-07T10:51:52.610Z","2.29.2-17744ad-202605071056.0":"2026-05-07T10:57:45.939Z","2.29.2-17744ad-202605071231.0":"2026-05-07T12:33:29.574Z","2.29.2-17744ad-202605071236.0":"2026-05-07T12:38:21.828Z","2.29.2-65182a9-202605071310.0":"2026-05-07T13:12:06.393Z","2.29.2-65182a9-202605071322.0":"2026-05-07T13:24:21.686Z","2.29.2-65182a9-202605071331.0":"2026-05-07T13:32:52.331Z","2.30.0":"2026-05-07T13:45:26.664Z","2.30.1-a8aa55d-202605071401.0":"2026-05-07T14:03:50.703Z","2.30.1-7816b98-202605081141.0":"2026-05-08T11:42:57.568Z","2.30.1-5a0d55d-202605081424.0":"2026-05-08T14:26:33.311Z","2.30.1-5a0d55d-202605081427.0":"2026-05-08T14:28:45.761Z","2.30.1":"2026-05-08T14:50:01.887Z","2.30.2-1cc80fc-202605081449.0":"2026-05-08T14:51:15.869Z","2.30.2-1cc80fc-202605081507.0":"2026-05-08T15:09:12.192Z","2.30.2-485e8d0-202605110932.0":"2026-05-11T09:34:01.377Z","2.30.2-9a0bfa9-202605110951.0":"2026-05-11T09:53:39.806Z","2.30.2-9a0bfa9-202605111557.0":"2026-05-11T15:59:34.534Z","2.30.2-9a0bfa9-202605111603.0":"2026-05-11T16:05:34.739Z","2.30.2-04e59fe-202605111607.0":"2026-05-11T16:09:00.149Z","2.30.2-04e59fe-202605111611.0":"2026-05-11T16:13:01.845Z","2.30.2-04e59fe-202605111622.0":"2026-05-11T16:24:26.797Z","2.30.2-04e59fe-202605120838.0":"2026-05-12T08:40:09.912Z","2.30.2-04e59fe-202605121020.0":"2026-05-12T10:22:21.875Z","2.30.2-04e59fe-202605121050.0":"2026-05-12T10:52:27.255Z","2.30.2-04e59fe-202605121121.0":"2026-05-12T11:23:15.728Z","2.30.2-ae00ef6-202605121415.0":"2026-05-12T14:17:30.056Z","2.30.2-ae00ef6-202605121523.0":"2026-05-12T15:24:46.653Z","2.30.2-129a3cb-202605121612.0":"2026-05-12T16:13:57.946Z","2.30.2-129a3cb-202605131107.0":"2026-05-13T11:09:44.247Z","2.30.2-129a3cb-202605131148.0":"2026-05-13T11:50:39.335Z","2.30.2-ee32e3b-202605151458.0":"2026-05-15T14:59:58.361Z","2.30.2-416b17c-202605151952.0":"2026-05-15T19:54:29.446Z","2.30.2-9260a6f-202605160544.0":"2026-05-16T05:46:33.056Z","2.30.2-9260a6f-202605180719.0":"2026-05-18T07:21:20.474Z","2.30.2-9260a6f-202605181137.0":"2026-05-18T11:39:10.555Z","2.30.2-9260a6f-202605181218.0":"2026-05-18T12:19:54.454Z","2.30.2-9260a6f-202605181253.0":"2026-05-18T12:55:39.707Z","2.30.2-9260a6f-202605181304.0":"2026-05-18T13:05:47.155Z","2.30.2-9260a6f-202605181306.0":"2026-05-18T13:08:06.119Z","2.30.2-9260a6f-202605181317.0":"2026-05-18T13:18:55.157Z","2.30.2-9260a6f-202605181324.0":"2026-05-18T13:26:17.100Z","2.30.2-9260a6f-202605181329.0":"2026-05-18T13:31:02.218Z","2.30.2-21e6bfc-202605181425.0":"2026-05-18T14:27:09.936Z","2.30.2-21e6bfc-202605181429.0":"2026-05-18T14:31:10.190Z","2.30.2-21e6bfc-202605181431.0":"2026-05-18T14:33:19.750Z","2.30.2-21e6bfc-202605181458.0":"2026-05-18T15:00:24.841Z","2.30.2-27f51ee-202605181615.0":"2026-05-18T16:17:37.410Z","2.30.2-fbd2973-202605181657.0":"2026-05-18T16:59:40.228Z","2.30.2-fa4a84c-202605181825.0":"2026-05-18T18:27:27.842Z","2.30.2-0842d34-202605190956.0":"2026-05-19T09:58:42.738Z","2.30.2-3d144f6-202605191016.0":"2026-05-19T10:18:12.299Z","2.30.2-78d3dfa-202605191056.0":"2026-05-19T10:57:38.998Z","2.30.2-da74232-202605191100.0":"2026-05-19T11:02:01.938Z","2.30.2-da74232-202605191108.0":"2026-05-19T11:10:37.814Z","2.30.2-da74232-202605191142.0":"2026-05-19T11:44:05.458Z","2.30.2-da74232-202605191145.0":"2026-05-19T11:47:18.591Z","2.30.2-da74232-202605191255.0":"2026-05-19T12:57:41.529Z","2.30.2-12f9907-202605191423.0":"2026-05-19T14:24:45.652Z","2.30.2-572466f-202605191614.0":"2026-05-19T16:16:27.561Z","2.30.2-05754fb-202605201113.0":"2026-05-20T11:14:53.460Z","2.30.2-05754fb-202605201851.0":"2026-05-20T18:53:03.132Z","2.30.2-2fbd3c2-202605210925.0":"2026-05-21T09:27:32.164Z","2.30.2-a1b6d01-202605211255.0":"2026-05-21T12:57:34.017Z","2.30.2-a1b6d01-202605211300.0":"2026-05-21T13:02:08.894Z","2.30.2-a1b6d01-202605211305.0":"2026-05-21T13:07:10.414Z","2.30.2-749f04a-202605211412.0":"2026-05-21T14:14:04.652Z","2.30.2-81347a4-202605211456.0":"2026-05-21T14:58:03.580Z","2.30.2-f2c8c71-202605221336.0":"2026-05-22T13:38:40.700Z","2.30.2-f2c8c71-202605231355.0":"2026-05-23T13:57:18.125Z","2.30.2-f2c8c71-202605240724.0":"2026-05-24T07:25:50.990Z","2.30.2-f2c8c71-202605251143.0":"2026-05-25T11:44:54.297Z","2.30.2-4cb68b3-202605261355.0":"2026-05-26T13:57:22.912Z","2.30.2-4cb68b3-202605261359.0":"2026-05-26T14:00:54.860Z","2.30.2-4cb68b3-202605261419.0":"2026-05-26T14:21:16.658Z","2.30.2-3042f10-202605261503.0":"2026-05-26T15:04:41.345Z","2.30.2-3042f10-202605261506.0":"2026-05-26T15:08:03.047Z","2.30.2-d4ae183-202605261604.0":"2026-05-26T16:05:55.777Z","2.30.2-d4ae183-202605270831.0":"2026-05-27T08:33:20.686Z","2.30.2-0460f02-202605271256.0":"2026-05-27T12:58:04.335Z","2.30.2-0460f02-202605271644.0":"2026-05-27T16:46:21.510Z","2.30.2-0460f02-202605280553.0":"2026-05-28T05:55:40.093Z","2.30.2-0460f02-202605280558.0":"2026-05-28T06:00:20.826Z","2.30.2-0460f02-202605280601.0":"2026-05-28T06:03:42.926Z","2.30.2-822dce4-202605281438.0":"2026-05-28T14:40:48.446Z","2.30.2-82d7d73-202606010903.0":"2026-06-01T09:05:46.072Z","2.30.2-f2fa4c3-202606011605.0":"2026-06-01T16:07:20.689Z","2.30.2-935b669-202606020922.0":"2026-06-02T09:24:07.705Z","2.30.2-4810241-202606020937.0":"2026-06-02T09:39:14.474Z","2.30.2-4810241-202606020955.0":"2026-06-02T09:57:34.048Z","2.30.2-b974fab-202606021211.0":"2026-06-02T12:13:04.193Z","2.30.2-fdfcbe3-202606021510.0":"2026-06-02T15:12:16.269Z","2.30.2-3b2963f-202606021955.0":"2026-06-02T19:57:08.679Z","2.30.2-d71036f-202606031320.0":"2026-06-03T13:22:10.709Z","2.30.2-495ec2b-202606031412.0":"2026-06-03T14:14:04.703Z","2.30.2-2295c3f-202606031448.0":"2026-06-03T14:49:54.283Z","2.30.2-77cdb58-202606031625.0":"2026-06-03T16:27:09.846Z","2.30.2-0b8ec33-202606040954.0":"2026-06-04T09:56:32.958Z","2.30.2-954b8ae-202606041134.0":"2026-06-04T11:36:03.288Z","2.30.2-954b8ae-202606041315.0":"2026-06-04T13:17:02.729Z","2.30.2-954b8ae-202606041319.0":"2026-06-04T13:21:47.277Z","2.31.0":"2026-06-04T13:49:47.409Z","2.31.1-2c680ad-202606041400.0":"2026-06-04T14:02:37.821Z","2.31.1-ae322ef-202606051040.0":"2026-06-05T10:42:47.717Z","2.31.1-90733e2-202606051216.0":"2026-06-05T12:18:04.126Z","2.31.1-d6d525f-202606081426.0":"2026-06-08T14:28:31.113Z","2.31.1-9cabaeb-202606091327.0":"2026-06-09T13:29:41.562Z","2.31.1-2bde162-202606091336.0":"2026-06-09T13:37:50.522Z","2.31.1-2bde162-202606091347.0":"2026-06-09T13:48:53.285Z","2.31.1-2bde162-202606091354.0":"2026-06-09T13:56:12.085Z","2.31.2-8b1152c-202606091419.0":"2026-06-09T14:20:51.182Z","2.31.2-8b1152c-202606091428.0":"2026-06-09T14:30:14.570Z","2.31.2-8b1152c-202606091430.0":"2026-06-09T14:32:36.161Z","2.31.2":"2026-06-09T14:58:26.602Z","2.31.3-5ca84a5-202606091515.0":"2026-06-09T15:16:50.210Z","2.31.3-00ac964-202606091549.0":"2026-06-09T15:51:36.492Z","2.31.3-e457510-202606101412.0":"2026-06-10T14:13:51.466Z","2.31.3-0a7f4a9-202606101610.0":"2026-06-10T16:12:20.604Z","2.31.3-275efa9-202606101617.0":"2026-06-10T16:19:23.168Z","2.31.3-275efa9-202606101637.0":"2026-06-10T16:39:10.584Z","2.31.3-ca8864d-202606101654.0":"2026-06-10T16:56:43.240Z","2.31.3-e42287f-202606111317.0":"2026-06-11T13:19:38.925Z","2.31.3-98c64b5-202606111414.0":"2026-06-11T14:16:04.705Z","2.31.3-98c64b5-202606111433.0":"2026-06-11T14:35:23.118Z","2.31.3-45ad7ac-202606121646.0":"2026-06-12T16:48:16.258Z","2.31.3-8ad2d13-202606151406.0":"2026-06-15T14:08:31.581Z","2.31.3-d2b69d9-202606151443.0":"2026-06-15T14:45:27.578Z","2.31.3-08d6c60-202606151825.0":"2026-06-15T18:27:17.075Z","2.31.3-08d6c60-202606151845.0":"2026-06-15T18:46:55.417Z","2.31.3-4e72c01-202606151850.0":"2026-06-15T18:52:37.830Z","2.31.3-75092bf-202606151853.0":"2026-06-15T18:54:42.822Z","2.31.3-c2b1241-202606151901.0":"2026-06-15T19:03:27.243Z","2.31.3-b4208ba-202606151905.0":"2026-06-15T19:06:48.550Z","2.31.3-08887ed-202606151910.0":"2026-06-15T19:11:55.029Z","2.31.3-aa092ea-202606151914.0":"2026-06-15T19:16:08.095Z","2.31.3-24198a9-202606151926.0":"2026-06-15T19:28:37.265Z","2.31.3-dd29584-202606151932.0":"2026-06-15T19:34:24.701Z","2.31.3-e73268e-202606151940.0":"2026-06-15T19:42:34.347Z","2.31.3-517e267-202606151945.0":"2026-06-15T19:46:59.949Z","2.31.3-517e267-202606152126.0":"2026-06-15T21:28:34.642Z","2.31.3-de2c617-202606160821.0":"2026-06-16T08:22:58.703Z","2.31.3-3846417-202606160825.0":"2026-06-16T08:26:42.316Z","2.31.3-3d19b5d-202606160830.0":"2026-06-16T08:32:21.260Z","2.31.3-f009412-202606160837.0":"2026-06-16T08:39:19.741Z","2.31.3-543e9a3-202606160839.0":"2026-06-16T08:41:32.862Z","2.31.3-fd2036c-202606160846.0":"2026-06-16T08:47:33.458Z","2.31.3-fd2036c-202606160906.0":"2026-06-16T09:07:58.529Z","2.31.3-55ebf09-202606161052.0":"2026-06-16T10:54:35.066Z","2.31.3-55ebf09-202606161113.0":"2026-06-16T11:14:51.362Z","2.31.3-91da44f-202606161246.0":"2026-06-16T12:48:24.856Z","2.31.3-af096a4-202606161303.0":"2026-06-16T13:05:23.427Z","2.31.3-5832e87-202606161321.0":"2026-06-16T13:22:59.900Z","2.31.3-f0bc25e-202606161330.0":"2026-06-16T13:31:52.814Z","2.31.3-f0bc25e-202606161349.0":"2026-06-16T13:50:39.957Z","2.31.3-f0bc25e-202606161351.0":"2026-06-16T13:52:49.928Z","2.31.3-f0bc25e-202606161354.0":"2026-06-16T13:56:38.507Z","2.31.3-1c2ee1a-202606161421.0":"2026-06-16T14:23:09.991Z","2.31.3":"2026-06-16T14:31:09.189Z","2.31.4-67b1014-202606161444.0":"2026-06-16T14:46:25.108Z","2.31.4-6651f18-202606161550.0":"2026-06-16T15:52:15.549Z","2.31.4-6651f18-202606161554.0":"2026-06-16T15:55:44.730Z","2.31.4-6651f18-202606161619.0":"2026-06-16T16:20:57.839Z","2.31.4-6651f18-202606161632.0":"2026-06-16T16:34:36.501Z","2.31.4-6651f18-202606161640.0":"2026-06-16T16:42:10.546Z","2.31.4-6651f18-202606161646.0":"2026-06-16T16:47:47.682Z","2.31.4-6651f18-202606161709.0":"2026-06-16T17:11:02.497Z","2.31.4-e2bf6b7-202606161801.0":"2026-06-16T18:02:46.269Z","2.31.4-e2bf6b7-202606161814.0":"2026-06-16T18:15:43.623Z","2.31.4-779dfdb-202606170816.0":"2026-06-17T08:18:03.063Z","2.31.4-1901d41-202606171210.0":"2026-06-17T12:12:07.708Z","2.31.4-a7ffe25-202606171322.0":"2026-06-17T13:23:51.642Z","2.31.4-a5aebfe-202606171425.0":"2026-06-17T14:27:16.182Z","2.31.4-83ec01e-202606171901.0":"2026-06-17T19:02:54.449Z","2.31.4-525a175-202606172041.0":"2026-06-17T20:42:46.572Z","2.31.4-fab5b55-202606181341.0":"2026-06-18T13:43:31.594Z","2.31.4-fab5b55-202606220921.0":"2026-06-22T09:23:07.862Z","2.31.4-fab5b55-202606220937.0":"2026-06-22T09:38:58.856Z","2.31.4-656f3fb-202606221443.0":"2026-06-22T14:44:44.876Z","2.31.4-656f3fb-202606221458.0":"2026-06-22T14:59:49.667Z","2.31.4-656f3fb-202606221510.0":"2026-06-22T15:11:51.845Z","2.31.4-1543f13-202606221533.0":"2026-06-22T15:34:59.975Z","2.31.4-1543f13-202606221535.0":"2026-06-22T15:37:04.687Z","2.31.4-ea0d301-202606221543.0":"2026-06-22T15:45:11.951Z","2.31.4-35e4066-202606221547.0":"2026-06-22T15:49:35.711Z","2.31.4-73b7344-202606221552.0":"2026-06-22T15:54:24.559Z","2.31.4-b45029d-202606221611.0":"2026-06-22T16:13:19.340Z","2.31.4-5285e15-202606221621.0":"2026-06-22T16:23:04.278Z","2.31.4-b7507dd-202606221633.0":"2026-06-22T16:35:28.207Z","2.31.4-ca67a02-202606221636.0":"2026-06-22T16:38:02.774Z","2.31.4-eb0e5bb-202606221651.0":"2026-06-22T16:52:47.711Z","2.31.4-47afd97-202606221712.0":"2026-06-22T17:14:19.618Z","2.31.4-4776364-202606221716.0":"2026-06-22T17:18:07.991Z","2.31.4-49fd3c8-202606221722.0":"2026-06-22T17:23:57.814Z","2.31.4-c38ed8d-202606221732.0":"2026-06-22T17:34:00.745Z","2.31.4-8fd57ac-202606221739.0":"2026-06-22T17:40:42.432Z","2.31.4-8fd57ac-202606221754.0":"2026-06-22T17:55:51.944Z","2.31.4-31d245a-202606221927.0":"2026-06-22T19:28:40.859Z","2.31.4-31d245a-202606221946.0":"2026-06-22T19:48:41.011Z","2.31.4-fca6d31-202606230735.0":"2026-06-23T07:37:11.917Z","2.31.4-fca6d31-202606231241.0":"2026-06-23T12:42:27.980Z","2.31.4-4643d76-202606231340.0":"2026-06-23T13:42:01.136Z","2.31.4-8d941a0-202606231423.0":"2026-06-23T14:25:38.311Z","2.31.4-14c3010-202606231601.0":"2026-06-23T16:03:23.711Z","2.31.4-01e79e2-202606231646.0":"2026-06-23T16:48:04.855Z","2.31.4-2e6ca79-202606241213.0":"2026-06-24T12:15:11.616Z","2.31.4-2e6ca79-202606241222.0":"2026-06-24T12:24:31.721Z","2.31.4-2e6ca79-202606241246.0":"2026-06-24T12:48:10.831Z","2.31.4-858ebac-202606241404.0":"2026-06-24T14:06:17.617Z","2.31.4-858ebac-202606241508.0":"2026-06-24T15:09:49.001Z","2.31.4-858ebac-202606251449.0":"2026-06-25T14:51:09.558Z","2.31.4-9f6c480-202606260936.0":"2026-06-26T09:37:40.713Z","2.31.4-9f6c480-202606261217.0":"2026-06-26T12:18:37.860Z","2.31.4-9f6c480-202606261336.0":"2026-06-26T13:38:33.810Z","2.31.4-64c84a9-202606291311.0":"2026-06-29T13:13:38.783Z","2.31.4-3664e73-202606291608.0":"2026-06-29T16:09:40.362Z","2.31.4-6711391-202606291613.0":"2026-06-29T16:14:51.843Z","2.31.4-8b2a15e-202606291616.0":"2026-06-29T16:18:16.042Z","2.31.4-76ad163-202606291624.0":"2026-06-29T16:26:30.219Z","2.31.4-5ab32db-202606291631.0":"2026-06-29T16:32:52.627Z","2.31.4-76ffbd6-202606291640.0":"2026-06-29T16:42:11.152Z","2.31.4-53b95b4-202606291652.0":"2026-06-29T16:53:55.754Z","2.31.4-1d536ec-202606291717.0":"2026-06-29T17:19:22.263Z","2.31.4-1207675-202606291722.0":"2026-06-29T17:24:30.065Z","2.31.4-7907ab1-202606291729.0":"2026-06-29T17:31:03.725Z","2.31.4-8a803bf-202606291747.0":"2026-06-29T17:49:35.643Z","2.31.4-6e6154d-202606291752.0":"2026-06-29T17:54:06.038Z","2.31.4-6e6154d-202606291811.0":"2026-06-29T18:12:55.961Z","2.31.4-b9abc31-202606291927.0":"2026-06-29T19:28:54.804Z","2.31.4-c12f0c5-202606300928.0":"2026-06-30T09:30:27.742Z","2.31.4-c12f0c5-202606300948.0":"2026-06-30T09:49:57.504Z","2.31.4-0889093-202606301503.0":"2026-06-30T15:04:48.454Z","2.31.4-abe7b49-202606301618.0":"2026-06-30T16:20:35.841Z","2.31.4-abe7b49-202606301857.0":"2026-06-30T18:58:39.739Z","2.31.4-abe7b49-202606301901.0":"2026-06-30T19:02:43.674Z","2.31.4-abe7b49-202606302010.0":"2026-06-30T20:11:38.419Z","2.31.4-abe7b49-202607010910.0":"2026-07-01T09:11:47.449Z","2.31.4-e1d6bc0-202607010933.0":"2026-07-01T09:34:42.411Z","2.31.4-66f87ec-202607011143.0":"2026-07-01T11:44:42.228Z","2.31.4-66f87ec-202607011311.0":"2026-07-01T13:13:21.482Z","2.31.4-66f87ec-202607011315.0":"2026-07-01T13:16:58.393Z","2.31.4-88f7582-202607011544.0":"2026-07-01T15:45:49.688Z","2.31.4-0c9b327-202607011626.0":"2026-07-01T16:27:47.227Z","2.31.4-0c9b327-202607011640.0":"2026-07-01T16:41:42.603Z","2.31.4-f6ceec4-202607020729.0":"2026-07-02T07:31:06.253Z","2.31.4-676f620-202607020853.0":"2026-07-02T08:54:54.414Z","2.31.4-fd8dabc-202607020952.0":"2026-07-02T09:53:52.646Z","2.31.4-fd8dabc-202607020958.0":"2026-07-02T10:00:12.073Z","2.31.4-dd6b038-202607021159.0":"2026-07-02T12:01:39.000Z","2.31.4-dd6b038-202607021319.0":"2026-07-02T13:20:55.372Z","2.31.4-dd6b038-202607021327.0":"2026-07-02T13:29:18.683Z","2.31.4-dd6b038-202607021330.0":"2026-07-02T13:32:07.452Z","2.31.4-dd6b038-202607021342.0":"2026-07-02T13:44:17.554Z","2.32.0":"2026-07-02T14:00:10.597Z","2.32.1-fc1b7da-202607021428.0":"2026-07-02T14:29:53.479Z","2.32.1-5abb3d8-202607021623.0":"2026-07-02T16:25:13.199Z","2.32.1-2f572a5-202607061118.0":"2026-07-06T11:20:14.253Z","2.32.1-34a1710-202607061608.0":"2026-07-06T16:09:58.513Z","2.32.1-4863e17-202607061631.0":"2026-07-06T16:32:54.566Z","2.32.1-4863e17-202607061635.0":"2026-07-06T16:37:06.011Z","2.32.1-4863e17-202607061803.0":"2026-07-06T18:05:28.614Z","2.32.1-4863e17-202607061914.0":"2026-07-06T19:16:12.823Z","2.32.1-c0969a0-202607061956.0":"2026-07-06T19:58:06.895Z","2.32.1-4f57168-202607070846.0":"2026-07-07T08:47:51.607Z","2.32.1-cababe3-202607070902.0":"2026-07-07T09:03:37.313Z","2.32.1-cababe3-202607070933.0":"2026-07-07T09:34:58.479Z","2.32.1-8af93d7-202607071646.0":"2026-07-07T16:48:18.672Z","2.32.1-3a61885-202607071748.0":"2026-07-07T17:49:41.745Z","2.32.1-3a61885-202607081328.0":"2026-07-08T13:30:27.688Z","2.32.1-1ee838f-202607081359.0":"2026-07-08T14:01:47.810Z","2.32.1-fc7a0e9-202607091019.0":"2026-07-09T10:21:33.392Z","2.32.1-0d4cf33-202607100906.0":"2026-07-10T09:07:46.609Z","2.32.1-0d4cf33-202607100927.0":"2026-07-10T09:29:33.018Z","2.32.1-80066ac-202607101031.0":"2026-07-10T10:33:23.868Z","2.32.1-d87c69d-202607101153.0":"2026-07-10T11:54:51.883Z","2.32.1-a5e2f37-202607101423.0":"2026-07-10T14:24:44.308Z","2.32.1-eea028e-202607101644.0":"2026-07-10T16:45:51.321Z","2.32.1-fa3d134-202607131727.0":"2026-07-13T17:28:51.731Z","2.32.1-e0d7fee-202607140709.0":"2026-07-14T07:10:25.325Z","2.32.1-9de571d-202607141023.0":"2026-07-14T10:25:00.077Z","2.32.1-6c31eac-202607141026.0":"2026-07-14T10:27:54.981Z","2.32.1-8c9e9a4-202607141035.0":"2026-07-14T10:36:35.909Z","2.32.1-8c9e9a4-202607141055.0":"2026-07-14T10:57:36.858Z","2.32.1-8c9e9a4-202607141538.0":"2026-07-14T15:39:37.843Z","2.32.1-a7b9f86-202607150611.0":"2026-07-15T06:13:03.223Z","2.32.1-00b8d9c-202607151453.0":"2026-07-15T14:55:20.971Z","2.32.1-844a704-202607151551.0":"2026-07-15T15:53:25.246Z","2.32.1-bf4de33-202607160938.0":"2026-07-16T09:39:59.632Z","2.32.1-18a1d55-202607160947.0":"2026-07-16T09:49:20.820Z","2.32.1-56c95c3-202607160952.0":"2026-07-16T09:54:33.598Z","2.32.1-56c95c3-202607161014.0":"2026-07-16T10:15:39.490Z","2.32.1-892eef2-202607161846.0":"2026-07-16T18:47:51.287Z","2.32.1-c2393a0-202607161851.0":"2026-07-16T18:53:18.440Z","2.32.1-b0e7d73-202607161856.0":"2026-07-16T18:57:58.677Z","2.32.1-4caa36a-202607161901.0":"2026-07-16T19:03:14.498Z","2.32.1-788ccef-202607161906.0":"2026-07-16T19:08:10.387Z","2.32.1-788ccef-202607161928.0":"2026-07-16T19:29:58.482Z","2.32.1-d34cdab-202607161951.0":"2026-07-16T19:53:43.714Z","2.32.1-e2f1a00-202607162000.0":"2026-07-16T20:02:26.399Z","2.32.1-8fdf6ed-202607162003.0":"2026-07-16T20:05:39.455Z","2.32.1-577b03d-202607162011.0":"2026-07-16T20:13:19.800Z","2.32.1-ce4235f-202607162018.0":"2026-07-16T20:20:18.737Z","2.32.1-bb6fbd4-202607162022.0":"2026-07-16T20:23:44.863Z","2.32.1-c409129-202607162025.0":"2026-07-16T20:27:04.323Z","2.32.1-ea557e7-202607162030.0":"2026-07-16T20:31:38.697Z","2.32.1-214e2c7-202607162033.0":"2026-07-16T20:35:07.777Z","2.32.1-214e2c7-202607162054.0":"2026-07-16T20:56:29.261Z","2.32.1-ca477d3-202607170903.0":"2026-07-17T09:05:22.680Z","2.32.1-19e0c9a-202607171125.0":"2026-07-17T11:26:42.233Z","2.32.1-9209878-202607171245.0":"2026-07-17T12:46:49.360Z","2.32.1-9209878-202607171306.0":"2026-07-17T13:07:52.115Z","2.32.1-2eeedc9-202607171337.0":"2026-07-17T13:38:57.676Z","2.32.1-2eeedc9-202607171358.0":"2026-07-17T13:59:56.659Z","2.32.1-809d320-202607201404.0":"2026-07-20T14:06:29.876Z","2.32.1-809d320-202607201419.0":"2026-07-20T14:20:42.826Z","2.32.1-809d320-202607201421.0":"2026-07-20T14:22:50.607Z","2.32.1-809d320-202607201426.0":"2026-07-20T14:27:45.966Z","2.32.1":"2026-07-20T15:11:07.167Z","2.32.2-ca9224b-202607201528.0":"2026-07-20T15:30:18.272Z","2.32.2-752ffb8-202607201957.0":"2026-07-20T19:59:23.654Z","2.32.2-722e3fb-202607202000.0":"2026-07-20T20:01:33.182Z","2.32.2-e148667-202607202003.0":"2026-07-20T20:05:07.683Z","2.32.2-c32e95c-202607202013.0":"2026-07-20T20:15:46.146Z","2.32.2-86a3edd-202607202023.0":"2026-07-20T20:25:04.936Z","2.32.2-86a3edd-202607202044.0":"2026-07-20T20:45:52.688Z","2.32.2-a8dee95-202607210817.0":"2026-07-21T08:19:09.383Z","2.32.2-acb7c11-202607210836.0":"2026-07-21T08:38:25.513Z","2.32.2-5802322-202607210902.0":"2026-07-21T09:04:17.684Z","2.32.2-7de1857-202607211439.0":"2026-07-21T14:41:40.106Z","2.32.2-7de1857-202607211455.0":"2026-07-21T14:57:05.578Z","2.32.2-56fc151-202607211528.0":"2026-07-21T15:29:38.481Z","2.32.2-917e485-202607211542.0":"2026-07-21T15:44:25.135Z","2.32.2-9567ed6-202607211545.0":"2026-07-21T15:47:17.149Z","2.32.2-16f3184-202607211548.0":"2026-07-21T15:50:21.849Z","2.32.2-e40cca2-202607211555.0":"2026-07-21T15:57:14.177Z","2.32.2-382cc9b-202607211600.0":"2026-07-21T16:02:28.201Z","2.32.2-382cc9b-202607211623.0":"2026-07-21T16:24:47.029Z","2.32.2-1a58306-202607212015.0":"2026-07-21T20:17:17.593Z","2.32.2-881e259-202607220908.0":"2026-07-22T09:10:11.789Z","2.32.2-43ef287-202607221446.0":"2026-07-22T14:48:21.927Z","2.32.2-d674a9e-202607221646.0":"2026-07-22T16:48:07.975Z","2.32.2-200538d-202607230934.0":"2026-07-23T09:35:50.921Z","2.32.2-d3ebe4a-202607231049.0":"2026-07-23T10:51:22.846Z","2.32.2-304bcc4-202607231501.0":"2026-07-23T15:02:59.727Z","2.32.2-eb9911b-202607231621.0":"2026-07-23T16:23:05.344Z","2.32.2-edf5186-202607231655.0":"2026-07-23T16:57:11.709Z","2.32.2-e220d2e-202607231947.0":"2026-07-23T19:48:43.899Z","2.32.2-b327fda-202607241121.0":"2026-07-24T11:23:25.753Z","2.32.2-b327fda-202607241215.0":"2026-07-24T12:17:47.054Z","2.32.2-e8f3ec0-202607241308.0":"2026-07-24T13:10:26.910Z","2.32.2-cf50dff-202607241341.0":"2026-07-24T13:43:16.793Z","2.32.2-c26dc8b-202607241506.0":"2026-07-24T15:08:40.293Z","2.32.2-6f50a88-202607270946.0":"2026-07-27T09:48:20.043Z","2.32.2-bd8ff50-202607270957.0":"2026-07-27T09:59:09.168Z","2.32.2-bd8ff50-202607271015.0":"2026-07-27T10:16:55.197Z","2.32.2-8ce123a-202607271024.0":"2026-07-27T10:26:40.830Z","2.32.2-8ce123a-202607271031.0":"2026-07-27T10:33:09.180Z","2.32.2-8ce123a-202607271035.0":"2026-07-27T10:36:52.196Z","2.32.2-8ce123a-202607271039.0":"2026-07-27T10:41:33.932Z","2.32.2-8ce123a-202607271044.0":"2026-07-27T10:46:05.238Z","2.32.2-8ce123a-202607271046.0":"2026-07-27T10:47:51.491Z","2.32.2-8ce123a-202607271050.0":"2026-07-27T10:52:32.342Z","2.32.2-8ce123a-202607271053.0":"2026-07-27T10:55:08.580Z","2.32.2-8ce123a-202607271057.0":"2026-07-27T10:59:11.364Z","2.32.2-8ce123a-202607271103.0":"2026-07-27T11:05:14.639Z","2.32.2-a987d94-202607271122.0":"2026-07-27T11:24:39.607Z","2.32.2-a987d94-202607271141.0":"2026-07-27T11:43:03.269Z","2.32.2-a987d94-202607271222.0":"2026-07-27T12:23:52.206Z","2.32.2-a987d94-202607271224.0":"2026-07-27T12:26:02.380Z","2.32.2-980da5f-202607271327.0":"2026-07-27T13:29:06.748Z","2.32.2-980da5f-202607271412.0":"2026-07-27T14:14:27.903Z","2.32.2-980da5f-202607271424.0":"2026-07-27T14:25:58.163Z","2.32.2-9e2b2a5-202607271601.0":"2026-07-27T16:03:15.684Z","2.32.2-9e2b2a5-202607271619.0":"2026-07-27T16:21:14.132Z","2.32.2-10c1e5f-202607271631.0":"2026-07-27T16:33:08.755Z","2.32.2-b1afca0-202607271651.0":"2026-07-27T16:53:25.333Z","2.32.2-b1afca0-202607271735.0":"2026-07-27T17:36:45.082Z","2.32.2-c0cee4d-202607271854.0":"2026-07-27T18:55:58.007Z","2.32.2-f089402-202607271859.0":"2026-07-27T19:01:41.000Z","2.32.2-7382ce3-202607271906.0":"2026-07-27T19:08:34.032Z","2.32.2-d954aac-202607271922.0":"2026-07-27T19:23:56.159Z","2.32.2-c9eca1f-202607271928.0":"2026-07-27T19:29:43.827Z","2.32.2-857e30b-202607271931.0":"2026-07-27T19:33:14.544Z","2.32.2-1dc0bad-202607271937.0":"2026-07-27T19:38:56.356Z","2.32.2-ed13f16-202607271939.0":"2026-07-27T19:41:06.100Z","2.32.2-a84e028-202607271943.0":"2026-07-27T19:44:40.945Z","2.32.2-090ccaf-202607271947.0":"2026-07-27T19:49:34.764Z","2.32.2-f9105bd-202607271951.0":"2026-07-27T19:53:29.053Z","2.32.2-dfb1d7a-202607271953.0":"2026-07-27T19:55:25.649Z","2.32.2-dfb1d7a-202607272015.0":"2026-07-27T20:17:11.776Z","2.32.2-4c61f20-202607272116.0":"2026-07-27T21:18:17.998Z","2.32.2-239d252-202607280731.0":"2026-07-28T07:32:46.865Z","2.32.2-174c44a-202607280848.0":"2026-07-28T08:50:22.638Z","2.32.2-1599a93-202607280856.0":"2026-07-28T08:57:56.032Z","2.32.2-1599a93-202607280915.0":"2026-07-28T09:16:51.642Z","2.32.2-1a15206-202607280942.0":"2026-07-28T09:44:06.992Z","2.32.2-be7d678-202607281038.0":"2026-07-28T10:40:20.014Z","2.32.2-be7d678-202607281100.0":"2026-07-28T11:02:19.182Z","2.32.2-5f34bbf-202607281143.0":"2026-07-28T11:45:14.046Z","2.32.2-5f34bbf-202607281159.0":"2026-07-28T12:00:55.999Z","2.32.2-ca3c665-202607281333.0":"2026-07-28T13:35:26.024Z","2.32.2-1685d95-202607281637.0":"2026-07-28T16:39:12.880Z","2.32.2-8113192-202607282034.0":"2026-07-28T20:35:37.548Z","2.32.2-686d6dd-202607290954.0":"2026-07-29T09:55:57.166Z","2.32.2-6c2315b-202607291027.0":"2026-07-29T10:29:02.730Z","2.32.2-ce96279-202607291324.0":"2026-07-29T13:25:47.247Z","2.32.2-ce96279-202607291346.0":"2026-07-29T13:48:36.803Z","2.32.2-2321105-202607300452.0":"2026-07-30T04:54:30.454Z","2.32.2-2321105-202607301220.0":"2026-07-30T12:21:54.810Z","2.32.2-2321105-202607301223.0":"2026-07-30T12:24:59.379Z","2.32.2-dbbb514-202607301242.0":"2026-07-30T12:44:28.575Z","2.32.2-5a9e747-202607301320.0":"2026-07-30T13:22:36.174Z","2.32.2-5a9e747-202607301323.0":"2026-07-30T13:25:27.686Z","2.33.0":"2026-07-30T14:02:18.269Z","2.33.1-650f7d8-202607301400.0":"2026-07-30T14:02:39.817Z","2.33.1-650f7d8-202607301423.0":"2026-07-30T14:25:07.723Z","2.33.1-eecec44-202607310900.0":"2026-07-31T09:02:03.685Z","2.33.1-eecec44-202607310903.0":"2026-07-31T09:04:56.067Z","2.33.1":"2026-07-31T09:32:25.017Z","2.33.2-c2ae1d0-202607310958.0":"2026-07-31T09:59:55.722Z","2.33.2-c011853-202608031434.0":"2026-08-03T14:35:59.724Z","2.33.2-8f601d5-202608031601.0":"2026-08-03T16:02:45.994Z","2.33.2-bdedb68-202608031609.0":"2026-08-03T16:10:41.981Z","2.33.2-bdedb68-202608031631.0":"2026-08-03T16:33:01.390Z","2.33.2-477be8c-202608041115.0":"2026-08-04T11:17:26.528Z","2.33.2-0147e29-202608041413.0":"2026-08-04T14:14:56.111Z","2.33.2-21dd63f-202608042058.0":"2026-08-04T20:59:37.440Z","2.33.2-2be4bd6-202608050911.0":"2026-08-05T09:13:09.358Z","2.33.2-2be4bd6-202608050929.0":"2026-08-05T09:30:20.753Z","2.33.2-2be4bd6-202608050933.0":"2026-08-05T09:34:40.158Z","2.33.2-2be4bd6-202608050938.0":"2026-08-05T09:40:38.554Z","2.33.2-71dae2d-202608051006.0":"2026-08-05T10:08:20.873Z","2.33.2":"2026-08-05T10:11:17.120Z","2.33.3-e912a46-202608051030.0":"2026-08-05T10:32:07.451Z","2.33.3-e912a46-202608051049.0":"2026-08-05T10:51:15.849Z","2.33.3-e912a46-202608051102.0":"2026-08-05T11:04:02.999Z","2.33.3-60b2078-202608051414.0":"2026-08-05T14:15:42.975Z","2.33.3-a8f760b-202608051424.0":"2026-08-05T14:26:26.429Z","2.33.3-a8f760b-202608051426.0":"2026-08-05T14:28:27.500Z","2.33.3-a8f760b-202608051446.0":"2026-08-05T14:48:31.947Z","2.33.3-1218b5e-202608051522.0":"2026-08-05T15:24:17.034Z","2.33.3-1218b5e-202608060824.0":"2026-08-06T08:26:33.069Z","2.33.3-1218b5e-202608060918.0":"2026-08-06T09:19:36.781Z","2.33.3-78050e1-202608070815.0":"2026-08-07T08:17:08.146Z","2.33.3-b17ad2d-202608071332.0":"2026-08-07T13:33:59.348Z","2.33.3-b17ad2d-202608071356.0":"2026-08-07T13:57:57.957Z","2.33.3-5370915-202608071520.0":"2026-08-07T15:22:03.734Z","2.33.3-7e031c5-202608071542.0":"2026-08-07T15:44:06.654Z","2.33.3-ab721cb-202608071552.0":"2026-08-07T15:54:11.699Z","2.33.3-ab721cb-202608071652.0":"2026-08-07T16:53:49.630Z","2.33.3-9a46676-202608071910.0":"2026-08-07T19:11:45.874Z","2.33.3-f6d18a5-202608071924.0":"2026-08-07T19:26:13.651Z","2.33.3-946fa59-202608071927.0":"2026-08-07T19:28:54.999Z","2.33.3-da6259a-202608071930.0":"2026-08-07T19:32:17.417Z","2.33.3-f3abaa1-202608071932.0":"2026-08-07T19:34:15.326Z","2.33.3-f3a9f6f-202608071936.0":"2026-08-07T19:38:25.651Z","2.33.3-12286f2-202608071940.0":"2026-08-07T19:42:17.884Z","2.33.3-12286f2-202608072003.0":"2026-08-07T20:05:12.110Z","2.33.3-151b2bf-202608100812.0":"2026-08-10T08:14:10.411Z","2.33.3-9515085-202608101142.0":"2026-08-10T11:44:27.951Z","2.33.3-446dc78-202608102056.0":"2026-08-10T20:57:42.768Z","2.33.3-5801fa2-202608102104.0":"2026-08-10T21:06:15.129Z","2.33.3-5801fa2-202608102126.0":"2026-08-10T21:27:49.409Z","2.33.3-2af687c-202608102149.0":"2026-08-10T21:50:39.242Z","2.33.3-2af687c-202608111358.0":"2026-08-11T13:59:37.734Z","2.33.3-bb4aafa-202608111744.0":"2026-08-11T17:46:12.383Z","2.33.3-bb5b448-202608111747.0":"2026-08-11T17:48:45.858Z","2.33.3-2ff5a41-202608111752.0":"2026-08-11T17:54:00.290Z","2.33.3-21056e2-202608111758.0":"2026-08-11T17:59:38.922Z","2.33.3-5b425ab-202608111803.0":"2026-08-11T18:05:09.160Z","2.33.3-3fbef37-202608111808.0":"2026-08-11T18:10:11.270Z","2.33.3-0047031-202608111823.0":"2026-08-11T18:25:14.329Z","2.33.3-9a1d367-202608111829.0":"2026-08-11T18:31:29.998Z","2.33.3-9a1d367-202608111855.0":"2026-08-11T18:56:55.921Z","2.33.3-9a1d367-202608120801.0":"2026-08-12T08:03:19.085Z","2.33.3-9a1d367-202608120812.0":"2026-08-12T08:14:40.590Z","2.33.3-39d7181-202608121600.0":"2026-08-12T16:02:38.168Z","2.33.3-39d7181-202608121603.0":"2026-08-12T16:05:16.342Z","2.33.3-f8d7ba5-202608121635.0":"2026-08-12T16:39:03.016Z","2.33.3-f8d7ba5-202608130844.0":"2026-08-13T08:46:02.431Z","2.33.3-fe79ae2-202608130900.0":"2026-08-13T09:01:52.886Z","2.33.3-bc556f1-202608130935.0":"2026-08-13T09:36:33.865Z","2.33.3-563fc0e-202608131854.0":"2026-08-13T18:56:32.805Z","2.33.3-12c3b20-202608131929.0":"2026-08-13T19:30:49.860Z","2.33.3-12c3b20-202608131954.0":"2026-08-13T19:56:35.400Z","2.33.3-a5db377-202608132038.0":"2026-08-13T20:40:33.210Z","2.33.3-a24ab9a-202608140926.0":"2026-08-14T09:27:46.143Z","2.33.3-ccd7ce3-202608141136.0":"2026-08-14T11:38:06.640Z","2.33.3-ccd7ce3-202608141159.0":"2026-08-14T12:01:29.164Z","2.33.3-4fe037c-202608141328.0":"2026-08-14T13:30:22.377Z","2.33.3-4fe037c-202608141345.0":"2026-08-14T13:47:25.413Z","2.33.3-a6f7614-202608170737.0":"2026-08-17T07:38:54.619Z","2.33.3-53756ab-202608181323.0":"2026-08-18T13:25:41.503Z","2.33.3-68641fb-202608181328.0":"2026-08-18T13:29:37.929Z","2.33.3-68641fb-202608181413.0":"2026-08-18T14:14:45.756Z","2.33.3-2e08a49-202608191100.0":"2026-08-19T11:02:15.427Z","2.33.3-2e08a49-202608191227.0":"2026-08-19T12:28:56.196Z","2.33.3-d33b229-202608191301.0":"2026-08-19T13:02:52.207Z","2.33.3-31fde0c-202608200952.0":"2026-08-20T09:53:51.226Z","2.33.3-14d8247-202608201338.0":"2026-08-20T13:40:04.423Z","2.33.3-fad6271-202608210754.0":"2026-08-21T07:55:52.528Z","2.33.3-e7505cc-202608210937.0":"2026-08-21T09:39:30.407Z","2.33.3-4732870-202608210951.0":"2026-08-21T09:53:34.413Z","2.33.3-4732870-202608211010.0":"2026-08-21T10:12:17.709Z","2.33.3-d3419bb-202608212006.0":"2026-08-21T20:07:58.460Z","2.33.3-4651521-202608241142.0":"2026-08-24T11:44:12.304Z","2.33.3-4651521-202608241432.0":"2026-08-24T14:33:44.064Z","2.33.3-4651521-202608241436.0":"2026-08-24T14:38:02.661Z","2.33.3-bee8391-202608241531.0":"2026-08-24T15:33:38.234Z","2.33.3-a2b3733-202608241612.0":"2026-08-24T16:14:17.571Z","2.33.3-09c9865-202608241616.0":"2026-08-24T16:18:39.707Z","2.33.3-d107b3c-202608241620.0":"2026-08-24T16:22:21.951Z","2.33.3-d31c028-202608241624.0":"2026-08-24T16:26:02.190Z","2.33.3-3847e98-202608241639.0":"2026-08-24T16:41:27.200Z","2.33.3-dd28007-202608241652.0":"2026-08-24T16:53:50.204Z","2.33.3-dd28007-202608241714.0":"2026-08-24T17:16:07.848Z","2.33.3-fbe55c1-202608241804.0":"2026-08-24T18:05:46.733Z","2.33.3-3081607-202608241908.0":"2026-08-24T19:09:57.889Z","2.33.3-0dbcac5-202608242041.0":"2026-08-24T20:43:24.125Z","2.33.3-5ea764e-202608251145.0":"2026-08-25T11:47:02.975Z","2.33.3-3e0e15a-202608251331.0":"2026-08-25T13:32:52.372Z","2.33.3-3e0e15a-202608251340.0":"2026-08-25T13:42:15.519Z","2.33.3-d86d79f-202608251438.0":"2026-08-25T14:39:47.714Z","2.33.3-d86d79f-202608251501.0":"2026-08-25T15:03:10.387Z","2.33.3-a60c108-202608251531.0":"2026-08-25T15:33:05.417Z","2.33.3-a60c108-202608251534.0":"2026-08-25T15:36:03.159Z","2.33.3-8ab2ddc-202608251903.0":"2026-08-25T19:05:19.969Z","2.33.3-8ab2ddc-202608251928.0":"2026-08-25T19:29:51.826Z","2.33.3-8ab2ddc-202608260744.0":"2026-08-26T07:46:23.374Z","2.33.3-41a10fd-202608260938.0":"2026-08-26T09:39:52.641Z","2.33.3-41a10fd-202608260954.0":"2026-08-26T09:56:15.905Z","2.33.3-dfb1ee9-202608261242.0":"2026-08-26T12:44:37.124Z","2.33.3-dfb1ee9-202608261257.0":"2026-08-26T12:59:06.041Z","2.33.3-f20b55b-202608261741.0":"2026-08-26T17:43:19.243Z","2.33.3-f20b55b-202608261811.0":"2026-08-26T18:13:13.201Z","2.33.3-7cb5e61-202608262127.0":"2026-08-26T21:29:25.612Z","2.33.3-a14a622-202608270843.0":"2026-08-27T08:44:50.737Z","2.33.3-6111c55-202608270915.0":"2026-08-27T09:16:45.415Z","2.33.3-2e8cc48-202608270955.0":"2026-08-27T09:56:47.525Z","2.33.3-492cb5f-202608271030.0":"2026-08-27T10:31:56.222Z","2.33.3-492cb5f-202608271036.0":"2026-08-27T10:38:10.104Z","2.33.3-492cb5f-202608271042.0":"2026-08-27T10:44:29.727Z","2.33.3-eef73bf-202608271115.0":"2026-08-27T11:17:21.085Z","2.33.3-5e0d33e-202608271212.0":"2026-08-27T12:14:09.463Z","2.33.3-c78beeb-202608271242.0":"2026-08-27T12:43:51.550Z","2.33.3-c78beeb-202608271311.0":"2026-08-27T13:13:07.758Z","2.33.3-c78beeb-202608271313.0":"2026-08-27T13:15:02.344Z","2.33.3-c78beeb-202608271316.0":"2026-08-27T13:18:09.122Z","2.33.3-c78beeb-202608271319.0":"2026-08-27T13:20:56.953Z","3.0.0":"2026-08-27T14:14:19.709Z","3.0.1-56b076e-202608271434.0":"2026-08-27T14:36:23.604Z","3.0.1-e2ef8df-202608281144.0":"2026-08-28T11:46:11.053Z","3.0.1-1289344-202608281312.0":"2026-08-28T13:14:18.653Z","3.0.1-ad3fc33-202608311501.0":"2026-08-31T15:03:28.972Z","3.0.1-ad3fc33-202608311519.0":"2026-08-31T15:21:19.122Z","3.0.1-f1d54fb-202608311813.0":"2026-08-31T18:14:43.092Z","3.0.1-f1d54fb-202608311836.0":"2026-08-31T18:38:07.905Z","3.0.1-43afc17-202609012022.0":"2026-09-01T20:24:45.526Z","3.0.1-43afc17-202609021019.0":"2026-09-02T10:20:53.366Z","3.0.1":"2026-09-02T10:47:54.360Z","3.0.2-2097e7b-202609021119.0":"2026-09-02T11:20:39.572Z","3.0.2-23a4cb6-202609021327.0":"2026-09-02T13:28:54.935Z","3.0.2-865573c-202609041309.0":"2026-09-04T13:22:30.256Z","3.0.2-865573c-202609041333.0":"2026-09-04T13:42:31.390Z","3.0.2-865573c-202609070550.0":"2026-09-07T05:57:02.858Z","3.0.2-ac9dc15-202609070827.0":"2026-09-07T08:36:20.793Z","3.0.2-4d85e86-202609071008.0":"2026-09-07T10:15:32.510Z","3.0.2-1ac5317-202609081426.0":"2026-09-08T14:35:14.676Z","3.0.2-2d870f8-202609090816.0":"2026-09-09T08:20:08.933Z","3.0.2-04f0078-202609090847.0":"2026-09-09T08:50:52.384Z","3.0.2-04f0078-202609090852.0":"2026-09-09T08:59:16.606Z","3.0.2-04f0078-202609090857.0":"2026-09-09T09:05:46.144Z","3.0.2":"2026-09-09T09:48:53.901Z","3.0.3-cbc2fff-202609090942.0":"2026-09-09T09:52:54.987Z","3.0.3-476b04c-202609091304.0":"2026-09-09T13:16:51.669Z","3.0.3-2c0e87d-202609091414.0":"2026-09-09T14:23:09.161Z","3.0.3-036aafe-202609101010.0":"2026-09-10T10:17:36.886Z","3.0.3-b87e500-202609101403.0":"2026-09-10T14:09:51.575Z","3.0.3-6afae7b-202609111143.0":"2026-09-11T11:54:41.990Z","3.0.3-c37ae18-202609111240.0":"2026-09-11T12:47:29.080Z","3.0.3-c37ae18-202609111301.0":"2026-09-11T13:09:36.607Z","3.0.3-2cc29db-202609111319.0":"2026-09-11T13:25:45.747Z","3.0.3-2cc29db-202609111339.0":"2026-09-11T13:46:19.922Z","3.0.3-2cc29db-202609111346.0":"2026-09-11T13:53:40.917Z","3.0.3-2cc29db-202609111352.0":"2026-09-11T14:03:44.610Z","3.0.3-48079db-202609140954.0":"2026-09-14T10:04:25.282Z","3.0.3-82e99ac-202609141007.0":"2026-09-14T10:15:27.573Z","3.0.3-82e99ac-202609141029.0":"2026-09-14T10:35:18.936Z","3.0.3-5843f23-202609141220.0":"2026-09-14T12:27:18.831Z","3.0.3-d668ffe-202609141235.0":"2026-09-14T12:42:49.200Z","3.0.3-d668ffe-202609141256.0":"2026-09-14T13:03:26.793Z","3.0.3-fe5b27d-202609141319.0":"2026-09-14T13:27:54.915Z","3.0.3-7cc5c99-202609141624.0":"2026-09-14T16:40:41.079Z","3.0.3-bb96f74-202609141723.0":"2026-09-14T17:31:30.994Z","3.0.3-223aa66-202609150914.0":"2026-09-15T09:21:31.559Z","3.0.3-799bea4-202609151031.0":"2026-09-15T10:40:00.674Z","3.0.3-b5c371b-202609151041.0":"2026-09-15T10:48:51.808Z","3.0.3-b5c371b-202609151116.0":"2026-09-15T11:22:22.859Z","3.0.3-3ea44d4-202609151244.0":"2026-09-15T12:52:37.964Z","3.0.3-aabc3c4-202609151346.0":"2026-09-15T14:05:09.134Z","3.0.3-4d1e317-202609151411.0":"2026-09-15T14:26:27.213Z","3.0.3-e3e986e-202609151839.0":"2026-09-15T18:47:36.170Z","3.0.3-f74313c-202609161038.0":"2026-09-16T10:45:33.858Z","3.0.3-5eff32c-202609161209.0":"2026-09-16T12:17:53.818Z","3.0.3-2fe8628-202609161237.0":"2026-09-16T12:45:10.897Z","3.0.3-1deddab-202609161419.0":"2026-09-16T14:27:07.540Z","3.0.3-07c6586-202609161505.0":"2026-09-16T15:13:16.705Z","3.0.3-d002b57-202609161701.0":"2026-09-16T17:09:22.222Z","3.0.3-cd214b5-202609161729.0":"2026-09-16T17:37:31.595Z","3.0.3-3ff4516-202609170900.0":"2026-09-17T09:08:17.742Z","3.0.3-6f31cf8-202609170909.0":"2026-09-17T09:16:10.931Z","3.0.3-6f31cf8-202609170920.0":"2026-09-17T09:28:47.065Z","3.0.3-6f93bc7-202609170952.0":"2026-09-17T10:01:56.783Z","3.0.3-6f93bc7-202609171013.0":"2026-09-17T10:21:26.705Z","3.0.3-500b2d4-202609171128.0":"2026-09-17T11:34:51.166Z","3.0.3-75ef6bd-202609171254.0":"2026-09-17T13:12:55.001Z","3.0.3-09a912b-202609171413.0":"2026-09-17T14:21:22.078Z","3.0.3-09a912b-202609171455.0":"2026-09-17T15:01:53.066Z","3.0.3-c6007cd-202609171700.0":"2026-09-17T17:08:03.112Z","3.0.3-addb6bf-202609180954.0":"2026-09-18T10:02:44.961Z","3.0.3-743ae9a-202609181233.0":"2026-09-18T12:40:14.863Z","3.0.3-8c3cc3f-202609181401.0":"2026-09-18T14:07:41.651Z","3.0.3-0f075c2-202609211320.0":"2026-09-21T13:27:33.668Z","3.0.3-50fed3a-202609211415.0":"2026-09-21T14:23:38.019Z","3.0.3-1aecd83-202609211608.0":"2026-09-21T16:16:18.508Z","3.0.3-bfd5583-202609211617.0":"2026-09-21T16:25:24.527Z","3.0.3-bfd5583-202609211631.0":"2026-09-21T16:37:48.496Z","3.0.3-54fb3fd-202609220911.0":"2026-09-22T09:18:36.319Z","3.0.3-06348f9-202609221011.0":"2026-09-22T10:22:04.576Z","3.0.3-1ab067a-202609221127.0":"2026-09-22T11:34:17.545Z","3.0.3-2bde8b0-202609221145.0":"2026-09-22T11:52:31.801Z","3.0.3-d885e10-202609221207.0":"2026-09-22T12:15:51.213Z","3.0.3-ac06b0a-202609221217.0":"2026-09-22T12:24:52.074Z","3.0.3-a8d0de5-202609221228.0":"2026-09-22T12:35:50.593Z","3.0.3-567f824-202609221405.0":"2026-09-22T14:13:28.107Z","3.0.3-567f824-202609221426.0":"2026-09-22T14:31:54.416Z","3.0.3-5174cc4-202609221539.0":"2026-09-22T15:47:22.661Z","3.0.3-5174cc4-202609221601.0":"2026-09-22T16:10:59.218Z","3.0.3-2fc92cc-202609221632.0":"2026-09-22T16:40:25.026Z","3.0.3-1ab83f5-202609230917.0":"2026-09-23T09:24:55.165Z","3.0.3-ecbeb88-202609231030.0":"2026-09-23T10:38:43.265Z","3.0.3-641109d-202609231039.0":"2026-09-23T10:47:28.500Z","3.0.3-f8a701f-202609231051.0":"2026-09-23T10:57:53.809Z","3.0.3-f8a701f-202609231112.0":"2026-09-23T11:19:31.719Z","3.0.3-50b1b4c-202609231441.0":"2026-09-23T14:51:05.515Z","3.0.3-203f798-202609231453.0":"2026-09-23T15:00:52.826Z","3.0.3-c4d8346-202609231537.0":"2026-09-23T15:46:00.458Z","3.0.3-c4d8346-202609231602.0":"2026-09-23T16:11:00.704Z","3.0.3-8d7130f-202609241116.0":"2026-09-24T11:24:07.481Z","3.0.3-8d7130f-202609241326.0":"2026-09-24T13:34:19.382Z","3.1.0":"2026-09-24T14:29:42.174Z","3.1.1-9604dd2-202609241444.0":"2026-09-24T14:53:03.582Z","3.1.1-cdf2592-202609250845.0":"2026-09-25T08:54:35.134Z","3.1.1-a979a67-202609250855.0":"2026-09-25T09:04:23.650Z","3.1.1-a979a67-202609250908.0":"2026-09-25T09:17:03.505Z","3.1.1-88d18bf-202609251540.0":"2026-09-25T15:49:32.327Z","3.1.1-d271eb9-202609280942.0":"2026-09-28T09:53:10.053Z","3.1.1-49de67d-202609281000.0":"2026-09-28T10:09:10.441Z","3.1.1-e0a9a07-202609281349.0":"2026-09-28T14:01:53.958Z","3.1.1-e0a9a07-202609281410.0":"2026-09-28T14:19:45.616Z","3.1.1-86a3156-202609290845.0":"2026-09-29T08:54:56.325Z","3.1.1-86a3156-202609290855.0":"2026-09-29T09:02:51.968Z","3.1.1-d1e982e-202609290919.0":"2026-09-29T09:28:16.470Z","3.1.1-daa2133-202609290934.0":"2026-09-29T09:45:21.643Z","3.1.1-daa2133-202609290956.0":"2026-09-29T10:04:49.956Z","3.1.1-d8f0a7f-202609291053.0":"2026-09-29T10:59:31.830Z","3.1.1-74e747e-202609291118.0":"2026-09-29T11:27:24.010Z","3.1.1-e1023c6-202609291537.0":"2026-09-29T15:45:32.198Z","3.1.1-f1013c3-202609301309.0":"2026-09-30T13:44:35.364Z","3.1.1-b6f6140-202609301455.0":"2026-09-30T15:02:58.052Z","3.1.1-881ef46-202609301540.0":"2026-09-30T15:47:51.352Z","3.1.1-785980c-202609301703.0":"2026-09-30T17:30:13.015Z","3.1.1-56660e3-202609301804.0":"2026-09-30T18:12:46.368Z","3.1.1-227f864-202610010844.0":"2026-10-01T08:49:58.831Z","3.1.1-d097c27-202610011520.0":"2026-10-01T15:34:45.417Z","3.1.1-4184afe-202610011550.0":"2026-10-01T16:19:07.446Z","3.1.1-b814073-202610011627.0":"2026-10-01T16:43:53.987Z","3.1.1-e73a9b4-202610011826.0":"2026-10-01T18:33:33.571Z","3.1.1-b91e4c1-202610020928.0":"2026-10-02T09:35:15.308Z","3.1.1-b91e4c1-202610020950.0":"2026-10-02T09:56:29.949Z","3.1.1-b91e4c1-202610021255.0":"2026-10-02T13:01:34.743Z","3.1.1-04c5fb5-202610021321.0":"2026-10-02T13:32:18.088Z","3.1.1-9a87dd4-202610021338.0":"2026-10-02T13:46:39.572Z","3.1.1-871bda3-202610021348.0":"2026-10-02T13:54:55.128Z","3.1.1-871bda3-202610021406.0":"2026-10-02T14:12:54.573Z","3.1.1-87c22ae-202610021448.0":"2026-10-02T14:56:01.269Z","3.1.1-4c68fca-202610022019.0":"2026-10-02T20:25:38.541Z"},"bugs":{"url":"https://github.com/FlowFuse/flowfuse/issues"},"author":{"name":"FlowFuse Inc."},"license":"SEE LICENSE IN ./LICENSE","homepage":"https://flowfuse.com","keywords":["low-code-platform","low-code-development","low-code-development-platform","visual-programming","flow-based-programming","no-code","low-code","node-red"],"repository":{"url":"git+https://github.com/FlowFuse/flowfuse.git","type":"git"},"description":"An open source low-code development platform","maintainers":[{"name":"hardillb","email":"hardillb@gmail.com"},{"name":"knolleary","email":"nick.oleary@gmail.com"},{"name":"flowfuse-user","email":"nick@flowfuse.com"}],"readme":"","readmeFilename":""}